BLOG ブログ

2019-06-21

UnrealEngine4のマテリアルでの風揺れ表現方法

UnrealEngine4のマテリアルでの風揺れ表現方法

こんにちは。本年度からブログ更新メンバーになりましたデザイナーFです。

今回は表題のように、UnrealEngine4(以下UE4)上で植物などのオブジェクトが風に揺れるアニメーションを、マテリアルの機能を使って表現する手法をご紹介したいと思います。

私がUE4に触れるまでは、植物を揺らす方法と言えばキャラクターモデルのように骨を入れるか、ブレンドシェイプ(モーフィング)を使用するぐらいしか知りませんでしたが、UE4では簡単な風揺れであればマテリアルだけで付けることが可能で、これを知ったときは軽くカルチャーショックを受けました。

今回はUE4に標準搭載されているスターターコンテンツに入っている植物モデルを使用します。
スターターコンテンツは新規プロジェクト作成時に「スターターコンテンツ有り」を選択しておけばアセットに追加されます。

マテリアルはこの植物モデルに使用されているものを風揺れ用に改造したいと思います。
マテリアルのアイコンをダブルクリックして編集画面に入ると、カラーとノーマルのテクスチャノードが接続されたシンプルなマテリアルが表示されます。

風揺れにはマテリアルノードの「ワールドポジションオフセット」を使用します。
ここに今回の風揺れのキモとなる「SimpleGrassWind」ノードを接続します。
まず「SimpleGrassWind」を出すには、何もないところで右クリックすると出てくるノード作成メニューの一番上に「simple」まで入力すると、リストの中ほどに「SimpleGrassWind」がハイライトされた状態で表示されるので、そこをクリックまたはEnterキーを押すとノードが作成されます。

そして下の画像のように接続します。
左側につながっている数字のノードはパラメータ入力用です。
上の2つは「1」キーを押しながら何もないところを左クリック、一番下は「3」キーで作成できます。

各パラメータの役割については以下の通りです。
・WindIntensity (S):風の強さ。
・WindWeight (S):風を受けるウェイト。頂点カラーや頂点位置情報を接続することで揺れの影響を受ける部分を制限することができます。
・WindSpeed (S):風の速さ。
・AdditionalWPO (V3):テクスチャや関数を接続することで揺れ方を追加できたりします。

詳しくは公式ドキュメントをご参照ください。 https://docs.unrealengine.com/ja/Engine/Rendering/Materials/Functions/Reference/WorldPositionOffset/index.html

ノードを接続しただけでは反映されないので、ツールバーの「適用」をクリックしてマテリアルの更新を行います。

するとこのように植物が揺れるようになります!

今回は機能紹介ということで一番シンプルな方法を使いましたが、マテリアルの工夫次第ではもっとリアリティのある動きを付けられるようになりますので、次の機会にでもご紹介できればと思います。

トリサンをもっと知る