3月末にリリースされたUnreal Engineの最新バージョン4.22に、試験的な機能としてついにリアルタイムレイトレーシングが実装された。これにより、ゲーム業界のみならず、様々な映像制作の業界から改めてUE4に注目が集まっている。4月24日(水)に開催された「UE4 Ray Tracing Night @ Tokyo」ではEpic Games Japan後援のもと、この新機能の紹介とともに様々な業界からリアルタイムレイトレーシングによってどのような効果が期待でき、どう仕事に活用できるのかといったユーザー視点からの情報交換が行われた。
TEXT&PHOTO_安藤幸央(エクサ)/ Yukio Ando(EXA CORPORATION)
EDIT_小村仁美 / Hitomi Komura(CGWORLD)
<1>UE4のレイトレで出来ること/出来ないこと by もんしょ
イベント主催者のもんしょ氏
まず最初にUE4やSubstance製品、DirectXなどを幅広く解説するWebサイト「もんしょの巣穴」管理人のもんしょ氏より「UE4のレイトレでできること/できないこと」という観点で、リアルタイムレイトレーシングの使い方、パストレーシングとの違い、レイトレーシング関連の各機能紹介といった技術的解説が行われた。
●リアルタイムレイトレーシングの使い方
まず、UE4.22から実装されたばかりのリアルタイムレイトレーシングは、「Experimental」と呼ばれる試験的な実装であるため、いろいろと不十分な部分もあるが、とても期待できるともんしょ氏は述べた。使用する環境としてはWindows 10(2018 October Update以降)、NVIDIA Turing、Volta世代以降のGPUもしくは一部のPascal世代GPU(Titan V、GeForce RTXシリーズ、GTX 1060以上)が搭載されている必要がある。UE4.22の起動オプションで -dx12 を追加していくつかの設定を有効化し、再起動すると使える状態になる。デバッグコマンドは r.RayTracing、r.PathTracingにまとまっている。
●リアルタイムレイトレーシングとパストレーシング
レイトレーシングは視点と方向をもった光線(レイ)を追跡する技術。パストレーシングは光の経路(パス)を追跡する技術。レイトレーシングを使って映像を作成する方法を「パストレーシング」と呼ぶ。パストレーシングはレイトレーシングの一種とも言える。UE4にはリアルタイムレイトレーシングとパストレーシングの機能があるが、何がちがうのだろうか?
UE4でいうところの「パストレーシング」機能は、レイトレーシング計算のみで映像を生成する。これは本来のパストレーシングの意味と同じもの。一方でUE4の「リアルタイムレイトレーシング」は一部の映像表現のみレイトレーシングを用い、基本的なレンダリングには従来型のラスタライザを用いているものである。
内部的には Microsoft の DirectX Raytracing (DXR) を用いてハイブリッド描画を実現している。DXRはDirect3D 12 の拡張機能で、ラスタライザでは表現が難しい、スクリーンに映っていないものの反射や映り込みなどを考慮した映像づくりに向いている。
●リアルタイムレイトレーシングで使える技術
リアルタイムレイトレーシングで描画できるものと描画できないものがある。描画できるものは限られているため、どんなシーンでもリアルタイムレイトレーシングが使えるわけではない。また描画できたとしても状況によって全ての機能が使えるわけではないので、注意が必要とのこと。
●UE4で使えるリアルタイムレイトレーシングの技術
続いて、UE4.22で利用可能なレイトレーシングの技術についてそれぞれ解説が行われた。レイトレーシングAO(アンビエントオクルージョン)は、SSAO(Screen Space Ambient Occlusion) の代替として利用できる。レイトレーシングAOの方が自然な描画。レイトレーシングしたままではノイズが多く、デノイズ処理を施すことで多少レイの数が少なくても品質が良くなる。逆にデノイズ処理が重くなる場合は、レイの数を増やして対処する。
レイトレーシングAOとスクリーンスペースAOとの比較
リフレクション(反射)はリアルタイムレイトレーシングの目玉機能。SSR(Screen Space Reflection)の完全反射は粗が目立つためぼやけた反射にすることが多いが、リアルタイムレイトレーシングの場合は完全反射の方が有利に働く。
レイトレーシングリフレクションは、合わせ鏡のような処理ができる。MaxBouncesの設定ができ、通常は1なので真っ黒になってしまうが、4回ほど反射させると、合わせ鏡っぽい表現が可能だ。ぼやけた反射の場合、ピクセルごとのサンプル数1、4、16の3つのケースでは相当描画品質が異なり、1、4のケースはノイジーすぎて使えない。
リフレクション表現のサンプルピクセル数によるちがい
レイトレーシングでのシャドウは、動的シャドウ(シャドウマップ)の代替として使える。ライトごとに設定が可能でシャドウマップとレイトレーシングシャドウの両方を使うこともできる。ただ、スタティックライト向けには無効で、スタティックライトの場合のシャドウは焼き付けのみ。Source Radius の設定でソフトシャドウの実現が可能になる。
レイトレーシングシャドウと、シャドウマップの比較
このシャドウは、光源のサイズがあるような場合に有効に機能する。スポットライト処理や半影、ソフトシャドウがきれいに表現されている。半透明の物体に対しては、根元に近い部分はちゃんとシャドウが出ていて、根元から離れている部分はソフトシャドウが弱く出ているという正しい表現になっている。
グローバルイルミネーションの機能はライトマップと併用も可能。静的なシーンであれば、処理が重いので、あまり使わない方が無難だと思われる。ピクセルごとのサンプル数16ぐらいでやっとノイジーな感じがなくなる程度だという。スクリーンパーセンテージを50%くらいまで下げて使うのがコツとのこと。
サンプル数、スクリーンパーセンテージのちがいの比較
スカイライトについては、通常のMovable Lightと異なり、遮蔽情報を使うことができる。ON/OFFはライト単位で、Cast Raytraced Shadowを有効化することで利用できる。デノイザーを ONにしてもサンプル数1、4ならかなりノイジーな描画になってしまう。だいたいサンプル数16ぐらいが現実的だろう。
スカイライトのサンプル数のちがいの比較
矩形ライトがONのときはレイトレーシングのみで照明計算が行われ、遮蔽も照明計算の中で行われる。デノイズされないためそのままではノイジー。やはりサンプル数16くらいが現実的。
矩形ライトのサンプル数による比較
「半透明なんてなくなればいいのに!」というもんしょ氏の発言が会場の笑いを誘ったように、半透明表現はオフラインレンダリングにおいて最も制作者を困らせる要素と言える。半透明の物体にぶつかった後にその先にレイを飛ばす数が少ないと、その先に何があっても無視してしまうことになる。そうなるとシーンの後ろの方の半透明物体が消えていってしまう。
レイトレーシングによる半透明表現は、ラスタライズ描画のときとは異なり、描画順序を意識する必要がない。透過レイのトレース回数を指定する方法で、指定回数以上になると計算が途中で打ち切られる。
半透明表現におけるサンプル数のちがいの比較
また、屈折表現をする場合、マテリアルのSpecularで調整することになるが、現行のUE4.22ではSpecular = 0.5 でガラスの設定になるはずが、なぜかガラスっぽくならないという現象が確認されているという。
なぜかガラスっぽい表現にならない事例
そして、リアルタイムレイトレーシングとは別に、リファレンス用としてパストレーサーが実装されている。これは先ほど説明したように、ラスタライズをまったく使わずに、レイトレーシングのみでレンダリングを行うもの。計算は重いので、この描画モードでインタラクティブに操作するのは現実的には難しい。「リファレンス」といわれているが、フレーム描画が進むと、おかしな状態になることもあり実際のところリファレンスとするのは厳しい。
リアルタイムレイトレーシングとパストレーシングの比較
その後、現状のUE4でのリアルタイムレイトレーシングの制約や処理速度について語られ、最後にまとめとして「リアルタイムレイトレーシングはいくつかの既存技術を代替していく」と述べたもんしょ氏。主にスクリーンスペース系の変化は大きいが、基本はやはりラスタライザによる描画。リアルタイムレイトレーシングによって、従来技術では対応できない表現が可能になる。例えば反射が顕著な例や、光源に大きさがある場合のシャドウにも良い結果を及ぼしている。
ただし、かなり制約がある。パフォーマンスの問題は顕著で、パフォーマンスを犠牲にすればできる表現もあるが、そもそも技術的にできないこともある。特に半透明表現やパーティクルの表現でリアルタイムレイトレーシングを使う場合、様々な問題が出てくる。Experimental(試験的)な機能であるため、ドライバやOSのクラッシュも伴う。不具合を見つけたらどんどんバグ報告してほしいと考えている、と発表をしめくくった。
●発表資料
次ページ:
<2>レイトレーシングで変わる? UE4での建築ビジュアライズ by 真茅健一
<2>レイトレーシングで変わる? UE4での建築ビジュアライズ by 真茅健一
真茅健一氏(Frames)
続いて登壇したのは、個人プロダクションFramesにて建築ビジュアライズを手がける真茅健一氏。建築ビジュアライズにおいて、UE4のレイトレーシングでどのような表現ができるのか、実際にデモシーンを作成したときに出てきた問題や、表現方法などが紹介された。
夜っぽい映像だが、レイトレーシングのリアルタイムGI(グローバルイルミネーション)は使っておらず、リフレクション、アンビエントオクルージョン、シャドウ、矩形ライトを利用。半透明は検証のため使用したが、品質の問題から一部ラスタライズを利用している部分もある。「今までは動的なライトは硬い影しか使えなかったが、綺麗にボケた影を使えるのが良い」(真茅氏)。距離に応じて影のボケ具合も変わるが、樹木が揺れているのに落ちる影は揺れなくなるなど、レイトレーシングを使うことで全てが良くなるというわけではないという。
●シャドウ(影)の表現
ドアなどの移動するオブジェクトのメッシュにもエリアシャドウが落とせるようになった。建築空間の場合ライトが多いためシャドウはとても重要な要素。椅子の下の遮蔽感が出るところや、鏡の映り込み表現が良くなったという。ただし、半透明表現はいま一歩で、鏡の中に映るはずの半透明オブジェクトが消えたり不透明として映ったりすることもある。半透明の小物が消えるならまだしも、椅子ぐらいの大きさのものが消えると辛い場合が多い、と語った。
●リフレクション(反射)の表現
リフレクションはツヤ感や鏡の表現に重要な要素で、デフォルトの設定だと計算がとても重い。画面に映らないものがあるため、いろいろと表現を変えていく必要がある。「いわゆるゲームっぽいアンビエントオクルージョンにならないように調整するのが難しかったが、リアルタイムレイトレーシングのAOであれば面倒なことをせずに綺麗な表現が得られる。ただし、万能ではなく、使いどころに工夫が必要」(真茅氏)。
●半透明の表現
レイトレースでの半透明の屈折は、正しい屈折率を入れてもガラスの屈折が正しく計算されていないという結果に。このあたりは今後のUE4のバージョンアップで改善されるかもしれない。
こうしたデモ映像制作での検証の結果、「全てをレイトレーシングで描くのは計算が重すぎて現実的ではない」と真茅氏は結論づけた。反射表現が重要なので、リアルタイムシャドウの活用など、表現を取捨選択する必要がある。VR表現でのリアルタイム表示であれば無理なことも、ウォークスルー映像収録のコンテンツであれば、計算時間がかかっても使える表現も多い。見映えのするデモはピカピカのマテリアルとマットな背景がポイントで、表現として上手く必要な要素がカバーされているのが重要。機能の使い分けをせず無計画につくると描画時間が大変なことになってしまう。
なるべくレイトレーシングを使って時間をかけて描画した例
半透明や屈折の表現が一般的なレンダリングとは大きくちがうのは問題だが、ライトマップの焼き込み作業から解放されるのはやはり大きな利点だと言える。床のギラギラ感や照明の調整といったたぐいの検証はやりやすかったので設計とかデザインフローでは役立つかもしれないとのこと。
「その表現にレイトレーシングは本当にいる?」と考えるのが大切で、ぱっと見は同じ描画でも計算時間が全然ちがう、という。「無計画に使うと大変なことになるので、機能を頭に入れつつ、負荷を削りつつ活用するのが重要。建築ビジュアライゼーションはゲームとちがいハードの制約は少ないので、ハイエンドのマシンを使って次世代ビジュアルのコンテンツを探求できる可能性は大いにあります」と真茅氏は今後への期待を述べた。
レンダリング手法によってそれほど結果にちがいがない例
●発表資料
<3>UE4のレイトレを映像出力に使ってみる by コンノヒロム
コンノヒロム氏
コンノヒロム氏は CINEMA 4DをメインツールとするCGアーティストで、CINEMA 4Dに関する著作を多数もつ。コンノ氏がUE4を使って自分の手持ちの3Dデータを読み込んでみたり、目的をもって使い始めたのは今回が初めてとのこと。
非リアルタイムに映像を出力するのであれば、レイトレーシング設定をいくらでも重くしても良いのでは?と考えて使っていったという。確かにリアルタイム描画よりは描画が重くなるが、通常のオフラインレンダラとは段ちがいのスピードだったとのこと。今回はCINEMA 4Dで作ったデータをFBX経由で読み込み。キャラクターモデルは自作のもの、背景モデルは素材サイトDaz3Dで購入したものを使用した。
フレームレート度外視で、レイトレーシング機能を駆使した映像表現
Daz3Dの「The Green Room」というモデルを背景に使用
非リアルタイム利用なのだから、レイトレーシング設定をどこまでも高画質・重くしても良いだろうと考えたが、実際Unreal Editorが落ちて使えなくなってしまうことがあったという。これは、Windows OS側の制御で、描画がある程度遅くなるとアプリケーションが動いていないと判断して、Unreal Engineを落としてしまうことによるもの。これに対処するにはWindows OSのレジストリキーの修正が必要とのこと。
レンダリング時の主要プロセスのパラメータは Post Process Value で設定できる。描画テストの際に毎回「高品質で重い描画」と「低品質で軽い描画」を切り替えるのは面倒なので設定済みのプロセスセットをいくつか用意しておくと便利に使える。コンノ氏は「レイトレテスト用」「レイトレ本番用」といったようなセットを作り、切り替えて利用したとのこと。描画設定を「高品質で重い描画」にした際はビュー上でのリアルタイム操作をあきらめ、動かすときにはワイヤフレーム表示にしてしまう、という割り切りが必要だったという。
最終的な画質としては、素のレイトレーシングの結果にデノイズやアンチエイリアスをかけるとそれなりに良好という結果。RTGI(Realtime Raytraced Global Illumination)のサンプル数の上限は64で、オフラインレンダラの常識からするとかなり少ない方だが、その割には綺麗な描画だとコンノ氏。
素の状態(左)に、順にGI Denoise、Temporal AA、Screen Percentage 200%を重ねていった結果
素の状態から、デノイズ、Temporal AA、スクリーンパーセンテージによるスーパーサンプリングを施し画質を上げていく過程が紹介された。Temporal AAは時間的なアンチエイリアシング機能。FXAA(Fast Approximate Anti-Aliasing)はそれなりに有効だが、1フレームごとにノイズがザラザラするため使いものにならない。Temporal AAはカメラがあまり動かない場合には画質に貢献する。
しかし、Temporal AAには効果が出るまでにタイムラグがある。そのため、カットの冒頭や動きのある部分にどうしても残像が残ってしまう。対策としては、UEのシーケンサー上の[ムービー出力設定→Animation→Warm Up]のDelay Before Shot Warm Upの値を0.3程度に設定すると、レンダリングの出力範囲の先頭からTemporal AAが効くようになる。ただしカットが切り替わる場合には、このパラメータでは対策できなかったとのこと。
続いて、[Post Process Volume→Misc→Screen Percentage]の値を200%に設定。本来はリアルタイムでフレームレートを稼ぐ目的でダウンサンプルを行うための機能だが、シーケンサーから書き出す場合はリアルタイムではないため、この値を100%以上にすると各画素を圧縮するように働く。200%だと1ピクセルを4ピクセルで計算したもので描かれるので、実質Super Sampling AAの2x2に相当する描画が可能だ。
●UE4.22のレイトレーシングのメリットとデメリット
UE4.22時点でのレイトレーシングのメリットとデメリットについて、コンノ氏は、「普段オフラインレンダラを使っている感触からすると、計算時間を度外視してもRTGIよりライトマップが無難。リフレクションや透明が上手く反映しないため制約が多く、計算の重さに見合わない。描画は十分綺麗だが、決定的な差があるわけではなく、逆にとても綺麗な描画になる場合もあり、一概には言えない」と語った。
●普通のオフラインレンダラと比較
従来のオフラインレンダラとの比較としては、CINEMA 4D + Redshiftの組み合わせで可能なこともUE4だといろいろできないことがあるとのこと。現状ではガラスに色をつけることもできないし、ガラス越しの影の描き方にも制限がある。ボケた背景の上にシャープな背景を描くといった表現も難しいという。またオフラインレンダラなら、レンダリングとエディタ、ビューが独立しているため、どんなに描画が重くても快適に操作できる。
ただし、レンダリングスピードについてはUE4が圧倒的に速い、とコンノ氏。オフラインレンダラはレンダーファームや専用マシン、ファイナルレンダリングの時間が必要だが、UE4はPC1台でも快適にレンダリングができるので、そこに希望がある。圧倒的なレンダリングスピードが得られるのであれば、画質は重視しなくても良い場合もあるのではないかと考えているという。
UE4のポストエフェクトによるDoF(被写界深度)と、RedshiftのレイトレーシングDoFとの比較
結論としては、UE4.22のリアルタイムレイトレーシングは今すぐオフラインレンダラの代替にはならないが、これから出てくる次のバージョンUE4.23に期待しているという。「レンダリングスピードが100倍なのは大変な魅力。実戦投入できる案件もあるかもしれない。シーケンサーから動画を書き出せるようになったので、今まで諦めていた動画を簡単に出力できるようになった。垣根が低くなったので、オフラインレンダリング側、UE4側双方のユーザーが、お互いの技術を学んだり協力したら面白いと考えている」とのこと。
余談として、UE4のマーケットプレイスのアセットが使えるのはとても良い、とコンノ氏は付け加えた。ライセンス的にUE4以外でも利用可能で、Epic Games公式以外のデータであれば、そのままオフラインレンダリングにも利用できる。「また、映像制作目的であればUE4の学習コストはだいぶ下がります。効率が悪かろうと、手間がかかろうと、最終的に画が出ればOKなので。そういった背景もあり、ここ3年から5年くらいでオフラインレンダラを使わなくて良い環境がやってくるのではないかと期待しています」。
●発表資料