広大なワールドの作成
風になびく広大な草原、樹木が生い茂る山脈。多様性のある大自然をコンピュータグラフィックスで再現するのは難しいものです。Unreal Engineではこうした世界を構築するためにランドスケープでという機能が用意されています。地面のテクスチャーや植物のアセットが揃っていれば、驚くほど簡単に、多様で豊かな情景を作り出すことができます。
このチュートリアルでは下記の基本的な4項目について解説をします。使用しているUnrealEngineのバージョンは4.24です。ちなみに4.25からはユーザーインターフェイスの場所などが大きく変更になっているようです。
1.広大な地形(ランドスケープ)
2.複数のテクスチャーで構成されるマテリアル(ランドスケープマテリアル)
3.マテリアル上に自動配置される草(ランドスケープグラスタイプ)
4.ペイントするように配置できる樹木(フォリッジ)
地形の生成
新規にレベルを作成し、モードパネルをランドスケープに切り替えると、巨大なグリッド面が表示されます。これはこれから生成される地形データの範囲と解像度を示しています。必要に応じてパラメータを変更して地形を生成してみましょう。最初はあまり巨大なものだと操作が混乱するかもしれません。(作例ではSelection Sizeを15×15にしています)
- ランドスケープモードに入る
- 管理タブを表示
- 地形のサイズや解像度を設定
- 地形の作成
地形の編集
地形はデフォルトでフラットな平面ですので、スカルプトツールで地形を編集してみましょう。様々なツールが用意されていますが、まずはスカルプトで先ほど作ったグリッドをクリックしてみてください。ググッと地形が盛り上がったと思います。ドラッグで連続的に盛り上げられるので、快適に地形を編集できます。どのツールでも同じですがシフトキーを押しながらだと逆に凹ませることができます。Tool StrengthやBrush Sizeを変更してざっくりと地形を作りましょう。
- スカルプトモード
- 地形編集ツールの選択
- ツールの強度
- ツールのサイズ
スカルプト以外にもスムージングや平坦化、侵食やノイズなど様々なツールが用意されています。ブラシの形状を円形以外にも設定可能です。リアルな地形造成に挑戦してみてください。
ランドスケープ向けマテリアル
生成した地形に質感をつけてみましょう。ランドスケープをより多様な表現にする方法として以下の二つのマテリアルの考え方があります。
1.地形の傾斜に応じて自動的にテクスチャーをブレンドする
2.レイヤー化し手作業でテクスチャーを塗り分ける
傾きで自動的にテクスチャーをブレンド
World Aligned Blendマテリアル関数を使用すると、メッシュの法線方向に応じたブレンドが可能です。このブレンドを使用すると自動的に平地と傾斜のテクスチャーが別のテクスチャーになるため、下図のような表現が手軽に実現できます。公式サイトにも詳しい解説がありますので参考にしてみてください。
- ワールドに対して平行なほど赤、垂直なほど青にブレンドされている例
- 左図と同じ設定でテクスチャーを適用した例
World Aligned Blendを用いたマテリアル
上記のブレンド例のようなマテリアルを作ってみます。コンテンツブラウザからマテリアルを新規作成し、下図のようにブループリントを構築します。
- 平地用テクスチャー
- 傾斜用テクスチャー
- Lerpでブレンドし、ベースカラーに入力
- BlendSharpnessを-16に
- BlendBiasを7に
- WorldAlignedBlendの結果をLerpのAlphaへ入力
- ベースカラーと同様にNormal用のテクスチャーを構成
- AlphaにはExplict Normalを入力
World Aligned Blend関数に入力した二つのパラメーターによって平地と傾斜のブレンドが変化します。どのように変化するか下記のムービーで確認してみてください。
ランドスケープマテリアル
オープンワールド系のゲーム画面を観察すると、地形に複数のテクスチャーが使われており、それらが複雑に重なり合っていることがあります。この重なりはテクスチャーのタイリングを隠すだけでなく、多様性のあるリアルな表現を生み出します。Unreal Engineのランドスケープはマテリアルにも対応しており、レイヤーやウェイトを使用して複数のテクスチャーを塗り分けられるような仕組みが備わっています。詳しくは公式サイトの解説をご覧ください。
1.ランドスケープレイヤーの追加
先ほど作成したマテリアルにレイヤーを追加して、ビューポートでもう一つのテクスチャーを塗り分けられるようにしてみます。
- LandScape LayerBlendを追加し詳細パネルでレイヤーを追加
- 一つ目のレイヤーを「Gravel」という名前に設定
- 二つ目のレイヤーを「Grass」という名前に設定
- 一つの目のレイヤーをデフォルト表示するためにPreview Weightを1に設定
- Grass用のテクスチャーを追加し、Gravel用とともにLayerBlendに入力
- 必要に応じてNormal用のテクスチャーも設定(ベースカラーに入力されているノードを丸ごと複製して使用すると楽)
- NomalマップでブレンドするためのAlpha値は「w/Explicit Normal」を使用する
マテリアルをペイントする
ビューポートに戻ってランドスケープを選択。スカルプトモード内にあるペイントモードに切り替えてください。Target Layerという項目に2つのレイヤーが表示されているはずです。ペイントするためにはペイント情報を保存しておくためのウェイトブレンドレイヤを作成する必要があります。
- ペイントモードに切り替える
- 「+」でGravelレイヤー用のウェイトブレンドレイヤを作成(ファイルを保存する場所を聞かれますがどこでも大丈夫です)
- 「+」でGrassレイヤー用のウェイトブレンドレイヤを作成
Grassレイヤーを選択してランドスケープをペイントしてみましょう。ブラシは強度や半径などが変更できるので、地形に合わせて設定してみてください。なお、最初の塗り始めの際にシェーダーのビルドなどで若干時間がかかりますが、その後はスムーズにペイントできるはずです。
これでサンプルは3つのテクスチャーの重ね合わせとなりました。これだけでも、それなりに多様性のある表現が可能になるかと思います。ペイントツールには他にも様々な機能がありますので、公式サイトを参考に細かく世界を塗り込んでみてください。もちろんレイヤーはさらに複数追加できますので、より複雑な世界も表現可能です。
Glassツール
ランドスケープのマテリアル内にあるレイヤーを指定して、スタティックメッシュを自動生成する機能です。このチュートリアルでは先ほど作成したGrassレイヤーに、草原のように大量の草を配置してみます。
1.配置するスタティックメッシュの準備
ランドスケープグラスタイプを使うことによって、複数のスタティックメッシュをランダムに配置できるようになります。
- コンテンツブラウザから新規追加を選択
- Foliage内の項目を選択
- ランドスケープグラスタイプを追加
- 名前をL_Grassに
- 配置したいスタティックメッシュを登録
- 密度を設定
- 必要に応じて複数のスタティックメッシュを登録
2.マテリアル内でグラスタイプを指定
作成したランドスケープグラスタイプはマテリアル内で配置の設定を行います。下記のように設定すると、シェーダーコンパイルに若干の時間を要した後、Grassレイヤーに無数の草のスタティックメッシュが配置されます。(この簡単さに感動した覚えがあります)
- Landscape Layer Sampleを追加
- Landscape Grass Outputを追加しLandscape Layer Sampleと接続
- 使用するグラスタイプ「L_Grass」を指定
Foliageツール
スタティックメッシュを自動配置する際、草原ほど広範囲・大量である必要がなく、マテリアルのレイヤーとも連動しない、という条件の場合、GlassツールではなくFoliageツールを使うのが適しているかもしれません。Glassのように自動的に生成するのではなく、ペイントツールのようにスタティックメッシュを配置することができます。より詳細な情報は公式サイトをご覧ください。
スタティックメッシュフォリッジの作成
- コンテンツブラウザから新規作成
- Foliageを選択
- スタティックメッシュフォリッジを追加
- 名前を「F_Bush」に変更
- 配置したいスタティックメッシュを選択
フォリッジモード
- モードをフォリッジに変更
- 先ほど作成したスタティックメッシュフォリッジ「F_Bush」をフォリッジモードパネルに追加(必要に応じて複数追加可能)
フォリッジをペイント
- ペイント配置するブラシサイズや密度を設定
- 配置したいスタティックメッシュフォリッジにチェックを入れる(必要に応じて複数選択可)
- ランドスケープ上をペイントするように配置
完成
これでランドスケープ入門チュートリアルは完了です。生成されるワールドは複雑で多様ですが、それを作り出す仕組みは意外にシンプルだったのではないでしょうか。このランドスケープはUnreal Engineのパワフルさを感じやすい強力なツールだと思います。巨大なワールドも効率的なシステムのおかげで軽快に表示することができます。
よりリアリティのあるワールドのためには、川や滝などの水の表現、大気の変化、風に舞う木の葉など、盛り込まなければならない表現がまだまだ沢山あります。このチュートリアルを最初の一歩として、素晴らしいワールドのデザインにトライしてみてはいかがでしょうか。