Unity用非リアルタイム向けなDeckard Renderの話、その2

UnityDeckard

はじめに

この記事はUnity用非リアルタイム向けなDeckard Renderの話、その1の続きです。

今回は、モーションブラー、ライト、レンダリングについての話です。

モーションブラー

Deckard Renderでモーションブラーを有効にするには1作業必要です。Deckard Object Motion Blurコンポーネントを動くオブジェクトに付ける事でモーションブラーが計算されます。Inspectorの設定は弄らなくてOKです。

mMAL8uR9a-clipboard

モーションブラー無効時

iuiEzOS3f-clipboard

モーションブラー有効時

R7yXdYH_9-clipboard

良き感じにモーションブラーが生成されています。

Particle

また、Shuriken(Particle System)の場合はD Particle Motion Blurのコンポーネントを追加することで、モーションブラーが有効化されます。

InspectorのPsへShurikenオブジェクトを設定する必要があります。

doyAzVOWC-clipboard

Animator

Animatorを使用した動きの場合はDeckard Animator Motion Blurを追加します。こちらも、InspectorのAnimatorを設定する必要があります。

sCtsDxhT2-clipboard

ImageEffectで実装されているモーションブラーとの品質差は下記公式動画が参考になります。

ライト

Deckard RenderはUnityのリアルタイムライトをソフトエリアライトとして扱うことができます。

Unityのエリアライトはベイク専用機能となっているので馴染みが薄い方も居ると思います。簡単に説明しますと、ポイントライトやスポットライトが点光源なのに対し、エリアライトは面光源となっています。現実世界の光源である蛍光灯などは面で発行していますのでエリアライトを使用した方がより現実の近い絵が得られるようになります。

Unity純正のエリアライトは前述の通りベイク専用の機能となっており、かなり重い処理となります。ですがDeckard Renderは非リアルタイムレンダリングなので重い処理でも気にせずに計算できるというわけです。

使い方は既存のRealtimeなライトオブジェクトにDeckard Soft Lightコンポーネントを追加します。Bakedだと正しく動作しませんので注意してください。

Light Sizeが光源の面積となります。

d6ZRTooY9-clipboard

作成したライトオブジェクトの影設定は画像のようにBiasNormal Biasの値を最小値に設定しておきます。影の解像度なども最高設定にしておくと綺麗な結果が得られます。

qsA1VVOlb-clipboard

標準のスポットライト。

Rtm6MNjTm-clipboard

標準のスポットライトにDeckard Renderのソフトエリアライトを有効にしたもの。光の混ざり具合が非常に柔らかくなっています。

2g_KFQ5p_-clipboard

Render Quality Settings

ここからレンダリング設定を行います。その1で設定したMainCameraのDeckardRenderコンポーネントの下の方にRENDER QUALITY SETTINGSがあるのでこちらを弄ります。

ljjrXygp0-clipboard

Use Half Resolution

AfterEffects的に言えば1/2解像度です。解像度を半分にして処理4分の1で済むようにします。オブジェクトの各種設定中にDeckard Renderを有効にする場合は解像度を落として作業した方が良いです。(重くて作業が辛いので)

Editor Quality

Editorで作業中の画質設定です。数値が低いほど品質が下がる代わりにレンダリングが早くなります。

Use Editor Progressive Rendering

これを有効にすることで、Editor画面での品質が「Min Progressive Quality」と「Max Progressive Quality」の間でよしなに設定されます。

Render Quality

最終的に出力する絵の品質設定です。

Quality設定の違い

Quality設定はDoFのボケ部分などに大きく影響があります。

Quality設定:1

YHI5kYXkQ-clipboard

Quality設定:80

szBzW9BYX-clipboard

奥側の壁のボケ具合や、ライトの柔らかさなどが大きく違っています。DCCツールのレンダリング時間と比べたら誤差みたいなものなのでQualityは高めに設定してしまって問題無いでしょう。

Antialiasing bais

項目名通りアンチエイリアスです。処理的にはMSAAのようです。

SuperSample

レンダリングする際に出力解像度より高い解像度でレンダリングしてから縮小することでジャギーなどを目立たせなくする機能です。

最大値で設定すると2倍解像度になるので負荷は高めです。

ANIMATION SETTINGS

Jc8jWQUII-clipboard

出力解像度やフレームレートを設定できます。解像度やフレームレートの項目は解説しなくても良いと思うので割愛します。

Number of frames to Render

何フレーム分レンダリングするかの設定です。ここを設定すると下側のSequence Lengthに分、秒、フレームで尺が表示されます。

Resume fromframe

何フレーム目からレンダリングするかの設定です。例として「Number of frames to Render」を100、「Resume fromframe」を10に設定した場合は、10フレーム目〜100フレームまでの90フレームがレンダリング結果として書き出されます。

H.264 MOVIE EXPORT OPTION

yQTT2bucM-clipboard

タイトルからH.264の設定に見えますが、連番画像の出力設定も兼ねてます。

ffmpegがあれば、ここのSequence Formatで連番書き出しをしたあと、H.264 BitrateのビットレートでH.264にエンコードされます。

Sequence Format

前述の通り、連番書きだし時の形式です。Jpg、Png、Exrが選べます。

Sequence File Name

設定した名前でフォルダが作成され、その中にレンダリング画像が保存されます。

Capture on Play

有効にしないとレンダリング結果が保存されません。連番画像を保存する場合は忘れずに有効にしましょう。

Encode H.264 video after rendering

有効にすると最後に連番画像をffmpegでH.264に出力してくれます。

書き出しの注意点

Jpgだと問題ないのですが、Pngで書き出すと何もない画像が書き出されます。

何もないように見えますが、ファイル容量が結構あります。怪しいです。

i2Sw_lgnm-clipboard

Alphaの値を全て不透明にしてやるとレンダリング画像が出てきます。

Sm7TkEmOc-clipboard

これの解決策は謎です。Cameraの背景も不透明にしてるんですがね……要調査です。

またOpenEXRも出力すると完全透明になりますが、こっちは読み込み時に透明度ではなくアルファチャンネルとして読むだけで何もしなければ問題無いです。(データ的には問題あるような気がしますけど使う側としては問題ないっちゃない)

あとがき

これでDeckard Renderの設定から出力まで出来る様になりました。次回は別のシーンで1から構築してみようと思います。またフォーラムでHDRP対応のテスト版も配布されてたので試しに使ってみようと思います。

hHjoUNDcy-img00003