【UE4】BPで気合のProcedural Modering
はじめに
Unreal Engine 4 (UE4) Advent Calendar 2017 の2日目です。
今回の内容はあまりオススメできませんが、気になったのでやってみた次第です。
先に参考図書である「Unity Graphics Programming」のリンクを貼っておきます。これをUE4に移植してみた、という内容です。 この本、割りとTwitterで話題になっており、初めて買えるタイミングであった技術書典3に僕も出展してたんですがなんとお隣のブースでした()
実際のサンプルコードはこちらに。
まあこのまま移植しても多々ミスって思うように表示されなかったり、ちょっと手を加えないといけない箇所もあったりして 割りと大変でした。はい。
Procedural Moderingとは
通常のモデリングはDCCツールと呼ばれる Maya, 3ds MAX, Blenderなどを用いて作成することが多いです。 それとは別に計算だけでモデリングすることです。参考図書には
ルールを記述し、自動化された一連の処理の結果、形を得るアプローチのこと
とされています。
応用例としては AirtoneのコレもProcedural Moderingしてマテリアルで演出しているそうです。
https://youtu.be/qssKpo8cHYwより
始める前に
さがしてみると、もんしょさんが先にやっていました。さすが!
もんしょの巣穴blog [UE4] ProceduralMeshComponentを使ってみる
さすがに複雑な計算をBPでやるのは骨が折れるので、ProceduralMeshComponent を使う場合はC++の方がいいと思います。
はい。のでこれをBPでやりました。すると代わりにたすさんの骨が折れました。
折れてるけどたいしたずれじゃないのでしゅじゅちゅなしでいけるとのことです
— たす (@tassjp02) 2017年10月31日
みなさまお気をつけてといいたいところだけど
ほんと酒も入ってないし何もないところで突然一人でこけたので、もはや強制イベントがここにあったくらいの勢いなのでみなさま強制イベントにはお気をつけて……
できたもの
先に完成イメージを見ておきましょう。よっしゃーできた!!と思っても知らない人には正直大したことないものなので 心が強い方が取り組むことをオススメします。
多少見栄えするようにTimelineでしゅるしゅる動かしたりしてますが、特に意味はありません。
こんな感じで頂点があります。
作ってみる
こちらに今回作ったアセットをサンプルとして置いておきます。 詳細な考え方は参考図書を読んで下さい。
とりあえずBaseクラスを作っておきました。BP_ProdeduralMeshBaseとしています。
Debug用にちょっと関数を用意してありますが、あまり頂点数が多いとUE4ごと死にます。気をつけましょう。
基本的にはこのDraw MeshをOverrideして使う感じです。
では板ポリを出して見ましょうか。継承したBP_QuadでDrawMeshをOverrideします。
するとこんなかんじ
わーい!これくらいならお手軽ですね。UVも設定してあげるとチェッカーの模様が出ます。 失敗してる / 設定してないと消えます。
同様にNormal, Tangentも設定できます。
移植時の注意点
だれもやらないとは思いますが、一応。参考図書がUnityなので、座標系、単位が違います。 またいくつかのindexに注意が必要です。(i >= length と i > length とか)
コードを何度も見直しても、間違ってる箇所が見つからない場合は、自分が見落としている可能性があるので 何日か空けて見直すしかありません。それでも思うように出来ない場合は手探りで調査します。(木の後半は手探りでした)
便利ポイント
Procedural Mesh Componentで生成したMeshはStatic Mesh化できます。
ここからCreate Mesh して保存すると、
とアセット化できます。
おわりに
最近どういうわけかUnityとUE4を同時に起動する時間が長くなり、謎の移植芸を身に着けてしまったようです。 動的にモデルを生成したい、モデルアセットはプロジェクトに入れたくない、BPしか使いたくないけどProcedural Moderingはしたい、などといった 特殊な人向けの内容になってしまいました。 最初のPlaneやQuadレベルだとやる意味をあまり感じませんが、木とかできると途端にすげぇ感がでますね(間に合ってよかった)。たぶんSpeedTreeを使ったほうが速い気がしました。
宣伝
UE4の動画教材(日本語)がこれからどんどんUdemyに出てきそうです。 僕のが一番最初に出たライトな感じのやつなので、興味があれば覗いてみてください。 こちらはちゃんと役に立つ系のものです()
ちょうどこの記事を公開する1時間くらいにalweiさんのが公開されたようです。
それとこの動画教材を作ったお話を 第2回UE4何でも勉強会 in 東京 にてLTするのでよければぜひぜひ。