見出し画像

超初心者のUE5学習メモ-23-:草生えるwww(グラス)

#Unreal_Engine_5 の学習記事、今日は草木をマップに生やすことができる「グラス」のツールについて見ていきます。


《今日学習する内容》

  • グラス機能とは

  • グラスのマテリアルを作る

  • マップに草生える

今日は草を表面に生やすことのできる「グラス」機能をやって、次回も同じように草木を生やせる「フォリッジ」機能を見ていきます。グラスは「マップの一部を草に変える」機能で、フォリッジは「マップに草木などのオブジェクトを生やす」機能という感じかな。

ではそれぞれ見ていきましょう!


《グラス機能とは》

引用:UE5ドキュメント

ドキュメントによると上の画像のように「草花でびっしりと覆われた地形」を作るのが「グラス(Grass)」という機能だそうです。

前回見たランドスケープモードにて「マテリアル」を用いて作るらしいので、実際に作ってみよう。


《グラスのデータを作る》

地形はこの前ランドスケープを学ぶ際に作ったこちらを使います。

ここに草を生やすんだけど、その為にはまず「マテリアル」を作らないといけません。

そもそもマテリアルというのは「3Dモデルの表面がどのように見えるか」を構成したデータのこと。本来3Dモデルだけだと画像のマップのようによく分からない白黒の表面になっちゃうので、マップなら岩だったり草原だったりとマテリアルを適用させないといけないのだ。

今回はその中でも草原などに使う「グラスのマテリアル」をどうやって作るのか、ドキュメントを見ながら作業していきます。

まずは画面左下にある「コンテンツドロワー」を開いて、そこから赤矢印の「追加」からマテリアルのデータを作成します。

しかしマテリアルの前に「マテリアルへと張る草のデータ」を作らないといけないので……

「フォリッジ」の中にある「ランドスケープ グラスタイプ」というやつを選択して作成。

すると今表示しているフォルダにデータが作成されるので、そいつを開くと……

なんか出てきました。

4行くらいでとてもシンプルだなあと喜んでいましたが、草を設定する為に「草のバリエーション : 0配列エレメント」と書かれた部分の+マークをクリックすると……

項目が……多い……ッ!

上から雰囲気で項目を見ていくと……

  • Grass Mesh:草のメッシュ。表示する草を設定する

  • Override Materials:マテリアルをオーバーライドする。分からんが何か上書きするらしい

  • Grass Density:草の密度。草が表示される密度

  • Grass Density Quality:クオリティごとの草の密度。ゲームプレイの際に設定するグラフィックのクオリティに応じて、草の表示数を増減させられるみたい

  • Use Grid:なんか表示するための数列を変更するらしい、分からん

  • Placement Jitter:設置する際の揺らぎ。多分バラバラに生やすことが出来るってことだと思う、多分

  • Start Cull Distance:草の表示がフェードアウトし始める距離。指定した距離になると非表示になっていく、というものだと思う

  • Start Cull Distance Quality:クオリティごとの草フェードアウトの開始距離。グラフィッククオリティを低く設定している場合は、短い距離で消した方が良さそう

  • End Cull Distance:草の表示のフェードアウトが終わる距離。さっきのスタートに対して、こっちは完全に消えるタイミングってことかね。

  • End Cull Distance Quality:クオリティごとの草フェードアウトの終了距離。

  • Min LOD:最小のLODを設定するらしいです。何を言っているのやら……

  • Scaling:スケーリング、つまり大きさ。多分草そのもののサイズ比率を変えられるんだと思われる、ここでは一定にするかランダムにするかとか選べるっぽい

  • Scaling X,Y,Z:最小と最大の大きさを設定。多分この範囲内の大きさの草がバラバラに生えるってことだと思う

  • Random Rotation:草1本1本をランダムに回転させるかどうか、勿論縦軸での回転である

  • Align to Surface:表面に草の向きを揃えるか否か。

  • Use Landscape Lightmap:ランドスケープのライトマップを使うか否か。ライトマップの詳細はまだやってないのでまだ分からん。

  • Lighting Channels:なんかライティングのチャンネルを変えられるらしい。よく分からん。

  • Receives Decals:デカールの影響を受けるかどうか。デカールはあれだ、シールみたいにオブジェクトの表面とかに貼れるやつ、多分スプラトゥーンのインクとかもデカールみたいなものだと思う

  • Affect Distance Field Lighting:カメラとの距離がライティングに影響を与えるか、みたいな云々。知らん。

  • Cast Dynamic Shadow:ダイナミックシャドウに影響するか、だと思う。そもそもダイナミックシャドウとは。

  • Cast Contact Shadow:コンタクトシャドウに影響すうか、なのだろうか。そもそもコン(ry

  • Keep Instance Buffer CPUCopy:よく分かりません。

  • Instance World Position Offset Disabe Distance:WPOを無効にする距離らしい。よく分からん。

はい、項目は以上になります。

いつも通り大体が訳分かってませんが、今後の私に期待しましょう。がんばれがんばれ。


さてもう記事を終わりたいくらい専門用語いっぱい見ましたが、今日は実際に生やすまでやってみます。

今回はあまり弄らず、草のメッシュ(オブジェクト)だけ設定しよう。

Grass Meshから、チュートリアルのデータにある「SM_Bush」という草?を選択して保存します。


《ランドスケープのマテリアルを作ろう》

そしたら次は新規にマテリアルを作って……

またコンテンツドロワーから追加を押して「マテリアル」を作成

作ったマテリアルを開くと……って思ったけどさ、そういえばマテリアルを見るのも初めてだったわ。

よく分からないこんな画面が出ます。

また詳しくやるのは未来の自分にお任せして、とりあえずドキュメント見ながら何とかしたので流れをご紹介いたしましょう!

まずこの大きな空間にマップの所で右クリックをすると、マテリアルを設定する為の「ノード」というものを作成できます。

今回は「Landscape Layer Blend」という名前のノードを使うので、このように入力して作成!

作ってノードを選択すると、今度は左下にノードの「詳細」が表示されます。

ここの「レイヤー : 0配列エレメント」の所の+マークを押して追加することで、ランドスケープの地形に表示する見た目を複数設定できます。

こんな感じでね「インデックス」ってのが増えて、何かまた項目が出てくる。勘弁してくれ。

一応それぞれの項目を見ると……

  • Layer Name:レイヤー(表示する見た目)の名前

  • Blend Type:ブレンドの仕方、詳細は分からん

  • Preview Weight:上のプレビュー画面にどれだけの濃さで表示するか

  • Const Layer Input:色を数値で設定できる

  • Const Height Input:高さを数値で設定できる、高さってなんやねん

こんな感じです。全然意味分からんね。

とりあえずレイヤー1つ目を「A」という名称にして、色を数値で「赤」に設定。レイヤー2つ目を「B」という名称にして、色を数値で「緑」に。

赤と緑が合わさってプレビューでは黄色になってます

更にノードの右側にある白丸をドラッグして、何か最初からあるノードの「ベースカラー」という所に接続。

これでランドスケープに赤と緑を表示できるようになりました。

そして次はグラス(草)を表示するために、新しいノードをつくります。また右クリックして今度は「Landscape Grass Output」をクリック。

こちらのノードだけで「草を生やす」という機能なんですが、現状だとどの草を生やすのか、どのレイヤーに生やすのか指定できてないので何も起きません。

まずは詳細パネル(左下の部分)の「草のタイプ」から……

「Grass Type」にて最初に作ったグラスのデータを指定します。

これで生える草を設定できました。エレメントを追加すれば他の草を一緒に生やすことも出来そうですね、知らんけど。


では次にどのレイヤーに生やすのかを決めます。新たに「Landscape Layer Sample」というノードを追加しまして……

左の緑のやつが「Landscape Layer Sample」、左が「landscape Grass Output」

レイヤーサンプルと名の付いたやつを選択して、詳細パネルに項目が出てきます。ここの「パラメータ名」にレイヤー名を入れると、その名前と合致するレイヤーで草が生えます

ここで言うレイヤー名とは、ちょっと前にやった「Landscape Layer Blend」にて「Layer Name」で指定したやつ

さっきは赤を「A」、緑を「B」と名付けたので、ここでは緑の所に草を生やしましょう。なのでパラメータ名に「B」と記入します。

Ctrl+Sで保存して、これにてランドスケープ用のマテリアルが完成です。

では実際にマップへ草を生やしてみましょう!


《マップに草生える》

マテリアルの編集画面を閉じて、最初の画面へと戻ってきました。

地形マップであるランドスケープを中央の画面にてクリックして、今度は右下に出てきた詳細パネルを見ます。

そこにある「ランドスケープ」内の「ランドスケープマテリアル」にて、さっき作ったばかりのマテリアルを設定します。

コンテンツドロワーか、ランドスケープマテリアルにあるファイルと虫眼鏡マークのボタンを押して、さっき作ったマテリアルを選択。

そして「ランドスケープマテリアル」にある左矢印ボタンを押すと、適用することが出来ます。

適用すると……

真っ赤だ……

つまりはこのランドスケープには、1つ目のレイヤーに設定した「A」が一面に表示されてます。

草が生えるように設定した「B」を表示させたいので、左上の「選択モード」というボタンから「ランドスケープモード」へと変更しよう。

左側上部にある「ペイント」をクリックすると、さっき設定した「レイヤー」が表示されてます。綺麗な赤と緑だね。

しかしよく分かりませんが現状だとペイント機能で塗れないみたいなので、赤丸で示した+マークを押して「レイヤ情報」を作成します。

そしたら遂に草を生やす時がやってまいりました。

緑のレイヤーBをクリックして選択した状態で、マップへと塗れば……

草生えました。


《学習まとめ》

  • ランドスケープはマテリアルによって「草を生やすこと」ができる

  • 生やすための草の情報「ランドスケープ グラスタイプ(Landscape Grass Type」データで管理する

  • マテリアルの「ランドスケープ レイヤー ブレンド(Landscape Layer Blend)」ノードで、ランドスケープで使うレイヤーを設定できる

  • マテリアルの「ランドスケープ グラス アウトプット(Landscape Grass Output)」で、生やす草を「ランドスケープグラスタイプ」データを用いて設定できる

  • マテリアルの「ランドスケープ レイヤー サンプル(Landscape Layer Sample)」にて草を生やすレイヤーを指定できる

  • ランドスケープモードのペイントにて「レイヤ情報」を作成することで、指定したレイヤーを地形に塗ることができる


という感じで今日は「Grass」という機能を見てみました。

マテリアルやライトマップなどのまだ知らない要素は色んな所で出てきてるので、そこも近い内に理解していかないとだね。でも次回は草木を生やすもう1つの機能である「フォリッジ」を見ていきます。

では、また次回お会いしましょう!


もしも記事が参考になったら、スキやフォローよろしくね! 気が向いた時はサポートで支援していただけると嬉しいです。