人気のプラグインの紹介（アセット編）

##Mesh Baker
多くの場合、プロジェクトの開発中にMeshを大量に使用するため、Draw Callが高すぎます。 Mesh Bakerはグリッドベイカーの役割を果たします。グリッドロースターは、Meshとマテリアルを組み合わせて、Draw Callsのレンダリングを減らすことできます。

**以下では、使用方法について説明しましょう。**

---
###Texture Packing
キャラクターMeshは似ているが、テクスチャは扱いにくいという状況にしばしば遭遇します。 この時点で、同じ画像のテクスチャをバッチ処理する必要があります。 テクスチャのバッチ処理操作パネルは次のとおりです。異なるMeshを選択してバッチ処理し、Texture Bakerはシェーダー、サイズ、およびその他の属性を自動的に分析し、最後にBake Material Into Combined Materialをクリックしてバッチ処理を完了します。
![１.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/b19b7453-63f5-4005-13b9-e1c6cfffc5e8.jpeg)

###Mesh Batching
テクスチャがバッチ処理された後、画像に形成されますが、この時点でMeshの組み合わせを作成する必要があります。つまり、Mesh Bakerを使用してグリッドをBake処理します。 ここで、新しいGame Objectを作成し、Bakeをクリックしてオブジェクトの3 Meshをベイクします。
![２.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/e939216f-53fd-a8df-41b9-d8190bce9c1e.jpeg)
同時に、これらの2つのステップの後、Draw Callの変更が見つかります。

**バッチ処理前：**
![３.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/ead081c8-435c-3e82-4afc-57ac6f4ff615.jpeg)

**バッチ処理後：**
![４.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/aa09bca8-1769-b899-c26d-76760554f556.jpeg)

最初の12個のDraw Callがバッチ処理され、2つだけがバッチ処理されることを発見するのは難しくありません。これにより、レンダリングの負荷がある程度軽減されます。

###Skinned　Meshのバッチ処理
Unityエンジンは、Skinned　MeshのDraw Call Batchingをネイティブでサポートしていませんが、Mesh Bakerは複数のSkinnedMeshをバッチ処理できます。
![５.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/5eb2115d-7cad-78ab-db98-abb3777aaaae.jpeg)
![６.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/534ab857-518b-892c-7675-c0dfdb29db76.jpeg)
バッチ処理後、キャラクターはすでに同じ素材であるため、上記の画像では、これらのキャラクターはドローコールのみを生成することがわかります。同様に、さらに文字を追加しても、それらをごく少数のDraw Callにバッチ処理して、レンダリング時間を短縮できます。

さらに、Mesh BakerはMesh RendererとSkinned Mesh Rendererもサポートしています。たとえば、帽子や剣などの開発で一般的に使用される道具は、キャラクターが変更された場合にのみDraw Callを生成します。これは非常に実用的です。

**skinnedmeshを使用する場合、いくつかの注意事項があります。**
>バッチ処理後、オリジナルモデルのBoneはActiveのままになります。
オリジナルモデルのSkinned Mesh Rendererを無効にします。
オリジナルAnimationが常に実行されていることを確認してください。
Mesh RenderingをSkinned Meshとバッチ処理する必要がある場合、同じTexture AtlasとMeshコンテナ内にあることが保証される必要があります。

---
##SimpleLOD
Mesh Bakerに加えて、別のプラグインであるSimpleLODも、大規模なシーンの制作と開発に適しています。複数の人が参加するオンラインプロジェクト（MMOゲームなど）を扱う場合、以前の最適化方法では、Draw Callを減らし、レンダリングの消費をできる限り減らし、距離で低レベルのLODを使用し、ランタイムでカメラの距離に応じて適切なLODを切り替えます。携帯電話のパフォーマンスが制限されている場合に、より多くのキャラクターをレンダリングして、より良い結果を達成することができます。

SimpleLODはこの点に対応でき、Mesh BakerのMesh mergeとAtlasベイグに加えて、Meshの単純化（Mesh Bakerでは使用不可）を提供し、ダイナミックスキンメッシュで適切に動作することをサポートされています。 プラグインはRun-timeとEditorの両方で使用でき、ソースコードはオープンしていますが、プロジェクトの実際の状況に応じて変更できます。
![７.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/1adf4524-7cc8-355e-e287-8fb4759ef79e.jpeg)
例として、次のオリジナルモデルを見てみましょう：
![８.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/183076e9-3964-3bbb-7150-1ead535a410f.jpeg)

###バッチ処理モデル
プラグインを開いた後、いくつかのオプションがあります：Merge child meshesをクリックします。
![９.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/89498c3d-2394-dab5-2c73-c2c31a235bf4.jpeg)
Unityがサポートするメッシュの頂点の数は65,536を超えることはできませんが、多くのオブジェクトを単一のメッシュに結合するとこの制限を超える可能性があります。 そして、このプラグインはこの状況を自動的に処理します。下図の2台の車がMerge into Merged part1とMerged part2にあります。
![１０.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/8cdd7e80-b50d-5725-909c-e8c849bb0b7d.jpeg)
###ベーキングアトラス
次の図はテクスチャパッキングです。モデルのマテリアルに応じて、さまざまなタイプのテクスチャが自動的に表示されます。バッチ処理すると、同じタイプのテクスチャが自動的にバッチ処理されます。
![１１.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/3b5c994c-3d94-fa64-770c-9738f9a711cb.jpeg)
バッチ処理後の効果の比較：Draw Callの数は136から24に減少しました。
![１２.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/21aa488c-c4c5-da47-b363-f0070d8037b3.jpeg)
###モデルの簡易化
モデルを選択したら、Simplify meshをクリックします。これにより、Meshは可能な限り簡易化されますが、そのまま残ります。 次の図に示すように、車のモデルのメッシュ面の数は、60,000を超える頂点から27,000に減少しました。
![１３.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/d98a0d91-8ca2-68fd-6d19-338d67dda0af.jpeg)
![１４.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/de4ff938-b78c-a097-6ee0-cca39c8bd969.jpeg)
同時に、異なるレベルのLODを自動的に生成できます。 LODには6つの層（大きいものから小さいものまで）があり、Bake LODをクリックすると自動的に計算され、手動で操作する必要はありません。 スクリプトを変更することで、目的の効果を実現できます。
![１５.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/01fb1788-5f5f-eca7-3ba7-1fa684b0be11.jpeg)
![１６.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/d2f3a9db-8b9d-9715-8e72-23f320e6bfdc.jpeg)
SimpleLODを使用した後の効果は次の通りです。 プラグインの最大の機能は、Skinned meshアニメーションキャラクターグリッドを強力にサポートすることです。
![１７.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/42f23999-bdd5-d6f5-a9aa-f3db3af627a2.jpeg)
![１８.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/382cddc4-e705-4e45-3434-420b32672879.jpeg)

---
UWA Technologyは、モバイル/VRなど様々なゲーム開発者向け、**パフォーマンス分析**と**最適化ソリューション**及び**コンサルティングサービス**を提供している会社でございます。

UWA公式サイト：https://jp.uwa4d.com
UWA公式ブログ：https://blog.jp.uwa4d.com