2022年11月19日(土)〜20日(日)の2日間にわたり、Unreal Engine を学ぶ全ての人を対象とした大型勉強会「UNREAL FEST WEST ’22」がリアルイベントおよびオンライン中継で開催された。初日がノンゲームデイ、2日目がゲームデイとして10講演行われたが、本稿ではエピック ゲームズ ジャパンによるノンゲームデイのセッション「Unreal Engine 5.1新機能まとめ for ノンゲーム」についてレポートする。
イベント概要
UNREAL FEST WEST '22
開催日時:
2022年11月19日(土):NON-GAME DAY
2022年11月20日(日):GAME DAY
開催場所:
京都コンピュータ学院 京都駅前校 6Fホール/オンライン
unrealengine.jp/unrealfest/west2022
新機能におけるBetaと実験的機能の扱い
登壇したのはエピック ゲームズ ジャパン Solution Architectの向井秀哉氏。自動車、映像、建築などノンゲーム分野に関する技術営業として、Unreal Engineの技術的な説明などを担当している。本セッションでは、向井氏からUnreal Engine 5.1(以下、UE5.1)の新機能のうち、ノンゲーム向けにも使用できる機能が紹介された。
本題に入る前に注意点が提示された。紹介する機能のなかに「Beta」または「実験的機能」と記載された機能がある。Betaは正式リリースの前段階の機能となり、パフォーマンスや安定性に欠けることがあるので、使用する際は頻繁な保存やプロジェクトの複製をして欲しいとのこと。また、実験的機能はAPIの変更や将来的に廃止される可能性もある機能であり、Betaとは違って後方互換性はサポートしていないとのことだ。
さて本題だが、UE5.1の新機能のなかでもRendering、Editor Tools、Cinematic、Otherと大きく4つのジャンルに分けて説明がなされた。順に紹介していこう。
Rendering
Renderingの新機能のなかでも、さらにLumen、Nanite、Path Tracer、Strataの4つに分類して説明された。
Lumen
まずはLumenから。Two Sided FoliageとSubsurface colorをサポートした。UE5.0では暗くなってしまった部分が光を通すようになって、より自然な見た目を実現できるようになった。より自然系のシーンが作りやすくなるだろう。
Foliageもサポートした。ちなみに、Naniteメッシュのみでのサポートとなるので、使用する場合はNaniteを有効にした上でFoliageのインスタンス設定でAffect Dynamic Indirect Shadowを有効にする必要がある。
Single Layer Waterもサポートした。Single Layer Waterを使うことでOpaqueで深さや距離による水の色の変化を簡単に表現できるので、大変便利な機能だ。
半透明に対する反射の機能について。Post Process VolumeにHigh Quality Trancelucency Reflectionsという設定が追加され、これを有効にすることで、きれいな反射を表現することができるようになった。
Post Processに追加されたDiffuse Color Boostは、バウンスの光量を増幅する機能。数値を上げることで間接光を明るくできる。内部的には間接光部分のDiffuse Colorを明るくするという処理をしているので、上げすぎると物理的に正しくない部分も発生する。そういったことを頭の片隅に入れて使ってほしいとのこと。
Skylight Leakingも明るさ系の新機能。完全に閉じられた空間のようにスカイライトが当たらない場所であっても、スカイライトを照らすことができる。スカイライトが回りきらない部分を明るくしたり、間接光部分を少し持ち上げたいときなどに便利な機能だ。
そのほかにもLumenの改善点として
・Scene Captureのサポート
・ノイズの改善
・サーフェスキャッシュのアルゴリズムの改善(UE5.0よりも小さなオブジェクトや少し入り組んだメッシュでもサーフェスキャッシュが生成されるようになっている)
・Vulkanでのハードウェアレイトレーシングをサポート(実験的機能)
などが挙げられた。
なお、Windowsでハードウェアレイトレーシングを使用する場合は、Windows 10以上が必要になったので注意してほしいとのことだ。
Nanite
NaniteでもTwo Sided、Masked、World Position Offsetなどのマテリアルの機能をサポートしている。Foliageにも対応したのでLumen、Naniteともに自然系のシーンが以前よりも構築しやすくなっている。
また、Naniteに未対応である半透明などの機能や、過去のアセットでNanite用に作っていないメッシュなどが混在している状況への対応も進んでいる。Naniteと非Naniteのハイブリッドワークフローを改善するための4つの機能が紹介された。
1つ目は、既存のメッシュにNanite用のメッシュをインポートできるようになったこと。Nanite使用時はインポートしたそのメッシュが使用され、NaniteがOFFのときやFallback Meshが使用される状況では、元のメッシュと元のLODが使われる仕様になっている。
2つ目は、マテリアルインスタンスのマテリアルプロパティにNanite Override Materialという項目が追加されたこと。このスロットにマテリアルをセットした場合、Naniteが有効なメッシュではここにセットしたマテリアルが使用される。
3つ目は、Static Mesh ComponentにDisallow Nanaiteという機能が加わったこと。チェックを入れることでNaniteを無効にできるので、レベル上でもアクターごと、Static Mesh ComponentごとにNaniteのON/OFFを切り替えられる。
4つ目は、マテリアルノードにNanite Switchが追加されたこと。Nanite不使用のときはデフォルトに入力した値が使用されて、Nanite使用時はNaniteに入力した値が使われる。
1つ目の「既存のメッシュにNanite用のメッシュをインポート」以外の3つは、Naniteが非対応なマテリアルの機能などを使うときに活用できるだろう。
Hidden Shadowにも対応した。影用のメッシュをNaniteメッシュにできるので、VSM(仮想シャドウ マップ)のパフォーマンスの向上にも繋がる。
Naniteを使用したInstanced Static Mesh Componentで、距離(ディスタンス)カリングが動作するようになった。
実験的機能ではあるが、LandscapeをNanite Mesh化できるようになった。LandscapeアクターにNaniteの項目が追加されており、Enable Naniteにチェックを付けてRebuild Dataを押すことで計算が走り、Naniteメッシュに変換できる。地形作成時に山をスタティックメッシュとして読み込んでNanite化するという使い方があるとのこと。
もうひとつ実験的な機能ではあるが、スタンドアローンレイトレーシングとパストレーサーでもNaniteを使用できるようになった。以前はNaniteが対応しておらず、Fallback Meshが使用されていたが、コンソールコマンドr.RayTracing.Nanite.Mode 1を使用することでパストレーサーなどでもNaniteメッシュを使用できる。
Naniteの最後の注意点としては、UE5.1からはNaniteを使用するのにDirectX 12でShader Model 6を有効にする必要があるということ。エディタ起動時に右下にアラートが出てくるので気付くかと思うが、Naniteが機能しない場合は上記を確認するとよいだろう。また、Lumenと同様にWindowsで使う場合はWindows 10以上が必須となっている。
Path Tracer
Path TracerではついにExponential Height FogとSky Atmosphereをサポートした。Height FogはVolumetric Fogを有効にすることで使用できるが、正確にはVolumetric Fogのサポートであって、通常のHeight Fogと同じような挙動ではない。Sky AtmosphereはPost ProcessのReference Atmosphereという設定を有効にすると使用できる。ただし、こちらを有効にするとVolumetric Cloudが表示されなくなるので注意が必要だ。ということでHeight FogもSky Atmosphereも、どちらも完全なサポートというより制限があるような状況となっている。
Planar Decalsも通常のLumenなどのレンダリングと同じように使用することができるようになった。
Per-Instance Custom DataとPer-Instance Random Material Expressionsもサポートした。Instanced Static Meshなどでインスタンスごとに値を与えたり取得したりできるので、例えばインスタンスごとに色をランダムに振り分けるなどといったことがPath Tracerでも実現する。
Light Functionもサポートした。Path Tracerのみの対応だが、コマンド r.PathTracing.LightFunctionsColor 1 を使用すると、色付きのライトファンクションを使えるようになる。
マルチGPUは、nDisplayディスプレイやGPU Lightmassで対応している状況だったが、Path Tracerでも使用できるようになった。これによりPath Tracerのデメリットであるレンダリング時間を短縮できる。使用するにはNVLink SLIを有効にした上で、コマンドを入力する。例えばUnrealEditor.exeのショートカットを作成し、ターゲットのパスの末尾に-MaxGPUCount=2(GPUの数が2という数値)を入力して、ショートカットから起動して使用可能になる。最後にコンソールコマンドr.PathTracing.MultiGPU=1を使用することで、マルチGPUでPath Tracerをレンダリングできるようになる。
実験的機能ではあるが、Path Tracer用のデノイザとしてOpen Image Denoiseのほかに、OptiX Denoiseが加わった。OptiX DenoiseはGPU駆動の機械学習を用いた、より早いAIデノイザである。NVIDIA製のGPUでのみ使用可能。プラグインを有効にした上でコンソールコマンドのr.PathTracing.SpatialDenoiser.Type1にすることで使用できる。
ちなみに、このコンソールコマンドはデフォルトでは0になっており、Open Image Denoiseが使用されるようになっている。向井氏が個人的に比較してみた印象としては、確かにOptiXの方が計算は早いが、Open Imageの方がデノイズによるボケ具合が少ないような印象だったとのこと。今後のリリースに期待してほしい。
Path Tracerでより正確なモーションブラーを実現するために、ムービーレンダーキュー(MRQ)にReference Motion Blurというオプションが追加された。従来はPath Tracerでブラーを得ようとすると、デノイズが効き過ぎてぼやけた気味になることがあったが、Reference Motion BlurによってPath Tracerでもきれいなモーションブラーを表現できる。
使用するには従来のブラーと同様に、Anti-aliasingオプションのTemporal Sample Countの値を上げる必要がある。この値を上げれば上げるほど、滑らかなモーションブラーを得ることができる。
Strata
Renderingの新機能の最後は、UE5.1で追加された実験的機能のStrata Materialについて説明があった。現在、マテリアルはパフォーマンスやハードコードされたシェーディングモデルなど、リアルタイムならではの縛りや制約がある状況だ。それに対し、Strataはプリレンダリングのシェーダのように表現の幅を広げ、アーティストがより自由にマテリアル作成できることを目指せる、新しいマテリアルオーサリングシステムとなっている。
プロジェクト設定からStrata Materialを有効にすると使用できるようになる。有効にすると、既存のマテリアルにStrata用の紫色のノードが追加され、Strata用のリザルトノードとなる。この紫色のStrataノードをリザルトノードのフロントマテリアルに繋ぐのが特徴的な部分だ。
では、具体的にどのようなことができるかというと、例えばSubsurfaceが効いたマテリアルの上にClear Coatを乗せる、というようなことが実現可能だ。今まではSubsurfaceとClear Coatは別のシェーディングモデルを選択する必要があり一緒に使うことはできなかったが、Strataではシェーディングモデルを指定する必要がないため、別のシェーディングモデルも一緒に扱うことができ、わざわざシェーディングモデルを切り替えることもない。
プリレンダリングのシェーダではFuzzなどのパラメータがあるが、Strata Materialにも同じような布の表現に役立つパラメータがある。今まではフレネルを組み合わせて疑似的な表現をすることが多かったが、Strataでは簡単に表現することができる。
Strata MaterialのThin-Filmでは油膜のような表現や玉虫色のような遊色効果を表現できる。従来はテクスチャで疑似的に再現したり、少し複雑なマテリアルを組んだりする必要があったが、このような表現をするノードが準備されているので、簡単に作成できます。
Strata MaterialのRough Reflectionでは曇りガラスのような表現ができるようになった。こちらも今まではかなり難しかったが、下図のようなノードで単純にラフネスの値を上げることで表現することができる。
Editor Tools
Editor Toolsの新機能のなかでもTexture、アナモフィック レンズ、Light Mixer、UV Editor、Pattern Toolと5つに分類して説明された。
TextureとTexture Asset Editorの改善
360度画像などをCubemapとして読み込んだときに、テクスチャエディタでくるくる回すことができるようになった。また、Cubemapの各面を見ることもできる。今までは32bitの画像をインポートした際に、16bitフロートとしてしか扱えなかったが、5.1からは32bitフロートとしても扱えるようになった。ただ、UE5.1ではスカイライトでは16bitとして扱われてしまうので注意が必要だ(今後、改善予定)。
アナモフィック レンズ
カメラレンズの設定にSqueeze Factor(スクイーズ倍率)というものが追加され、アナモフィックレンズ特有の縦に伸びたボケを表現できるようになった。また、フォーカス設定にクロップ設定が追加され、映画でよく使われる2.39:1などのシネスコープ的なクロップをすることができるようになっている。ちなみに、アナモフィックレンズの特有の青いレンズフレアは表現できないが、ブルームのコンボリューションを活用することで近しいレンズフレアの表現を行うことができる。
Light Mixer
Light Mixerという、レベル上のライトの管理や編集をまとめてできる機能が追加された。レベル上のライトがリストに追加されて、まとめてパラメータやプロパティを変更できる。Blueprintのライトコンポーネントもきちんと表示される。キャストシャドウの項目など、ここにないプロパティは別途追加が可能。また、任意のライト群をフィルタリングできる機能があるので、Outlinerでライトを探したりする手間が省けて管理や編集も楽になるだろう。
UV Editor
UE5.0でDCCツールと同じようなUVエディタが追加され、Unreal Engine上でもUV展開、編集ができるようになったが、UE5.1での大きな改善はUDIMをサポートしたことと、実験的機能からBetaに変更された点だ。まだDCCツールと同じレベルのUV Editorとはいえないが、CADなどUVがないモデルで簡単にUVを追加するときや、既存のUVを修正する際などに役立つと思われる。
Pattern Tool
基礎的なメッシュの配置が手軽にできる、Pattern Toolが追加された。3D平面上でのタイル上での配置、横並びもしくは円形での配置を行うことができ、同時に回転やスケールも規則的に変化させることができる。配置したメッシュはひとつずつのアクターに分ける方法、ダイナミックメッシュにする方法、インスタンス化する方法などを選択可能なので、そのプロジェクトシーンに応じて出力できる。
Cinematic〜映像関係に関する機能
Cinematicの新機能のなかでもIn-Camera VFX Editor、Media Plate、シーケンサー、MRQ、nDisplayと5つに分類して説明された。
In-Camera VFX Editor & Light Card System
In-Camera VFXのステージオペレーター向けのUIが追加された。ステージやスタジオでよく使われるような操作を集約しているものになる。nDisplayへの投影確認、全体でのカラーコレクション、ビューポートごとのカラーコレクションを行える。
Light Card Systemはアクターなど実写のものを照らすための照明効果を追加するための機能だ。丸や四角のライトを追加したりそれをボカしたりできる。ライトはテンプレート化し、必要に応じて機能を呼び出せる。また、スフィア上のカラーコレクションの機能を利用して、部分的にカラーコレクションできる。アクターごとにカラーコレクションを適用することも可能だ。
Media Plate & EXR Plate(Beta)
Media Plateは、動画や連番画像の再生が簡単にできるプラグインだ。カメラで表示されている部分のみをストリーミングしたり、ミップマップを使うことでよりパフォーマンスよく再生できるのが特徴。
Cine CameraにClipping Plane機能が追加された。引きのカメラ撮影や焦点距離を伸ばしたいときなどに、近くのものをレンダリングできるようになるので、クリッピングされてしまうのを防ぐことができる。
シーケンサー
Live Link Face CSV Importer pluginという機能がBetaとして追加された。従来のフェイシャルキャプチャは、iOSとUEの間でリアルタイムの通信が必要になるため通信環境を整える必要があった。今回、このプラグインが追加されたことでiOSでキャプチャ時に生成されるCSVをUEにインポートし、それをシーケンサーで再生できるようになった。
実験的機能ではあるが、Pixel Streamingの技術を使ってバーチャルカメラをストリーミングできるようになり、今までより低いレイテンシーで操作可能になった。ブラウザから使えるので、アプリを提供していないAndroid端末でも使うことができる。
もうひとつ実験的機能としてCinematic Prestreamingが追加された。この機能では事前にムービーレンダーキューを使ってキャッシュを生成しておくことで、シーケンサーの再生時に確実にストリームし、バーチャルテクスチャのボケなどを回避することがでる。プラグインを有効にすると、ムービーレンダーキューのオプションにCinematic Prestreamingというオプションが追加される。これを有効にしてレンダリングすることで、レンダリングしたシーケンサーに自動的にキャッシュが追加され、再生することでキャッシュを使用することができるようになる。
MRQ(ムービーレンダーキュー)
MRQ(ムービーレンダーキュー)周りでいくつか改善点を紹介された。まずは、ひとつのシーケンサーから複数のカメラの映像をまとめて書き出せるようになったこと。UE5.1からMRQのカメラオプションのRender All Camerasを有効にすることで、カメラトラックへのバインドに関係なくそのシーケンサーに含まれているカメラの映像を書き出せる。また、書き出し先のディレクトリやファイル名の設定として {camera_name} を追加することで、そのカメラの名前でファイル名などを設定できる。
次に、MRQでOrthographic(平行投影)の画像を書き出せるようになったこと。ただしこちらはFXAAを有効にしたPath TracerとDeferred Renderingでのみ使用可能だ。その他のアンチエリアシングの設定や高解像度(タイル)レンダリングでは使用できない。
そして、Movie Render Queue for nDisplayによってconfigのビューポートの構成で映像を書き出せるようになった。ただし1枚の画像にまとめるのではなく、ビューポートごとに書き出される。バーチャルプロダクションなどでも、高品質な映像をオフラインで書き出して、コンポジット用の素材やCGのみのカットに使ったり、もしくはバックアップとして使ったりすることを想定している。そのためより多くの選択肢を提供することを意識しているとのことだ。
nDisplay
nDisplayやインカメラ(IC)VFXでもLumenをサポートした。各ビューポートで独立したLumenシーンが使われるようになっている。
Betaではあるが、Switchboardを使用せずにエディタ上からnDisplayを起動できるようになった。いい意味でも悪い意味でもクラスタを使用せずローカルでの起動なので、ローカルでの確認やデバック向けの機能となっている。nDisplay Launchというプラグインを有効にすることで、エディタ上にアイコンが表示され、簡単に起動できるようになっている。
Other
本セッションの最後はプラットフォームやパイプライン周りの更新について、Pixel Streaming、XR、Datasmith、LiDARと4つに分類して説明があった。
Pixel Streaming
UE5.0まではフロントエンドやシグナリングサーバー周りに関するスクリプトがエンジンの中に格納されていたが、UE5.1からはGitHubに移行した。Pixel Streamingのフロントエンドやサーバ周りに関しては、UEのアップデートとは切り離した状態でこちらのリポジトリで更新されていくという。
エディタ上部のメニューにPixel Streamingの項目が追加され、こちらから簡易的にシグナリングサーバを立てられるようになった。ローカルでデバッグしたい際などに役立ち、非エンジニアでも扱いやすくなると思われる。
ちなみにStream Level EditorとStream Full Editorは、Pixel Streamingでエディタを操作できるようになっている。
Editor Viewport Window Streamingという実験的機能では、ブラウザからエディタを操作できる。下図はローカルで試したものだが、ChromeからストリーミングしてそしてUnreal エディタを操作している。注意点として、まだマルチディスプレイの対応はしておらず、今後機能やユーザーエクスペリエンスを改善していく予定となっているとのこと。
XR
実験的機能ではあるが、XRでもNanite、Lumen、TSRをサポートした。まだ実プロジェクトでの使用は勧められないが、ぜひ試してほしい機能だという。また、現状はPCでのDeferredレンダリングでのみ使用できるようなっている。
エピック ゲームズ ジャパンではOculus VRやStreamVRプラグインの開発を現在は行なっておらず、OpenXRに移行しているとのこと。そのためOculus VRやStreamVRを使ったプロジェクトではOpenXRプラグインを使って欲しいとの注意喚起があった。またその際は、機能がバッティングする可能性があるので、Oculus VRやStreamVRプラグインは無効にするように。
HoloLensも同様にWindows Mixed Reality Pluginが削除されており、Open XRに移行している。なお、UE5.1以降でHoloLensを使用するプロジェクトを開発するには、Windows Mixed Reality OpenXR RuntimeやMicrosoft OpenXR Pluginのインストールが必要になる。
XRの最後にインプット周りについて。インプットの設定がより管理しやすく、より柔軟に設定できるEnhanced inputというものがあったが、これがOpenXRにも対応している。特にVRプロジェクトでは、様々なヘッドマウントディスプレイへの対応が必要になるのでインプットの管理が大変だったが、Enhanced inputに対応したことにより、柔軟に設定管理できるようになった。
Datasmith
3ds MaxのDatasmith pluginが改善された。大きな変更点としては、リボンにDatasmithのメニューが追加され、Direct Linkもサポートして3ds Maxの作業とUnreal Engineの作業を同時にできるようになった。注意点として、日本語のUIだとリボンが表示されないバグがあるので、英語のUIで使用すること。なお、このバグはUE5.1.1で修正対応予定となっている。
Revitでもいくつか改善点がある。Direct Linkは以前からあったが、3ds Maxと同様にAuto Syncが追加されて自動的に変更を感知し、反映されるようになった。さらに、どのビューをエクスポートするかの指定、Revitデカールのコンバートなどもサポートされている。
また、Revitのサブスクリプションライセンスを持っていればTwinmotionを無料で使用できるようになった。RevitからTwinmotionにデータを簡単に持っていく機能や、TwinmotionからさらにUEへデータを持っていくプラグインも提供されているので、より選択肢が増えて効率性や表現の幅が広がるだろう。
DatasmithでのCADファイルのインポートの変更について。TessellationというCADをポリゴンに変換する処理が、UE5.1から2つのメソッドから選択できるようになった。現状、デフォルトではサードパーティのものを使用しているが、コンソールコマンド ds.CADTranslator.DisableCADKernelTessellation 0 を使うことで、Epic Gamesが開発しているCADカーネルを使用することができる。
LiDAR
最後に点群の扱いに関する改善について説明があった。点群の編集は以前から少しできたが、編集がレベル上でもできるようになり、編集機能も増えた。プラグインを有効にすることでLiDAR Modeが追加され、編集することができる。例えば部分的な表示・非表示、別の点群のアセットとのマージ、コリジョンの追加などをLiDAR Modeから行うことができる。
LiDARには選択モードも複数用意されている。矩形の選択、選択部分の追加・削減、多角形での選択やなげわでの選択のほか、ペイントでの選択もできるようになっている。
選択された点群の部分をスタティックメッシュに変換することもできるようになった。作成されるメッシュは今回のリリースでは点群の見た目そのままをメッシュ化するものとなっているが、将来的にはより良い変換をできるようにしていく予定とのこと。
デフォルトでは、点の上に配置されている正方形や丸の表示がカメラの方向に向くようになっているが、ノーマルの方向に向けることができるようになった。ノーマルの方向に向けることで、よりメッシュのような見た見た目にすることができて、見た目の品質の向上につながる。
新機能の紹介は以上となった。「その他の機能や情報はリリースノートや各ドキュメントをご覧いただけますと幸いです。ロードマップでもざっくりとした作りと追加された機能を確認することができますのでご覧ください」という向井氏の挨拶でセッションは終了した。
講演動画
講演スライド
TEXT&EDIT_園田省吾(AIRE Design)