Unreal Engineに限らず、ゲームや動画にする際は草木が揺れていると風でなびいている感じが出て雰囲気がグッと出てきますよね。
実はこれはアセットをアニメーションで動かしているのではなく、マテリアルのシェーダーを使って動いて見えています。
今回はマテリアルのシェーダーで草木の揺らし方について紹介します。
ワールド位置オフセット
アセットを用意する
自分が作ったものでも、フリーでダウンロードしたアセットでもいいので草木を用意します。
今回はQuixel Megascansからダウンロードしてきた草のデータを使っています。
Quixel Megascansは、3Dスキャンで作成されて高品質でリアルなテクスチャ、3Dモデル、素材などを提供するオンラインライブラリです。
Unreal Engineでは無料で使用することができます。詳しくは後日掲載しようと思います。
マテリアルを設定する
マテリアルをWクリックしてウィンドウを開きます。
使われているのがマテリアルインスタンスなので、基となるマテリアルを見ていきます。
項目にワールド位置オフセット(World Position Offset)とあり、これにノードを繋ぐと揺らすことができます。
自分でノードを組んでもいいのですが、UE5にはSimpleGrasswWindというマテリアルブループリントがあります。
これを使うと、風で揺られているような表現ができます。
今回は初めからSimpleGrasswWindが使われていてノードも組まれていたのでこれを使って解説していきたいと思います。
マテリアルブループリントについても後日掲載しようと思います。
SimpleGrasswWindをWクリックするとノード構造を見れるので、興味のある方は見てみてください。
SimpleGrasswWind
SimpleGrasswWindを見ると左に4つのピンがあります。
それぞれの役割は簡単にまとめると以下の通りです。
ピン名称 | |
---|---|
Windintensity(S) | 風速の強度を調整します。 |
WindWeight(S) | 風の影響を強くします。 |
WindSpeed(S) | 風速を調整します。 |
AdditionalWPO(V3) | ワールド位置座標で移動することができます。 おそらくAdditional World Position Offsetの略です。 |
草のマテリアルインスタンスに戻って、これらに繋がっている数値を調整することで草を揺らすことができます。
実際に動かしてみるとこんな感じです。
やっぱり止まっているよりも、こうして動いている方が現実感があっていいですよね。
オススメの本
まとめ
X(Twitter)も運営していますのでフォローしてくるとうれしいです。
記事投稿のお知らせもしていますのでよろしくお願いいたします。
以上、最後まで読んでいただきありがとうございました。
コメント