BPでメッシュ作成(プロシージャルメッシュ)
概要:アクタにProcedualMeshコンポーネントを追加し、BPで配列でメッシュデータを用意して、CreateMeshSection。作成されたメッシュはStaticMeshとして保存もできる。
以下詳細
手順
1) アクタにProcedualMeshコンポーネントを追加する
2) メッシュを定義するデータを用意する
3) ConstructionScriptでCreateMeshSectionノードを実行する
CreateMeshSectionノードに渡すメッシュデータの仕様
Vertices | 座標値の配列。すべての頂点を書いておく。先頭が0番の頂点。セクションごとに0番からになる。 |
Triangles | 整数値の配列。頂点の番号3つ1組で三角形を定義する。順番で面の向きが変わる。 |
UV0 | カラー値の配列。対応する頂点のUV値。UV0の先頭の値はVerticesの先頭の頂点に対応する。 |
セクションindex
セクションindexを変えると別のメッシュとしてあつかわれる。
すでに作成されたメッシュと同じセクションindexでCreateMeshSectionをやり直すとメッシュを書き換えることができる。
マテリアルのセットはセクションindex毎に行う必要がある。
作成したメッシュはスタティックメッシュのアセットとして保存できる
ProcedualMeshを作成するアクタをレベル上に配置してメッシュ作成を実行した状態で、そのアクタのProcedualMeshコンポーネントを選択すると、詳細に"Create StaticMesh"ボタンが表示されるのでこれを実行するとスタティックメッシュのアセットとして保存できる。
ProcedualMeshは作成も遅く、メモリを大きく消費し、配置したレベルの保存にも時間がかかるので複雑な物はスタティックメッシュ化すると効率的に利用できるようになる。
例)13万tri.のメッシュ作成の場合
ProcedualMeshだと
作成:6秒
配置したレベルの保存:18秒
umapサイズ:100MB
これをスタティックメッシュ化すると
保存はすぐ終わり、umapのファイルサイズは0.6MB
と劇的に改善できた。