Rendering/MeshRenderer

Last-modified: 2024-11-01 (金) 14:58:52


MeshRenderer(メッシュ レンダラー)

静的又は手続型メッシュを描画する為のコンポーネント


項目

Enabled:
このコンポーネントを有効にするかどうか。

Mesh:
描画するMesh。
StaticMesh又はProcedural Meshesが入ります。

Materials(list):
Add押すと増える。
Meshに適用するMaterialのリスト。

MaterialPropertyBlocks(list):
Add押すと増える。
Material Property Blocksのリスト。
同じマテリアルでも、別のテクスチャを表示できる。

ShadowCastMode:
影の設定。
初期設定はOn。
0Off影を落とさない。
1On影を落とす。
2ShadowOnly影のみを落とす。元の姿は描画されない。
3DubleSided両面の影を落とす。
影が必要ない場合は、影をOffにしましょう。
半透明マテリアルの場合は、描画負荷が高くなるので影をOffにする事をお勧めします。
また、頂点数の多い3Dモデルを使用する場合は影をOFFにし、代わりにローポリモデルを用意して、こちらを影のみにすることで影の描画負荷を減らすことができます。

MotionVectorMode:
モーションブラー(ぶれ)の設定。
初期設定はObject。
0Cameraカメラ(視点)側は動くけど、オブジェクト側は動かない場合。
1Objectカメラ(視点)側もオブジェクト側も動く場合。
2NoMotionどちらも動かない場合。
建物や地面等の動かない物は、Cameraにしましょう。
全てNoMotionにすると、VRで見た時に変な残像(モヤモヤ)が見えてしまいます。適切に使い分けましょう。

SortingOrder:
表示する順番。
同じ設定の半透明マテリアル等を使用するメッシュが複数個重なる場合、どちらが手前に表示されるか設定できます。
また、マテリアルのRenderQueue設定等の影響で、半透明UI越しだと透けてしまう場合は、-32001にする事で回避できます。(ただし、今度はFog等と干渉するかも。)

SplitSubmeshes()
FluxのMethod Proxyノード又はButtonActionTriggerコンポーネントを使用して、サブメッシュに分割する。
マテリアルが複数ある場合は、サブメッシュが分割されて子スロットに展開されます。
例えば窓の場合、窓枠と窓ガラスが別々のマテリアルであれば、窓枠と窓ガラスのメッシュに分割できます。
Box等のプロシージャルメッシュの場合、StaticMeshに自動変換されるのでご注意。
サブメッシュない場合でも、1個に分割されます。
処理が実行される度に、MeshのアセットIDが変更されます。

MergeByMaterial()
〃、同じMaterialを結合する。
同じIDのマテリアルを参照するサブメッシュ同士が結合します。
マテリアルはなるべく少ない方が良いので、同じ質感のマテリアルであれば、結合して減らしちゃいましょう。
Box等のプロシージャルメッシュの場合、StaticMeshに自動変換されるのでご注意。
処理が実行される度に、MeshのアセットIDが変更されます。

マテリアルでメッシュを分ける
押すと、サブメッシュに分割する。
同上。

同じマテリアル同士で結合
押すと、同じMaterialを結合する。
同上。


使用例

  • 適当なスロットにアタッチして、MeshとMaterialを指定する。


その他

  • 最適化メモ
    • Meshアセットはなるべく使いまわす。1Meshあたり、6万頂点以下にする事。(より少ない方が良い。)
    • Materialアセットは徹底的に使いまわす。とにかくMaterialの数は少ない方が良い。
    • 一纏めにしても、Material1個毎に描画負荷が発生する。
      でも、バウンディングボックスの計算は1回になるから、バウンディング計算の回数は減らせる。
    • MaterialPropertyBlocksを使えば、同じMaterialに別々のテクスチャを使える。
    • 頂点数の多い3Dモデルや半透明マテリアルを使用する場合は、影をOffにする。
    • 地面やガラス窓など、そもそも影が必要ない物は影をOffにする。
    • MotionVectorModeは原則Cameraにする。動く物や動かせるものはObjectにする。
    • なるべく同じMeshRenderer(同じMeshとMaterialの組合せ)を使いまわす。
    • LODGroupを活用する。