今回はUE4の機能の1つであるLandscapeの作成の仕方、設定の流れなんかを解説しようと思います。
それほど難しいものではないのでドキュメントを見ておけば大抵問題ないかと思うのですが、備忘録的に書いておきます。
ドキュメントは以下を参照してください。
ランドスケープのクイックスタートガイド
https://docs.unrealengine.com/latest/JPN/Engine/Landscape/QuickStart/index.html
フォリッジ インスタンス化メッシュ
https://docs.unrealengine.com/latest/JPN/Engine/Foliage/index.html
Grass ツールのクイックスタート
https://docs.unrealengine.com/latest/JPN/Engine/OpenWorldTools/Grass/QuickStart/index.html
Landscapeは高さマップから生成される地形で、広大な地形を作成するのに向いています。
しかし、切り立った崖やオーバーハングした岩場などの作成には不向きです。
地形の基本的な地面はLandscapeで作成し、配置物や崖のようなものはモデルで作成するのが一般的だと思います。
Landscapeを作成するにはモードを[ランドスケープ]に変更します。最初の段階では下図のような画面が出てくるはずです。
ラジオボタンで [新規作成] と [ファイルからインポート] の2つがありますが、[ファイルからインポート] を選択すると画像として作成された高さマップ(グレースケールの画像で、白が高い、黒が低いを表した画像)をインポートすることも出来ます。
今回は [新規作成] で新しいLandscapeを作成します。
なお、[フィルワールド] ボタンを押すと巨大なサイズのLandscapeが作成されます。オープンワールドのゲームを作る用って感じですね。
サイズを決定したら [作成] ボタンで作成します。
作成するとレベルエディタ上に板が表示されますが、これが初期のLandscapeです。
Landscapeはレベル上に複数作成することが出来ますが、作成すると上図の画面が出てこなくなってしまったはずです。
もう1つのLandscapeを作る場合、[管理] → [新規ランドスケープ] で同様のUIが表示されますので、同じ方法で作成してください。
Landscape作成後はスカルプトツールで形状を整えていきます。
スカルプトについてはアーティストさんの方が詳しいでしょうからここでは割愛します。
私が適当に作ったものはこんな感じ。
適当でもそれらしく見えます。
ちなみに、整えたあとはライティングビルドを行いましょう。行わないとブロックの境界線に影が入ったりして汚くなります。
さて、何もマテリアルが設定されてないと流石にちょっとどうかと思います。
ですので、Landscape用のマテリアルを作成しましょう。
続きからでマテリアルの作成を行い、ペイントをしていきましょう。
Landscapeのマテリアルは普通のマテリアルももちろん使用できるのですが、ペイントツールでマテリアルペイントを行う場合は特殊なマテリアルを作成する必要があります。
ここで使用するマテリアルノードは [Landscape Layer Blend] です。
配置した段階ではこのように出力ピンしか存在していませんし、このままでは使えません。
このノードは複数のレイヤーをLandscapeのペイント機能によって作成されたウェイト値でブレンドする命令なのですが、どのようなレイヤーが存在するかはユーザによって定義されなければなりません。
この定義はこのノードの詳細パネルで行います。
今回はSoilとGrassという2つのレイヤーを作成しました。
どちらかのレイヤーの [Preview Weight] は1.0を入れておいたほうがいいでしょう。そうしないとプレビューウィンドウが変化しません。
また、このノード1つでブレンドできるのは1種類の入力だけです。
つまり、ベースカラーもラフネスも法線もブレンドしたい場合はその分だけノードを作成する必要があります。
少し面倒ではありますが、コピペで対応した結果がこうなりました。
テクスチャのサンプリングに使用しているのは通常のUV座標ではなく [Landscape Layer Coords] というノードです。
通常のUV座標を使っても問題はないのですが、このノードはLandscapeに特化した内容になっています。
例えば、スケーリングはUVそれぞれではなく一様に行われたり、そもそもUVの繰り返し回数ではなく貼られる範囲をスケール値として設定していたり、回転角度を設定できたりします。
特にこだわりがなければこのノードをテクスチャにつないで [Mapping Scale] と [Mapping Rotation] をいじればそれっぽくなるでしょう。
では、このマテリアルをLandscapeに適用しましょう。
レベルエディタかアウトライナで作成済みのLandscapeを選択し、作成したマテリアルを設定します。
設定するとこのような状態になります。
なんとなくそれっぽくなってきましたが、ここからさらにペイントをしていきます。
モードでランドスケープツールを選択し、その中の [ペイント] を選択しましょう。
マテリアルで設定した2つのレイヤーが [Target Layers] として登録されているのがわかるでしょう。
この状態で Grass レイヤーを選択しペイントすると…
怒られます。
ペイントを行うにはレイヤー情報のアセットが必要になります。
作成するには各レイヤーの横の [+] ボタンを押して [ウェイトブレンドレイヤ] を作成します。
ではペイントしていきましょう。
Grassを選択してペイント開始!…ってなんじゃこりゃー!!
SoilとGrassの境目がおかしい!
どうやら最初の段階ではすべてのレイヤーがウェイト値0.0になっているようなのです。
そのため、どこかにウェイト値が入った瞬間、レイヤーがブレンドされる部分で正常ではないものが表示されてしまうようです。
対応策は…全部塗るw
大きなブラシサイズを利用するなどで最初にベースレイヤーでペイントしちゃうのがいいようです。
ドキュメントにもそう書いてあるんですよ…マジで。
というわけで、一旦Soilレイヤーで全部ペイントしちゃいましょう。
その上でGrassレイヤーをペイントしていきます。
今度はちゃんと塗れました。
もちろんレイヤーは増やすことが出来ますが、その場合はマテリアルをいじる必要があります。
このようにLandscapeを作成、ペイントするまでは若干手数が多い印象ですが、慣れればどうということもない…と思います。
このあとはFoliageツールやGrassツールによって植生を追加していくことになりますが、これらは次回ということで。