【レポート】「GREE Tech Talk #07」に行ってきました。

3月25日に行われた「GREE Tech Talk #07」に行ってきました。 今回はそのレポートをブログに書いていきたいと思います。 GREE Tech Talk #07

Live2Dの描画の裏側の話 - 阿曽 直貴(Live2D)

Live2D
...

Live2D

イラストをそのまま動かす技術。 スマホアプリ以外にも、映像制作・アートなど色々な用途で利用をされている。

2015-3-28-fdsfssaf

3Dとの違い

  • 描画は早いが、メモリ消費量が多め
  • 頂点の形状変化が常にある
  • 半透明の合成が必要
  • メッシュを利用してのリアルタイムマッピング
  • テクスチャ(元画像)のクオリティが必要
2015-3-28-fdsssa

ネイテイブプラグインによる高速化

Unity3.5時代の話。 ネイテイブプラグインを使えば、過去の遺産を使うことができる。 デバックがしづらい。 情報がないなかで作ったが、高速で動くようになったが、メンテナンスが大変でUnityの進化についていけなかった。

スクリプトから高速にメッシュを描画する

Graphics.DrawMeshが使えそう。 -> 非推奨 Graphics.DrawMesh - Scripting API:

なので、Graphics.DrawMeshNowを使うことに。 Graphics.DrawMeshNow - Scripting API:

これをOnPostRender()で呼ぶ。 [c] public Mesh mesh; public Material mat; public void OnPostRender() { // set first shader pass of the material mat.SetPass(0); // draw mesh at the origin Graphics.DrawMeshNow(mesh, Vector3.zero, Quaternion.identity); }

[/c]

Live2Dのモデルを表示することができたが、ドローコールが多かった。(パーツが多いため)。

2015-3-28-fdsfssaf

スクリプトから動かす場合は、自分で画像をまとめないといけない。複数のメッシュをまとめることができす。 そこでMesh.CombineMeshesを利用。 Mesh.CombineMeshes - Scripting API:

パフォーマンスのためにTips

テクスチャアトラス(Unityのため)に対応をする予定。 ガベージコレクションの最適化 メッシュの頂点配列をキャッシュしておくことで、メモリーの消費を抑える。 Array.Reverseが遅い。 プロファイラーに頼らない

2015-3-28-fdsas

Live2Dの今後

360度対応のモノを開発中みたいです。

2015-3-28-fdsas

開発スピードとパフォーマンスの両立 - 稲森 亮介(Gree)

現在、Unityでカジュアルゲームを作成している。 2名体制。

2015-3-26-kfkkoko.JPG

FrameRate(フレームレート) 基本60FPSで、最低でも30FPSを出したい。

2015-3-26-kkkoko.JPG

パフォーマンスの基本

Object.Instantiate()を減らす。 newをできるだけ使わずにガベージコレクションを減らす。

2015-3-26-kfkkofko.JPG

雲で躓く

基本半透明。 最初はoverdrawが多すぎて処理が重たかった。パーティクルシステムで実装していた。

パーティクルのスプライトを大きくして、ドローコール減らす。 遠い部分に関してはスプライトを利用する。

地表が一緒に映っている場合はさらに工夫が必要。 雲のスプライトにグラデーションをかけて揺らした。

2015-3-26-kfkfkoko.JPG.JPG

Lightning

AssetStoreを活用。 Fogを使って夜っぽい感じを表現。 ライトマップテクスチャの解像度を下げる。1024px -> 512px -> 256px。 敵キャラクターは頂点ライディングのみ。 Light Probesは使わない。

Script

cachedTransform > Transform > GetComponent(Transform) GetComponent(Transform) > Find > Raycase FindObjectsOfType()は重い。

ドローコール - 大前 広樹(Unity)

パフォーマンスとは「CPU」「GPU」の使用量を改善すること。

ドローコールとは

描画処理のCPU側の処理。 OpenGLだとglDrawElementが該当。

Unity5での最適化

SetPathCallに気を配る。

2014-3-28-fdsfa

GPU

XcodeInstrumentsGPU Profilerを使って調べる。 原因として、TilerよりRendererの方が多い。

2014-3-28-fdsfafff
GPU Profiler
2015-3-28-dasasadas

結論

2014-3-28-fdsa

おまけ

2015-3-28-ddasasadas

最後に

Unity以外にも使える知識や考え方を勉強出来ました。 CPUやGPUに関しては、余りわかっていない部分だったので、一体どういったことをしているのかなどがよくわかりました。 とは言え、わからないことが多かったので、今回のセミナーの内容を復習して、実践して利用できるようにしたいです。

エンジニアのためのUnity実践リファレンス ~ ゲーム開発にすぐに役立つスクリプト入門エンジニアのためのUnity実践リファレンス ~ ゲーム開発にすぐに役立つスクリプト入門
赤坂 玲音

技術評論社 2015-04-10
売り上げランキング : 118735

Amazonで詳しく見る