LoginSignup
0
0

More than 3 years have passed since last update.

人気のプラグインの紹介(アセット編)

Posted at

Mesh Baker

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

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


Texture Packing

キャラクターMeshは似ているが、テクスチャは扱いにくいという状況にしばしば遭遇します。 この時点で、同じ画像のテクスチャをバッチ処理する必要があります。 テクスチャのバッチ処理操作パネルは次のとおりです。異なるMeshを選択してバッチ処理し、Texture Bakerはシェーダー、サイズ、およびその他の属性を自動的に分析し、最後にBake Material Into Combined Materialをクリックしてバッチ処理を完了します。
1.jpg

Mesh Batching

テクスチャがバッチ処理された後、画像に形成されますが、この時点でMeshの組み合わせを作成する必要があります。つまり、Mesh Bakerを使用してグリッドをBake処理します。 ここで、新しいGame Objectを作成し、Bakeをクリックしてオブジェクトの3 Meshをベイクします。
2.jpg
同時に、これらの2つのステップの後、Draw Callの変更が見つかります。

バッチ処理前:
3.jpg

バッチ処理後:
4.jpg

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

Skinned Meshのバッチ処理

Unityエンジンは、Skinned MeshのDraw Call Batchingをネイティブでサポートしていませんが、Mesh Bakerは複数のSkinnedMeshをバッチ処理できます。
5.jpg
6.jpg
バッチ処理後、キャラクターはすでに同じ素材であるため、上記の画像では、これらのキャラクターはドローコールのみを生成することがわかります。同様に、さらに文字を追加しても、それらをごく少数の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の両方で使用でき、ソースコードはオープンしていますが、プロジェクトの実際の状況に応じて変更できます。
7.jpg
例として、次のオリジナルモデルを見てみましょう:
8.jpg

バッチ処理モデル

プラグインを開いた後、いくつかのオプションがあります:Merge child meshesをクリックします。
9.jpg
Unityがサポートするメッシュの頂点の数は65,536を超えることはできませんが、多くのオブジェクトを単一のメッシュに結合するとこの制限を超える可能性があります。 そして、このプラグインはこの状況を自動的に処理します。下図の2台の車がMerge into Merged part1とMerged part2にあります。
10.jpg

ベーキングアトラス

次の図はテクスチャパッキングです。モデルのマテリアルに応じて、さまざまなタイプのテクスチャが自動的に表示されます。バッチ処理すると、同じタイプのテクスチャが自動的にバッチ処理されます。
11.jpg
バッチ処理後の効果の比較:Draw Callの数は136から24に減少しました。
12.jpg

モデルの簡易化

モデルを選択したら、Simplify meshをクリックします。これにより、Meshは可能な限り簡易化されますが、そのまま残ります。 次の図に示すように、車のモデルのメッシュ面の数は、60,000を超える頂点から27,000に減少しました。
13.jpg
14.jpg
同時に、異なるレベルのLODを自動的に生成できます。 LODには6つの層(大きいものから小さいものまで)があり、Bake LODをクリックすると自動的に計算され、手動で操作する必要はありません。 スクリプトを変更することで、目的の効果を実現できます。
15.jpg
16.jpg
SimpleLODを使用した後の効果は次の通りです。 プラグインの最大の機能は、Skinned meshアニメーションキャラクターグリッドを強力にサポートすることです。
17.jpg
18.jpg


UWA Technologyは、モバイル/VRなど様々なゲーム開発者向け、パフォーマンス分析最適化ソリューション及びコンサルティングサービスを提供している会社でございます。

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0