PaperSloth’s diary

主にゲーム開発関連についての記事を書きます。

UE5 起動から初めの1歩 Lumen/Naniteを体験してみよう

環境

UE5.0.0

はじめに

UE5のEarly Access について以下のdocに対象ユーザーの説明があります

Unreal を初めて使用されるユーザーの方は、UE5 が製品版としてリリースされるまでは、まずは、UE4 で学習することをお勧めします。

Unreal Engine 5 早期アクセスへようこそ | Unreal Engine ドキュメント

理由としては大きく2点挙げられます
1. UE5はUE4と比較して公式の学習資料がまだ充実していない
 リリースされたばかりなので、そのとおりですね
 これによって困る点として初学者の方が躓いた際に
 エンジン側の問題なのか実装上の問題なのか調べてもヒットしにくく
 何かを始めようと思った際に資料が少なくて手詰まりになってしまう等があげられます

2. 新機能やワークフローが変更される可能性がある
 UE5はまだEarly Access段階ですので、UIが変わったり致命的な変更が発生する恐れもあります
 仕事で既にプロトタイプを作成されている方などであれば、そこを理解しているので何も問題がないとは思いますが
 初学者の方でこの状態にハマるとどうやって同じ機能を実現するのかが分からなくなったりと
 コンテンツ作成外の分野で詰まってしまって時間がもったいないです
 そのため、先ずはUE4を学習するか上記を理解した上で両方に触れられるのが良いでしょう。

UE5について

UE5はEarly Access と書かれているように
まだ正式リリースされたものではありません。
そのため、以下の公式ブログにあるように実プロダクトではまだ利用すべきではないです

この早期アクセスビルドは新機能をテストして、将来のゲームのプロトタイピングを開始したいと考えている最先端を目指すゲーム開発者に向けたものです。

さて、気になる正式リリース日ですが
そちらについても下記の公式ブログに記載があります
2022年初頭を予定されているようですので、ちょうど1年先くらいになるでしょうか。

すべての業界のクリエイターを助ける追加の新機能を含むフルリリースは 2022年初頭に行いたいと考えています。

Unreal Engine 5 の早期アクセスがリリースされました! - Unreal Engine

UE5をインストールしてからやること

やること というと少し乱暴な口調ですが
UE5をインストールしてみたけど、何から手を付ければいいか分からないという方に向けて助けになればと思います。

先ずは何事も公式doc を参照するのが一番ですね
EGJ(Epic Games Japan)のローカライズチームの方々の仕事は本当に早く
既に日本語のドキュメントが用意されています
Unreal Engine 5 早期アクセス ドキュメント | Unreal Engine ドキュメント

次に道標となるのはOnlineLearningとなるかと思います。
現在2つのコースが用意されています。
先ずはUE4をこれまでに触れてきた方やUE4でプロジェクトを既に作成されている方向けですね
UIや機能など、従来のUE4からUE5に向けての変更点について学ぶことができます
UE5 早期アクセスへのアップグレード - Unreal Engine

次にUE5のQuickStartです
エディタの概要やパッケージ作成方法等を学ぶことができます
UE5 早期アクセス クイックスタート - Unreal Engine

UE5のインストール方法についてはヒストリアさんのブログが手助けになるでしょう
[UE5] Unreal Engine 5の導入手順|株式会社ヒストリア

UE5を起動した!次は?

まずはUE5の大きな更新内容から見ていきましょう
Unreal Engine 5 早期アクセス リリースノート | Unreal Engine ドキュメント
よく注目されているものとしては下記があげられます

  • Lumen による動的GIおよびReflections
  • Nanite によるVirtualized Geometry
  • 次世代Shadow Virtual Shadow Maps
  • Temporal Super Resolution
  • World Partition
  • Full Body IK Plugin
  • Motion Warping
  • MetaSound
  • Chaos Physics

...etc

今回はこの中でもお手軽に体験できるLumenとNaniteについて紹介させていただきます。

まずはUE5を起動していつものようにThirdPersonTemplateでProjectを作成します
f:id:PaperSloth:20210608120300p:plain

Lumenを使ってみよう

実はUE5を起動した段階で、何もしなくてもLumenが有効になっています。
まずは設定の確認から
「Edit -> Project Settings... 」から設定を開きます
f:id:PaperSloth:20210608125817p:plain

設定内の「Engine / Rendering -> GLOBAL ILLUMINATIOON | REFLECTIONS」内で
Dynamic GIとReflectionでLumenが選択されています。
f:id:PaperSloth:20210608125904p:plain

早速LumenのDynamic GIの機能を見てみましょう
f:id:PaperSloth:20210608130105p:plain
「Create -> Shapes -> Sphere」で適当な球体をLevel上に配置します

続いてContentDrawer内で新規にMaterialを作成します
f:id:PaperSloth:20210608130234p:plain

名称は「M_EmissiveSphere」としました。
Material Editorを開いたら「V + 左Click」で
新規に「Vector Parameter」のノードを作成し、「EmissiveColor」と名付けました
f:id:PaperSloth:20210608130413p:plain

そのまま「Emissive Color」につなぎます
f:id:PaperSloth:20210608130441p:plain

「EmissiveColor」ノードを選択した状態で
Details Panelからデフォルト値を「10, 7, 0, 1」に設定しました
f:id:PaperSloth:20210608130605p:plain

ここで一旦このMaterialを保存して閉じます。

Level Editorに戻って、Sphereを選択した状態で先程のMaterialを割り当てます。
emissive で検索をかければ出てくるため、こちらをSphereに割り当てます。
f:id:PaperSloth:20210608130752p:plain

この段階でも既にLumenの恩恵を受けれているのですが
もう少しいじっていきます
f:id:PaperSloth:20210608130843p:plain

Level上の床に置いてあるFloorをDuplicateして天井を作成します。
Floorを選択した状態で「Alt」を押しながら床を移動させるとDuplicate(複製が可能です)
このまま上に移動して天井にします。
f:id:PaperSloth:20210608131215g:plain

再度Sphereを選択して「Simulate Physics」にチェックを入れると
物理が有効になって球がコロコロと転がるようになります
f:id:PaperSloth:20210608131335p:plain

f:id:PaperSloth:20210608131631g:plain

これだけ見てもイマイチLumenの機能が分からないという方も多いでしょう
そこで先程のProjectSettings内のLumenをNoneに変更してみましょう
f:id:PaperSloth:20210608155154p:plain

先程と大きく結果が変わることが確認できました
f:id:PaperSloth:20210608155241p:plain

なんだか明るいですね。
こちらはLighting Buildが行われていないのでこのような結果になっています。
Build All Levels でビルドをすると以下のような暗い画面(正しい結果)が得られます
f:id:PaperSloth:20210608155652p:plain
f:id:PaperSloth:20210608155749p:plain

同様のLevelをUE4.26で作成したものが以下になります
f:id:PaperSloth:20210608155856p:plain


Dynamic GIの効果によって、EmissiveのMaterialの光り方が大きく変わるのが見て取れたと思います。

以上、大変簡潔にでしたがLumenについて触れてみようという内容でした。
コーネルボックスを作ってみたり、暗闇の中で光を頼りに進むタイプのゲームなど色々作ってみてはどうでしょう。

実際にはDynamic GIによって変わるものというと、Emissiveだけでなく
SkyLightの遮蔽によって屋内のライティングがよりリアルに近しいものになったり
ライトの照り返しが別のオブジェクトにリアルに反映されたりと
Emissive以外にも様々な描画結果の違いを得ることができます。

Naniteを使ってみよう

Naniteを使用する前に、まずはQuixel Bridgeの準備を整えようと思います。
UE5にQuixel Bridgeをインストールしましょう
インストール方法はLauncherからQuixel Bridgeを検索してUE5にインストールするだけです。
f:id:PaperSloth:20210608162250p:plain
f:id:PaperSloth:20210608162306p:plain

続いてUE5 Editorを立ち上げて、Pluginsを開きます
f:id:PaperSloth:20210608162526p:plain

Installed タブ内のBridgeのEnabledにチェックが入っていれば使用準備が整いました。
f:id:PaperSloth:20210608162634p:plain

Quixel Bridgeの使用方法はContentから呼び出すか
f:id:PaperSloth:20210608162714p:plain

Content Drawerから呼び出すことができます
f:id:PaperSloth:20210608162747p:plain

適当なAssetを選択してDLすると
Content/Megascans 以下にアセットが追加されます。

今回は適当な岩を持ってきました
f:id:PaperSloth:20210608163203p:plain


前置きが大変長くなりました。
ようやくNaniteの出番です。
まず、今回DLしたアセットのデータを確認します。
以下のようなMeshデータです。
Triangles : 4606
Vertices : 3141
f:id:PaperSloth:20210608163320p:plain
f:id:PaperSloth:20210608163313p:plain

このMeshに対してNaniteを有効にします。
Detailsタブ内のNANITE SETTINGS からEnabledにチェックを入れて
Apply Changes を押下します。
するとMesh情報が以下のように変更されました。
Nanite Enabled
Triangles : 1999
Vertices : 1504
f:id:PaperSloth:20210608163441p:plain
f:id:PaperSloth:20210608163451p:plain

3角形ポリゴンの数が半数以下になりましたが、スクリーンショットを比較した限りでは大きな遜色も見られません。

とても便利なNaniteですが、1点注意点があります。
Naniteは現在Masked Material には対応しておりません。

そのため、Naniteを有効にする前にMaterialのBlend ModeがOpaqueかどうかを事前にチェックされることを勧めます。

まとめ

本当にふわっと触りだけでしたが、ざっくりとLumenとNaniteについて触れていきました。
UE5は今後のアップデートも楽しみで魅力的な機能に溢れています。
ですが、最初にも述べたようにこれからUnreal Engine に触れてみようと思っている方には
まずはUE4Unreal Engineの文化に触れてもらうのが良いかなと思います。

多少UI等に変更はあるものの、UE4.26で作成したProjectはUE5に移行することも可能ではありますし
ベースとなるエンジンの根幹の考え方、BlueprintやMaterial等についての知識が流用できます。

逆にUE4に既に詳しい方にはどんどんとUE5に触れていただいて
最新のアップデート情報を広く共有いただけるとUE5ユーザーみんながハッピーになります!

ざっくりとでしたが、以上です。

おまけ

Lumenの効果がより分かるGifを用意しました

  • 変更点

・球を置いたLevelから球を削除
・SkyLightのIntensity Scaleを1.0 -> 10.0 に変更
f:id:PaperSloth:20210608171349g:plain