自動車や工業製品、建築ビジュアライゼーションなど、今まではV-Rayなどのプリレンダーを使用することが多かったのですが、昨今は、レンダリングをUnreal Engineで行うことも増えてきています。
今回は、そのUnreal Engineでビジュアライゼーションをする上での、ちょっとしたTipsをご紹介します!
Ray Tracingを使用を前提とした内容になっています。
また、処理負荷よりビジュアル優先なので、静止画や動画用途向けな内容です。
タイトルにある通り、車を例に紹介しますが、その他の工業製品などのハードサーフェイス系のビジュアライゼーションにも役立つと思います。
今回は、ある程度、UE4を使っている方、向きの記事ですが、まだあまり使ったことがない方は、ぜひこちらもご覧ください!
車系の作品、コンテンツを作るのに役立つアセットや動画、機能などをまとめています。
また、今回、紹介するものの多くは、こちらの動画で紹介されているものになります。
前提
Tipsの前に少しだけRay Tracingとコンソールコマンドについて少し…。
ある程度、知っているという方は、飛ばして頂いて大丈夫です!
Ray Tracing
車などのルックを作る際に、反射はとても重要な要素です。
また、レイトレーシングのアンビエントオクリュージョンも、デフォルトのSSAOと比べて、クオリティが高く、プリレンダーに近いAOを表現できます。
そのため、可能であれば、レイトレーシングを使った方が、クオリティを上げやすいです。
ただ、処置負荷が一気に上がるので、VRなどのパフォーマンスが求められるコンテンツでは、使わない場合も多いです。
レイトレに関しては、公式ドキュメントや以下のコンテンツが参考になります。
コンソールコマンド
アンリアルエンジンでは、コンソールコマンド(Console Variables and Commands、略して、CVar)というコマンドで設定変更をすることができます。
CVarは、アウトプットログなどで使用することができます。
レイトレーシングの設定もポストプロセスボリューム(PPV)から調整することができますが、PPVにない設定もCVarで変更することができます。
「r.RayTracing.~」などがそれに当たります。
デザイナー、アーティストだとこういったコマンドに苦手意識のある方も多いかもしれませんが、見た目に関わる設定も多くありますので、使えた方が良いです。
上記の画像で「r.RayTracing.」と入力しています、文字を入力すると、候補が出てきます。
使えそうなコマンドを見つけた場合は、「~ ?」で、そのコマンドの説明が表示されます。
例えば、「r.Tonemapper.Sharpen ?」のような感じです。
Help→Console Variables からヘルプを表示させるともできます。
ちなみに、CVarで変更した設定は、エディタを閉じるとリセットされてしまいます。
毎回、変更するような設定は、プロジェクト/Config フォルダにある「DefaultEngine.ini」に設定を記述することで、その設定を適用した状態で、プロジェクトを開くことができます。
こちらの画像は、これから紹介する「r.Reflections.Denoiser」などを記述した例です。
注意点としては、アウトプットログでは、「 r.Reflections.Denoiser 0」と記述するのに対して、.iniでは、「 r.Reflections.Denoiser=0」になります。「スペース」 と「 = 」で異なります。
プロジェクト設定
前置きが長くなりましたが、本題です。
まずは、プロジェクト設定に関する項目です。
ルックに関する設定
Reflection Capture Resolution
こちらを「1024」や「2048」などに上げます(PCスペックによる)。
アンリアルエンジンのレイトレ反射は、レイトレの反射と従来のスクリーンスペースやリフレクションキャプチャの反射のハイブリッドになります。
(完全にレイトレ反射にすることもできるので、それは後ほど紹介します。)
そのため、「 Reflection Capture Resolution 」でリフレクションキャプチャの反射の解像度を上げるのがおすすめです。
Clear Coat Enable Second Normal
車のボディを表現するのに、Clear Coatは、ほぼ必ず使用するかと思います。
そのため、こちらにチェックをいれておくのがおすすめです。
特にAutomotive Materials Packのカーボンを使用する際は、必須です。
環境効果に関する設定
背景もUE4上で作る場合は、以下の項目にもチェックを入れるのが、おすすめです。
基本的には、上の2つはチェックが入っているかと思います。
- Support Atmospheric Fog ☑
- Support Sky Atmosphere ☑
- Support Sky Atmosphere Affecting Height Fog ☑
「Support Sky Atmosphere Affecting Height Fog」を有効にすることで、透明なオブジェクトにもHeight Fogなどを使用することができます。
Sky Atmosphereに関しては、詳しくは、こちらをご覧ください。
反射
本記事のメインの反射周りのTipsです。
反射関連のCVar
r.Reflections.Denoiser 0
デフォルトで反射のデノイザーがオンになっています。
これを「0」 にすることでデノイザーをオフにすることができます。
デノイザーがオンだと、反射がぼやけてしまいます。
そのため、オフにすることでクリアな反射を表現することができます。
しかし、当然ですが、ノイズが増えます。
環境によっては、サンプル数などをあげても、どうしてもノイズが取り除けない場合もありましす。
そのため、状況によっては、こちらをオンのままにして、ノイズが少ないことを優先する場合もあります。
r.RayTracing.Reflections.ReflectionCaptures 1
ヘッドライトの中を明るくしたりするのに役立ちます。
レイトレの反射の反復回数は、Max Bounceで決めます。
だいたい3回くらいにすることが多いかと思いますが、この反復が終わった後の反射は、黒くフォールオフします。
しかし、「 r.RayTracing.Reflections.ReflectionCaptures 1 」にすることで、黒くフォールオフするのではなく、Reflection Captureの反射を使うようになります。
r.RayTracing.Reflections.MaxUnderCoatBounce 1
クリアコートの下の層の反射のバウンス回数です。
デフォルトは、0なので、下の層では、反射しません。
こちらは、見た目が大きく変わる場合があるので、この設定を変更する場合は、ルックデブの初期から変更しておくのが、おすすめです。
また、反射によるノイズも増えるので注意が必要です。
反射の歪みの改善
下記の設定をすることで、上記の画像のような反射の不自然な歪みを改善し、反射の精度を上げることができます。
プロジェクト設定→GBuffer Format :High Precision Normals
Static MeshのDetails → Build Settings → Use High Precision Tangent Basis ☑
こちらの設定変更後は、Apply Changesを押さないと、設定が適用されません。
反射に関する知識
Max Roughness
PPVのレイトレの反射の設定に、Max Roughnessというものがあります。
前述したように、UE4のレイトレ反射は、レイトレの反射とラスタライズの反射のハイブリッドです。
そのハイブリッドのブレンド度合いを調整するのが、この数値です。
この値が、「1」の場合は、全てがレイトレの反射になります。
「0.6」などの場合は、0.6より低いラフネス値のマテリアルは、レイトレ反射を使用し、0.6より大きいラフネスでは、ラスタライズになります。
ぱっきり分かれるのではなく、ある程度ブレンドされます。
また、レイトレの反射が多いほど、重くなります。
そして、ラフネス値が高いマテリアルでレイトレ反射を使うと、ノイズも出やすいです。
なので、処理速度に余裕があるからと言って、高くすれば良いというわけではなく、シーンや見せたいもの、ノイズの状況によって、ケースバイケースで変更します。
ラフネス値が高いと、レイトレ反射を使っても、あまり見た目に変化がないので、私は、デフォルトの0.6のままにすることが多いです。
Reflection Capture
前述の通り、Max Roughnessが1より小さい場合は、全てがレイトレ反射ではないため、レイトレを使ったシーンでもReflection Captureも有用です。
パフォーマンスを求める場合は、 Max Roughness を下げ、ボディなどのラフネスの低い重要な部分にだけ、レイトレ反射を使い、他はReflection Captureで補うという手段もあります。
Reflection Captureを使った車のビジュアライゼーションは、こちらが参考になります。
半透明
半透明に関しては、Tipsってほどでは、ありませんが
半透明マテリアルへのレイトレーシングの反射を得るためには、PPVでTransparencyを「Ray Tracing」にする必要があります。
Refractionは、見た目や扱いやすさの観点からオフにする場合が多いです。
しかし、Composureを使う場合などは、Refractionを使用しないと、おかしな見た目になるので、使用する場合もあります。
HDRI Backdrop
自動車などのビジュアライゼーションでは、HDRI Backdropなどを使用し、HDRIを使用したライティングをすることが多いかと思います。
そのHDRI Backdropを使用する際の、ちょっとしたTipsです。
HDRIのボケの解消
デフォルトでは、Mipmapが有効なため、HDRIがぼけることがほとんどだと思います。
テクスチャの設定を変えることで、解決します。
- Mip Gen Settings: No Mipmap
- Maximum Texture Size: 短辺の解像度などに上げる(例:8Kテクスチャなら4096など)
こちらの設定を変えるとフリーズすることがありますが、ちゃんと動いているので、待ちましょう。
1→2の順番でやった方が、 Maximum Texture Sizeの部分で、余計なミップマップを生成しないので、少し早くなります。
Cubemap Resolution
HDRI Backdropをレベルに配置した時点では、Sky LightのCubemapの解像度が低い状態です。
なので、Skylight コンポーネントを選択し、Cubemap Resolutionを上げるのがおすすめです。
私は、2048にすることが多いです。
環境光を調整したい時
HDRI Backdropでのライティングの明るさを調整したいときは、HDRI BackdropのIntensityではなく、Skylightコンポーネント側のIntenistyを調整するのがおすすめです。
HDRI Backdrop側のIntensityを上げると白飛びすることがよくあります。
なので、 Skylightコンポーネント側 で調整することで、背景としてのHDRIの明るさは保ったまま、SkyLightの環境光の明るさのみを変えることができます。
設置感を増やす
DIrectional Lightなどの影やレイトレAOで十分な場合がほとんどですが、より設置感を増やしたい場合は、こちらで紹介されている、ColorCorrectVolumeを使った方法が有用です。
やり方を簡単にまとめると
- Virtual Production Utilitiesプラグインを有効に
- Content Browserで「CCV」で検索(Show Engine Content と Show Plugin Contentに☑)
- BP_ColorCorrectVolume を配置
- Actor Hidden in Game☑、Type: Boxにし、Gainなどで調整
- ScaleでBoxを薄くして配置
シャープ
ハードサーフェイス系だと、シャープをかけることも多いかと思います。
CVarの説明部分でもでてきた「r.Tonemapper.Sharpen」で、UE4上でシャープをかけることができます。
また、こちらは、シャープではありませんが、Screen Percentage を上げることで、シャープな解像度感のある絵を得ることもできます。
PPVのRedering Featurersから設定することができます。
また、Viewport Optionからも可能です。
こちらは、値が200の場合は、2倍の解像度でレンダリングし、元のサイズにリサイズするのと同じ効果があります。
なので、上げるほど、処理負荷も上がるので、お気を付けください。
モアレの解消
CADモデルなどを使用し、ヘッドライトやグリルなど細かなディテールがあると、離れてみたときにモアレが起きる場合があります。
そういった場合は、ディテールを削ったモデル(ローポリ)を用意し、LODとしてインポートします。
そうすることで、離れたときは、ローポリになり、近づいたときは、元のハイポリに切り替わることで、アップにも耐えられる見た目を担保したまま、モアレを解消することができます。
ノイズ対策
レイトレを使用しているとノイズが撮り切れず、困ることがあるかと思います。
ノイズを削減するいくつかの方法をご紹介します。
効果の高い順に紹介します。
Movie Render Queueの使用
静止画、動画用途に限りますが、Movie Render Queue(MRQ)のAnti-Aliasingにあるサンプル数を上げる方法です。
モーショブラーが欲しい場合は、Temporal Sample Countを上げ、モーショブラーが必要ない場合やレンダーパスを出力する場合は、Spatial Sample Countを上げます。
数値を上げるほど、レンダリング時間は増えますが、ノイズも削減されます。
128以上あたりからは、レンダリング時間の割りに、あまり変化がなくなってきます(基本的には、2のべき乗で上げていきます)。
この辺りの詳細については、こちらで紹介しています。
各サンプル数を上げる
リフレクションやAOなどの各サンプル数(Sample Per Pixel)を上げるのも、特に効果があります。
こちらも上げるほど、重くなっていきます。
なので、MRQを使用し、書き出し時のみサンプル数を上げるのが、作業しやすく、おすすめです。
MRQで「Console Variables」の項目を使用することで、書き出し時のみ適用するCVarを設定することができます。
- r.RayTracing.Reflections.SamplesPerPixel
- r.RayTracing.AmbientOcclusion.SamplesPerPixel
- r.RayTracing.Translucency.SamplesPerPixel
あたりを調整するのが、多いかと思います。
ライトのサンプル数を上げる
ライト側にもサンプル数を上げる設定があります。
こちらを上げるのも有用です。
特にHDRI BackdropなどHDRIを使用したSky Lightのサンプル数を上げるのが効果的です。
だいたい、ここまでで紹介した3つのサンプル数を調整することで、ノイズが気にならないレベルになる場合が多いです。
r.Shadow.Denoiser.PreConvolution 2~4
こちらのCVarを変更することで、ソフトシャドウのちらつきを抑えることができます。
ポストプロセス
DoFとBloomをオフにするのも一つの手です。
微妙にぼけている部分がチラつくことがあります。
なので、最初からオフにするというよりは、見た目優先で、どうしてもこの部分が原因でチラついてしまう場合に、オフにすることを検討するくらいで良いと思います。
苦肉の策
ライティングやマテリアルなど次第でシーンによっては、どうしてもノイズが取り切れない場合があります。
そこで見た目を犠牲にノイズを抑える方法も一応、ご紹介します。
デノイザーを使う
反射のデノイザーを無効にすることで、反射がクリアになることをご紹介しました。
ただ、どうしても反射部分のノイズが取り切れない場合は、デノイズを使用することも検討します。
また、「 r.RayTracing.Reflections.MaxUnderCoatBounce 1 」にすることでノイズが増えることもあるので、こちらを使用しない(=0)というのも効果がある場合があります。
MRQでTAAも使う
MRQでAnti-Aliasingのサンプル数を上げると、デフォルトでかかっているアンチ(TAA)を無効にしてくださいというワーニングがでます。
しかし、無効にせずにTAAも併用することができます。
併用することでノイズを抑えることができます。
しかし、かなりボケた絵になってしまうため、本当に苦肉の策です。
大きな解像度でレンダリングする
苦肉というほどではありませんが、昔からのジャギー対策などでも良く使う、目的の解像度よりも大きな解像度でレンダリングし、後からリサイズする方法です。
MRQでは、High Resolutionという機能があり、タイルに分割して、レンダリングし、あとから合成することで8K、16Kといった高解像度の画像をレンダリングしすることができます。
しかし、レンダリング時間は、一気に増加します。
また対応していないポストプロセスエフェクトもあります。
最後に
今回は、静止画や動画用途などでのビジュアライゼーションのTipsを紹介しました。
どれも、その設定をしたからと言って、劇的に変わるものではありませんが、様々な細かな設定で塵積で変わっていくかと思います。
少しでも作品やお仕事のクオリティアップや問題解決に繋がれば、嬉しいです!