西脇氏は普段、建築設計関連のCG映像制作をメインに活動しています。今回、自身がUE5で制作した建築ビジュアライゼーション映像をUEFNで再現したマップを制作し、公開しました。
UEFNを用いてCG映像を再現したマップ。マップコードは「2634-2601-9128」
本講演では、西脇氏が今回のマップ制作で得たノウハウをもとに、UEFNで使用できる機能について解説しました。
UEFNではオリジナルアセットをマップに使用できるように
UEFNでは、自分で制作した3Dモデルやサウンドをマップに使用可能です。
講演では実際に、ドアの3Dモデルをインポート。インポートした3Dモデルはドラッグアンドドロップでマップに設置します。
画面下側のコンテンツブラウザにある5つのアセットは、インポートによって生成されたもの
また、西脇氏は、効率よく作業するために、アセットはフォルダ分けして管理することを推奨しています。UEFNにはアセットの型でフィルタリングできる機能があり、アセットの整頓がしやすいとのこと。
見えない壁など、より柔軟なコリジョン設定が可能に!UEから導入された新機能
続いて西脇氏は、UEFNで押さえておくべきUE由来の機能を3つ紹介しました。
画面全体に視覚効果を適用できるポストプロセスボリューム
UEFNでは、領域内に任意のポストプロセスを適用できる「ポストプロセスボリューム」が使用可能になりました。
ポストプロセスボリュームの範囲内にカメラが入ったときに、設定したポストプロセスが適用されます。なお、ポストプロセスボリューム設定の「Infinite Extent」にチェックを入れることで、マップ全体に効果が適用されます。
ポストプロセスボリューム内に入ると、ポストプロセスが適用されるのが分かる
設定で「Temperature」を約12,000まで上げると、ボリュームに入ったとき右の画像のように画面の色温度が変わる
設定で「Bloom」の数値を大きくすると、光が広がって見えるようになる
ポストプロセスに設定できる「ポストプロセスマテリアル」は、セルシェーディングや線画風の表現など、画面全体のルックを劇的に変化させることが可能です。
講演では、マーケットプレイスにて販売されているポストプロセスマテリアルのアセット「Cel Shading and Outline by Raio」を使用し、その効果を実演しました。
ポストプロセスマテリアル適応前後の比較。適用後は、メッシュにアウトラインが表示されている
ほかにも、ポストプロセスには「スカイライト漏れ」と呼ばれる設定があります。Lumen環境下では、外の光があまり反射せず、室内が暗くなってしまう場合があります。「スカイライト漏れ」の設定値を上げることで、室内が明るくなるよう調整されます。
「スカイライト漏れ」設定の比較。数値を上げると、室内が明るくなることが分かる
コリジョン(あたり判定)をより柔軟に設定できるように
UEFNでは、オリジナルアセットのインポート時にコリジョン(あたり判定)が自動生成されます。その際にコリジョンが適切に生成されず、床をすり抜ける、空いている部分を通り抜けられないなどの問題が発生する場合があります。
表示モードを「プレイヤーコリジョン」に変更するとコリジョンが可視化される(画像右下)。このアセットは下を通り抜けられるように見えるが、実際は通過できなくなってしまっている
講演では、いくつかある修正方法の中で一番わかりやすい方法を紹介。メッシュの「Collision Complexity」設定を「Use Complex Collision As Simple」に変更することで、より見た目に近いコリジョン形状を使用できます。
コリジョン設定変更後の様子。中央部のコリジョンがなくなり、通り抜けられるようになっている
また、植栽などの複雑な形状を持つメッシュには、プレイヤーがスタックしてしまうのを防ぐため、木の幹だけにコリジョンを持たせることも可能です。
ブロッキングボリュームで見えない壁を作る
UEFNでは、「ブロッキングボリューム」を作成可能です。いわゆる「見えない壁」であり、立ち入り禁止エリアや透明な床などに使用します。
また、ブロッキングボリュームの特殊な使い方として、コリジョンプリセットを「FortCameraOnly」に設定することで疑似的な一人称視点が実現できることが紹介されました。
地面のマテリアル差し替えなど、独自の世界観を表現するための工夫
次に、西脇氏がマップ制作で行った主な作業について解説しました。
マテリアルインスタンスを活用したマテリアル作成の効率化
今回のマップでは、オリジナルのマテリアルを30種類程度作成する必要があったとのこと。多くのマテリアルを使う場合、マテリアルを1つずつ作ると作業コストが増大してしまいます。
そこで、汎用性の高い建物用のベースマテリアルを1つ作成。各マテリアルは、そのベースマテリアルを親とする「マテリアルインスタンス」として作成することで、作業時間を短縮しました。
「マテリアルインスタンス」はベースマテリアルの属性を引き継ぐ
マテリアルインスタンスは親マテリアルの実装を引き継ぎ、パラメータのみを変化させることで、いわば「親マテリアルの別パターン」として振る舞います。
通常、マテリアルの実装はノードベースで行うため、実装に時間がかかる場合があります。一方、マテリアルインスタンスではパラメータ調整のみを行うため、作業が大幅に簡略化されます。
ベースマテリアル(親)とマテリアルインスタンス(子)の編集画面
ベースマテリアル側で、BaseColorやNormalに使用するテクスチャや調整用のカラーなどをパラメータ化しておくことで、質感や色合いを容易に変更でき、汎用性の高いマテリアルインスタンスが作成できます。
アルベドマップなどをパラメータにしておくと、マテリアルインスタンスから編集できる
今回作成したベースマテリアルは、色合いや色の明暗をパラメータで調整できるようになっている
なお、今回マテリアルに使用したテクスチャはすべて「Quixel Megascans」から取得しています。
テクスチャサイズを削減し、サイズ制限を回避
UEFNのマップには、アセットサイズに関する3つの制限があります。
- セッションを開始するために、アップロードサイズを2,048MB以下にする
- 公開するために、プレイヤーのダウンロードサイズを400MB以下にする
- プレイ時に「100,000メモリユニット(※)」という数値を超えないようにする
※ 島の分割された領域内で使用可能なアセット量を管理するメモリ単位
デフォルトのアセットは、マップに配置してもサイズ制限に影響しません。そのため、作成してすぐのマップのサイズはほぼ0です。
既存アセットはアップロードサイズとダウンロードサイズを増加させない
ここに、インポートしたテクスチャを貼り付けたボックスを配置すると、アップロードサイズとダウンロードサイズが増加します。
4Kのテクスチャ1枚につき、ダウンロードサイズが1.5〜2.0MB程度増加。すべてのオブジェクトに4Kテクスチャを使用すると、すぐに400MBの制限を超えてしまいます。
メッシュデータのサイズも考慮すると、テクスチャサイズの調整は必須であると西脇氏は言います。
なお、UEFNではインポートできるテクスチャサイズに上限があり、厳密には4Kテクスチャを使用できない
UEFNには、インポートしたテクスチャの解像度を変更する機能が存在します。
1つは、テクスチャの「Maximum Texture Size」設定です。値を1,024にした場合、4Kテクスチャの場合だとダウンロードサイズが約4分の1になり、単純計算で4倍の量のテクスチャが使用可能になります。
「Maximum Texture Size」の調整により、ダウンロードサイズを削減できる
もう1つが、「テクスチャインポートデータをサイズ変更」機能です。これはUEにも存在しないUEFN独自の機能であり、アップロードサイズの調整が可能です。
アップロードサイズが1枚で90MBを超えてしまうテクスチャを約10分の1のサイズにできる
制作したマップでは、画面の広い範囲を占めるオブジェクトや高解像度を維持したいオブジェクトには1,024MB、それ以外の小物などには512MBにサイズダウンしたテクスチャを使用しています。
木目や家具、床などには1,024MB、木炭や薪などには512MBのテクスチャを割り当てた
ランドスケープマテリアルをカスタマイズし、シーンに合った地面に
UE5から引き継がれた「ランドスケープ」はUEFNの目玉機能の1つです。スカルプトツールやペイントツールを使用し、従来のクリエイティブでは難しかった山や川などの地形を作成することが可能です。
ペイントツールでは、好きなマテリアルで地形の見た目を変更できる
地面のマテリアルを変更する
ランドスケープで生成される地形には、デフォルトで草や地面のマテリアルが設定されています。ただ、デフォルトのマテリアルは今回作りたいシーンと合わなかったため、ランドスケープマテリアルと草のアセットを新たに作成しています。
左がデフォルトのランドスケープマテリアルと草のメッシュ。右が変更後のもの
今回は、Megascansから「芝 / 芝+土 / 土 / 水辺の地面」に対応したテクスチャをインポート。
右の画像は実際の使用例。芝+土のテクスチャは、芝と土の境界を自然に見せるために使用する
ランドスケープマテリアルを作成し、それぞれのテクスチャにつき1つのレイヤーを割り当てます。各レイヤーごとにMaterial Attributesを作成し、「Landscape Layer Blend」ノードでそれぞれのMaterial Attributesをレイヤーとして登録しています。
芝のレイヤーを構成するノード群を拡大したもの。左から3番目の「任意のTexture」列は、上から芝のBaseColor、NormalとRoughness用のテクスチャから成る
各レイヤーのノード構成は同一です。
赤枠部分が1つのレイヤーに対応する。各レイヤーで異なるのはテクスチャのみ
作成したランドスケープマテリアルを使用するには、ランドスケープマテリアルを割り当てたランドスケープを新たに作成します。
ペイントモードに切り替え、各レイヤーに対してウェイトブレンドレイヤーを作成することで、地面のペイントができるようになります。
「ランドスケープグラスタイプ」で草を配置
その後、ランドスケープに沿って草のメッシュが配置されるよう、ランドスケープマテリアルに手を加えました。UEの「Foliage」機能は、講演時点のUEFNでは使えないため、代わりに「ランドスケープグラスタイプ」を使用しています。
草のメッシュにはMegascansのアセット「Megascans WILD GRASS」を使用
「ランドスケープグラスタイプ」アセットを新規作成し、「Grass Mesh」の設定に草のメッシュを適用します。
ランドスケープグラスタイプを適用するため、先ほど作成したランドスケープマテリアルに新たなノードを追加します。
「LandscapeLayerSample」ノードを「LandscapeGrassOutput」ノードに接続する
追加した「LandscapeGrassOutput」に作成したランドスケープグラスタイプを適用します。「LandscapeLayerSample」のパラメータ名には、草を生やす対象のレイヤー名を入力します。今回は、芝のレイヤー「Wild_Grass」を設定しました。
以上の設定により、対象のレイヤーでペイントした領域に、自動で草のメッシュが配置されます。
また、パラメータ名に入力するレイヤー名を変更すると、草の生えるレイヤーも変化します。
左が「Wild_Grass」右が「Forest_Floor01」レイヤーをパラメータ名に設定した場合
木のメッシュを設置
マップに設置した木は、マーケットプレイスから入手したアセットをUE5からインポートして使用しています。
マテリアルにUEFNが対応していない機能を含んでいたため、作り直しています。
赤枠の部分で葉や枝の揺れ具合をコントロールしている
仕掛け『環境照明リグ』を使用したライティング
UEFNでは、従来のクリエイティブより詳細にライティングをカスタマイズできるようになりました。
今回のマップでは、デフォルトのライティングは使わず、より高度なライティングができる仕掛け『環境照明リグ』を使用しています。
ワールドセッティングからデフォルトのライティングを無効化できる
「環境照明リグには、ライティングに必要な機能がすべて入っている」と西脇氏。その中から今回調整したのは、「Directional Light」「Sky Atmos sphere」「Lumen Exposure」の3つです。
Directional Light
「Directional Light」は、太陽光の表現に使用されます。高度や方向、強度を調整することで、同じシーンでも異なった印象を持たせることが可能です。
Sky Atmos sphere
「Sky Atmos sphere」は、空と大気の表現を調整します。
「アトモスフィア-レイリー」はレイリー散乱のシミュレーションに使用する項目で、空の色を変更できます。今回は空の彩度を落とす調整をしています。
「Rayleigh Scattering」のカラーを変更すると、空をピンク色に変えることも可能
「アトモスフィア-ミー」は、ミー散乱と呼ばれる、光が遮られることで空がかすんで見える現象を調整する項目です。今回は値を強く設定し、空をかすませています。
画像右が「Mie Scattering Scale」の値を大きくしたもの。空がかすんで見え、地面に映る影から太陽光がぼやけていることが分かる
Lumen Exposure
「Lumen Exposure」は、ポストプロセスボリュームにある同一の設定と同様に、Lumenに関する設定を行います。今回は色温度を調節し、青みがかったスッキリとした色味に調整しました。
最終的なライティングは、昼間の曇り空という、少し落ち着いた雰囲気に仕上がりました。
仕掛けとレベルシーケンスを組み合わせて炎のオン / オフを実装するTips
次に、焚火に使用した、点火 / 消火を切り替えられる炎の実装について解説しました。炎は小道具のブループリントクラス「建物の小道具」を継承して実装しています。
「Building Static Mesh」を継承するとダメージによる破壊が可能に。「建物の小道具」を継承すると、破壊に加えてクリエイティブ上でのコピーなどができるようになる
炎のブループリントクラスは、炎の見た目を表示するメッシュ2つとライト1つで構成されています。
炎の見た目には、連番アニメーションを貼り付けた板ポリゴンを使用しました。板を十字に配置することで、どの角度から見ても炎がペラペラに見えないようにしています。
マテリアルファンクションによる連番アニメーション
炎の揺らぎを表現する連番アニメーションには、「Flip Book」というマテリアルファンクション(※)を使用しています。
※ マテリアルで行う処理の一部を抽出し、再利用可能にしたアセット。複数のマテリアルに同じ処理を組み込める
「Flip Book」は、1枚のテクスチャに対してサンプリングする領域を変化させることで、連番アニメーションを生成します。
左画像の矢印が示す順番でサンプリング領域を移動させ、炎のアニメーションをパラパラ漫画のように表示している
仕掛けの組み合わせで炎のオン / オフを切り替え
炎のオン / オフ機能には、以下の3つの仕掛けを使用しています。
スイッチ:炎のオン / オフを切り替える
ムービーシーケンスの仕掛け:オン / オフのアニメーションを再生する
オーディオプレイヤー:オンにした時に炎のサウンドを再生する
その中でも、『ムービーシーケンスの仕掛け』は以下に示すような仕組みが作成可能です。
- プレイ中に流れるムービーシーンの作成
- アセットの移動や回転、スケールアニメーション
- アセットの表示 / 非表示
- 倍速やスローモーションプレイのための時間拡張
- マテリアルの切り替え
- 時間帯の変更
最も使用頻度が高く、UEFNならではのマップを制作したい場合は『ムービーシーケンスの仕掛け』が必須である、と西脇氏は語ります。
『ムービーシーケンスの仕掛け』の使用例。左はオリジナルアセットの移動に使用。右はゲーム内速度を遅くし低重力を演出している
『ムービーシーケンスの仕掛け』は、レベルシーケンスを再生する仕掛けです。今回、炎のオン / オフ切り替え処理を行うレベルシーケンスを作成しました。
デフォルトで炎の可視性をオフにしておき、レベルシーケンスを再生した時に可視性をオンにすることで、表示 / 非表示の切り替えを実現しています。
マップで使用したレベルシーケンスには、15フレーム目に可視性をオンにするキーフレームを打っています。これにより、レベルシーケンスが再生されたら15フレーム(0.5秒)後に炎が表示されます。
作成したレベルシーケンスは『ムービーシーケンスの仕掛け』にセットし、『スイッチの仕掛け』がオンになった時に再生されるよう紐づけています。加えて、スイッチがオフになった時はレベルシーケンスの再生をやめ、非表示に戻すように設定しています。
炎を表示させる『ムービーシーケンスの仕掛け』の設定。『スイッチの仕掛け(Switch_Fire)』が『オンになった(On Turned On)』イベントを受け取った時、レベルシーケンスを再生するようになっている
炎を非表示にする処理。『スイッチの仕掛け(Switch_Fire)』が『オフになった(On Turned Off)』イベントを受け取った時、レベルシーケンスを停止させる
最終的にできあがった仕組み。スイッチと炎のオン / オフが連動している
今回のマップでは、炎のほか、椅子出現時の回転 / 移動 / スケールアニメーションや、昼夜を変更するためのディレクショナルライト強度の変更、ムービーシーンなどに『ムービーシーケンスの仕掛け』を使用しています。
UEFNの学習に最適な方法とは
最後に、西脇氏は「Chameleon Post Process」をおすすめのポストプロセスマテリアルのアセットとして紹介しました。
「Chameleon Post Process」の使用例。画面を揺らしたり、視野を狭めたりできる
西脇氏は、「UEのドキュメントやTipsはとてもわかりやすいものが多く存在しています。今回お話しした用語や言葉を頼りに、WebやYouTubeで検索していただければ、大体のことは、詳しいやり方や分かりやすい解説があるはずです」と述べて、講演を締めくくりました。
WANIMATION.LLCもしも、 Unreal Engine CG映像クリエイターが「UEFN」を使ってみたら。 | UNREAL FEST(アンリアルフェス) 公式サイト
ギリギリ昭和に生まれ平成で育った男性。
アクション、RPG、FPS、恋愛ADVとプレイするジャンルは様々。
一番やり込んだタイトルは『Another Century’s Episode 3 THE FINAL』。今もシリーズ新作を待ち続けています。