3月25日に行われた「GREE Tech Talk #07」に行ってきました。 今回はそのレポートをブログに書いていきたいと思います。 GREE Tech Talk #07
Live2Dの描画の裏側の話 - 阿曽 直貴(Live2D)
Live2D
イラストをそのまま動かす技術。 スマホアプリ以外にも、映像制作・アートなど色々な用途で利用をされている。
3Dとの違い
- 描画は早いが、メモリ消費量が多め
- 頂点の形状変化が常にある
- 半透明の合成が必要
- メッシュを利用してのリアルタイムマッピング
- テクスチャ(元画像)のクオリティが必要
ネイテイブプラグインによる高速化
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のモデルを表示することができたが、ドローコールが多かった。(パーツが多いため)。
スクリプトから動かす場合は、自分で画像をまとめないといけない。複数のメッシュをまとめることができす。 そこでMesh.CombineMeshesを利用。 Mesh.CombineMeshes - Scripting API:
パフォーマンスのためにTips
テクスチャアトラス(Unityのため)に対応をする予定。 ガベージコレクションの最適化 メッシュの頂点配列をキャッシュしておくことで、メモリーの消費を抑える。 Array.Reverseが遅い。 プロファイラーに頼らない
Live2Dの今後
360度対応のモノを開発中みたいです。
開発スピードとパフォーマンスの両立 - 稲森 亮介(Gree)
現在、Unityでカジュアルゲームを作成している。 2名体制。
FrameRate(フレームレート) 基本60FPSで、最低でも30FPSを出したい。
パフォーマンスの基本
Object.Instantiate()を減らす。 newをできるだけ使わずにガベージコレクションを減らす。
雲で躓く
基本半透明。 最初はoverdrawが多すぎて処理が重たかった。パーティクルシステムで実装していた。
パーティクルのスプライトを大きくして、ドローコール減らす。 遠い部分に関してはスプライトを利用する。
地表が一緒に映っている場合はさらに工夫が必要。 雲のスプライトにグラデーションをかけて揺らした。
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に気を配る。
GPU
XcodeのInstrumentsやGPU Profilerを使って調べる。 原因として、TilerよりRendererの方が多い。
結論
おまけ
最後に
Unity以外にも使える知識や考え方を勉強出来ました。 CPUやGPUに関しては、余りわかっていない部分だったので、一体どういったことをしているのかなどがよくわかりました。 とは言え、わからないことが多かったので、今回のセミナーの内容を復習して、実践して利用できるようにしたいです。
エンジニアのためのUnity実践リファレンス ~ ゲーム開発にすぐに役立つスクリプト入門 赤坂 玲音 技術評論社 2015-04-10 売り上げランキング : 118735 Amazonで詳しく見る |