
※このページではバージョン5.3.2を使用しています。
今回は1回目のランドスケープ(地形)作成からステップアップします。


今回学ぶポイントは以下の3点です。
- UnrealEngineのマテリアルの作り方を学びます。
- Landmassプラグインを使いブラシによるスカルプトをせずにランドスケープを作る方法を学びます。
- ランドスケープに複数のテクスチャを塗り分ける方法を学びます。
それでは始めましょう!UnrealEngine5を起動します。

プロジェクト作成

ゲーム > ブランク
プロジェクト名:Landscape

プロジェクトがLandscapeに設定され再起動します。

ランドスケープのレイヤー(小ネタ)
バージョン5.3以降、デフォルトのランドスケープが
Base Landscape、Flat Middleの2レイヤー構成になりました。
UnrealEngineのロゴマークの凸と凹が相殺されフラットな地面を形成しています。
直感的にランドスケープのレイヤーの仕組みを知ることが出来ます。


【プラグイン】Landmassの読み込み
最初にLandmassプラグインを読み込みます。

編集 > プラグイン

検索ボックスに「Landmass」と打ち込み Landmass Betaをチェックします。

Beta版アナウンス画面を確認後、「今すぐ再起動」をクリックします。
新規レベル作成
再起動後、新規レベルを作成します。

ファイル > 新規レベル

屋外環境の作成
空のレベルは光源がないので、太陽光、空、雲、フォグといった屋外環境を作成します。
”環境ライトミキサー”ウィンドウを開く
屋外環境は環境ライトミキサーから呼び出せます。

ウィンドウ > 環境ライトミキサー

上記5つのボタンを全てクリックします。

屋外環境が作成されました。
屋外Lightingグループの構成
”環境ライトミキサー”で屋外環境を作成すると、UnrealEngineの天球のあるプリセットで読み込んだ際の屋外環境と同等の状態になります。
デフォルトで作成される屋外環境の天球(空)部分はLightingというフォルダの中にありますので、内訳を確認してみましょう。

全てオフにした状態です。光源がないので真っ暗になります。
DirectionalLight

太陽光(直接光)。方向のみ変化します。強さはIntensityで変更できます。
SkyAtmosphere

空(大気)、太陽の位置を表示します。
ExponentialHeightFog

ランドスケープ遠景が明るくなりました。地面付近にフォグを付加し空気遠近法を再現します。
SkyLight

環境光を追加します。ランドスケープの特に草の部分が空の色の影響で青くなりました。
VolumetricCloud

雲を追加します。
SM_SkySphere
※環境ライトミキサーでは作成できませんが、屋外環境のプリセットには存在しています。

SkyAtmosphereの影響範囲を指定します。画面はFキーでSM_SkySphereを画面いっぱいに収めた状態。
フォルダを作成
マテリアルなどのアセットを格納するためのフォルダを作成します。

コンテンツブラウザから+追加

「📁新規フォルダ」をクリック

名前を”MyAssets”に変更。
ランドスケープのマテリアルを作成
作成した”MyAssets”のフォルダ内にマテリアルを新規作成します。

「+追加」 > マテリアル

名前を”M_Land”に変更。
テクスチャを読み込み
エクスプローラーから、前回の演習で作成したランドスケープ用のタイリングテクスチャを選択します。

草地と岩地、それぞれ3種類(BaseColor、Normal、OcclusionRoughnessMetallic)のテクスチャ計6枚をコピーします。
今回のマテリアルは発光しないので”Emissive”(発光)テクスチャは必要ありません。


「圧縮設定:Normalmap」か確認
ノーマルマップテクスチャはUnrealEngineに読み込む際に自動的にNormalmapとして認識されますが、稀に見落とされます。適用したメッシュの凸凹が変な場合、アイコンの色が薄い場合は
テクスチャアイコンをダブルクリック
詳細パネルの
▼圧縮
圧縮設定 Normalmap(DXT5,BC5 on C\DX11)
に変更します。


マテリアルエディタを開く
マテリアルにテクスチャを読み込むためのマテリアルエディタを開きます。

マテリアルを作成、加工していくウィンドウです(Mayaのハイパーシェードと同等の役目です)。
テクスチャなどのパーツを「ノード」と言い、それらを左から線でつなげていきます。

右側のM_Landが最終的なマテリアル出力結果。これから左側にテクスチャを読み込み、M_Landにつなげていきます。
テクスチャを読み込む

コンテンツブラウザのテクスチャをマテリアルエディタにドラッグ&ドロップします。

テクスチャがノードとして読み込まれました。
カラーマップ、の適用
BaseColorテクスチャ(カラーマップ)をマテリアルに結線します。
ノードの結線
“Texture Sample” RGB 〇 からドラッグ → ”M_Land” 〇 ベースカラー でドロップ


シェーダーボールでカラーが付いたマテリアルが確認できました。
ノードの解除

結線の上にカーソルを置きAltキーでノードを解除できます。
ノーマルマップ、の適用
次にNormalテクスチャをマテリアルに結線します。

ノーマルマップは表面にライティングのみで表現する疑似的な凸凹をつくります
AO、ラフネス、メタリック、の適用
plane_Grass1_OcclusionRoughnessMetallicのアイコンをダブルクリックするとテクスチャの詳細(ウィンドウ)が表示されます。RGBそれぞれのチャンネルに異なるマップが描かれています。

このマップはカラー情報として使用しないのでsRGBのチェックを外します。
Rチャンネル

Gチャンネル

Bチャンネル

アンビエントオクルージョン
溝におちる影
※動的ライティング時は機能しません
ラフネス
黒がつるつる
白がざらざら
メタリック
黒が非金属
白が金属

結線するとエラーが出ます。SampleTypeをlinnercolorに変更するとエラーは消えます。

今回リニアワークフローの説明は省きます
(ラフネスの値を正確に反映させるための呪文程度に考えておけば良いです)。

3つのマップを繋げたら一旦終了です。
「適用」でマテリアルの変更を適用し、ウィンドウを閉じます。
ランドスケープを作成
ランドスケープ(地形)を作成します。
今回はブラシによるスカルプトは使用せず、先ほどダウンロードしたプラグインLandmassを使用します。


編集レイヤーを有効化☑ ←確認
マテリアル に 先ほどの”M_Land”を追加します。
コンポーネント数を4に減らします。
「作成」をクリック
ボックス内の値を変更すると右側に「
更に、このアイコンをクリックするとデフォルトの値にリセットされます。



ランドスケープ作成完了。
Landmass(CustomBrush_MaterialOnly)
前半に読み込んだプラグインLandmassの機能を呼び出します。
CustomBrush_MaterialOnly の追加

ブループリントブラシ >
CustomBrush_MaterialOnlyを選択します。
ビューポートからランドスケープをクリックします。

LandscapeにCustomBrush_MaterialOnly が適用されました。

アウトライナーに
Landscape_CustomBrush_MaterialOnly_C
が追加されました。詳細パネルでパラメーターの変更が行えます。
地形の調整
詳細パネルでパラメーターの変更が行えます。
▼1)BrushSettings
▼Material
▼Custom Scaler Parameters

Height:高さ
Size:大きさ
AlphaFalloff:谷の侵食
EdgeFalloff:境界の侵食
境界が馴染んで自然な形状になりました。
これでも十分使えそうですが、さらに複雑な形状に挑戦しましょう。
Brush Materialの変更
次に、ノイズ系のマテリアルを用いて全体的に形状を変化させていきます。
▼1)Brush Settings
▼Material
に移動します。
GenNoise_02_Voronoi
詳細パネルの▼MaterialからBrushMaterialを探します。

ボックスをクリックして検索エリアにGenNoise_02_Voronoiと入力します。
ヒットしたマテリアルを選択します。

全体的にノイズが掛かった形状に変更されました。
GenNoise_01
もう一つ使えそうなマテリアルがあるので選択してみます。

ボックスをクリックして検索エリアにGenNoise_01と入力します。
ヒットしたマテリアルを選択します。

地面のような形状にはこちらのノイズが良いかもしれません。
詳細パネルのパラメーターを変更して微調整を行います。
Tiling:繰り返し
Elevation Scale:高さのスケール
Elevation Pre- Ofset:平らにする地面の位置
Seed:ランダム感
Invert:反転
Landmass(CustomBrush_Landmass)
ランドスケープにもう一つLandmassを追加します。
CustomBrush_Landmassは山や谷を作る際に便利です。
CustomBrush_Landmass の追加

左側画面
ランドスケープ > スカルプト から
ブループリントブラシ:CustomBrush_Landmass
を選択します。
ビューポートからランドスケープをクリックします。

ピラミッド型の形状が追加されました。
移動ハンドルで上下左右に位置を移動できます。

パラメーターの変更はアウトライナーで
Landscape_CustomBrush_Landmass_C
を選択して、詳細パネルで行います。
スプラインが選択解除された場合はこちらをクリックします。
スプラインポイントの追加
スプラインのポイントを追加することで更に複雑な形状にします。
スプラインの線上にマウスを置き、右クリックします。

「ここにスプラインポイントを追加」をクリック

ポイントが追加されました。
スプラインポイントの調整

この要領で形状を調整します。
Curl Noiseの追加
詳細パネル
2)Effects
更に形状を変化させます。

Bluring
Blur size:形状を滑らかにします。
Curl Noise
Curl 1 Strength :カールノイズ1を付加します。
Curl 2 Strength :カールノイズ2を付加します。

Curl 1 Strength :1
Curl 2 Strength :1
に変更した結果
Displacementの追加
Displacement Textureの画像に沿って形状の起伏を変更します。
Displacement Heightが初期値は0なので数値を上げて効果を確認します。

Displacement Height:形状の起伏の強さ
Outer Smooth Threshold:境界のなじませ加減

Displacement Height:800
Outer Smooth Threshold:3000
に変更した結果
ランドスケープレイヤーの追加
ランドスケープにレイヤーを追加します。
Landmassの形状をキープした状態で上からブラシでスカルプトも行えます。

Landmassを追加したレイヤーを右クリックして
名前変更を選択します。

名前をLandmassに変更

Landmassを右クリック > 作成
Layer1が追加されました。

Layer1にブラシによるスカルプトを行いました。
ランドスケープレイヤーを追加することでLandmassで作成した形状を保ちながら上からスカルプトによる形状変更が可能です。
マテリアルにペイントレイヤーを追加
ランドスケープ形状が複雑になったので、テクスチャも複数使用して複雑な見た目にします。
LandscapeLayerBlendの追加

前半作成したマテリアル”M_Land”をダブルクリックしてマテリアルエディタを開きます。
複数のテクスチャを読み込む準備をします。

マテリアル作業エリアでマウス右クリックして検索欄にLandscapeLayerBlendと入力
LandscapeLayerBlendをクリック

LandscapeLayerBlendが追加されました。
今から2種類のテクスチャを読み込むための設定をします。
テクスチャレイヤーの設定

作成後詳細パネルからレイヤーの+ボタンを2回押します。

インデックス[0] LayerName : Grass
インデックス[1] LayerName : Rock
LandscapeLayerBlendノードのインプット名が変わります。
Rockテクスチャの追加

Rockテクスチャをドラッグ&ドロップで追加します。

ベースカラーのテクスチャをLandscapeLayerBlendのGrassとRockのインプットノードに結線します。
LandscapeLayerBlendノードの複製
LandscapeLayerBlendノードを選択、ショートカット”Ctrl+D”で複製できます。コピー&ペーストでもOKです。
マップの数だけ複製します。

全てのテクスチャにLandscapeLayerBlendノードを適用

LandscapeLayerBlendを複製して、同様にすべてのテクスチャをLandscapeLayerにつなぎました
(AO,Metaricは使用していないので削除しました)。
タイリング(繰り返し)機能の追加
テクスチャのタイリング(繰り返し)回数を制御する機能を追加します。
TexCoordinateノードの追加
テクスチャの繰り返しを制御するTexCoordinateを追加します。


multipleノードの追加
繰り返しの数を乗算する為のノードを追加します。


コンスタントノードの追加
繰り返しの数を入力するためのコンスタント(定数)ノードを追加します。


コンスタントノードの数値は0.1とします。
現在繰り返し回数が多すぎるので逆に繰り返しを減らします。

Multiplyの出力をGrassテクスチャ左側の入力UVsに繋げます。これで繰り返し回数の変更が反映されます。

他の2つのGrassテクスチャも同様の数値でタイリング(繰り返し)を行う必要があります。それぞれのインプットノードに同様に接続します。
[演習]
RockのテクスチャもGrassテクスチャと同様にタイリング回数を決定できる仕組みを作成します。その際、Grassテクスチャと独立して制御できるようにノードを工夫します。

結線が終了したら「適用」してウィンドウを閉じます。
ペイントレイヤー設定
ランドスケープモードに戻ります。

GrassとRock、それぞれマテリアルグラフのLandscapeLayerBlendで設定したテクスチャがレイヤーに反映されました。

右側の「+」をクリック > ウェイトブレンドレイヤ(法線)

そのままの状態で保存をクリック

ランドスケープレイヤーが保存され、ランドスケープ”Landmass”レイヤーにGrassが再適用されました。

同様の手順でRockのランドスケープレイヤーも保存します。
これで2つのテクスチャを塗り分ける準備が出来ました。
レイヤーテクスチャをペイント
ランドスケープのLandmassレイヤーをクリック
下段レイヤーのRockマテリアルをクリック
ビューポートにブラシが現れるので自由にペイントしましょう。

ペイントブラシはスカルプトのブラシと使い方は同じなので説明は割愛します。
まとめ
今回は1回目のランドスケープ(地形)作成からステップアップして
UnrealEngineのマテリアルの作り方、スカルプトをせずにランドスケープを作る方法、ランドスケープに複数のテクスチャを塗り分ける方法を学びました。
- ランドスケープのマテリアルを作成しました。
- ランドマスCustomBrush_MaterialOnlyを作成しました。
- ランドマスCustomBrush_Landmassを作成しました。
- ランドスケープにレイヤーを追加しました。
- マテリアルにペイントレイヤーを追加しました。
- ランドスケープにペイントレイヤーを設定しました。
- ランドスケープにレイヤーのテクスチャをペイントしました。
地面の形状などは1回目に比べて洗練されたように思えますが、実際のオープンワールドのゲームとしてはまだ厳しい状態です。更にクオリティを上げる工程へ進みます。