【UE5】映像制作的なTipsとか



UE5で映像制作を進めるに当たりはまったこととかをTip的に。

ワークフローはUE5で諸々制作したものをEXRで書き出して、DepthMapやCryptomatteを使ってAftereffectsでコンポジットという流れ。

# Movie Render Queue関連

### EXRで書き出すと背景が透明 or 半透明になってしまう
ディファードレンダリング > Accumulator Includes Alpha: trueでEXRで書き出したものをAftereffectsで読み込むとSkyAtmosphereなどがアルファのせいで無くなる or 見た目がおかしくなってしまう。

<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/2aba2458-4326-8ff8-db6f-8482eeb0b8fd.png">
<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/eddab03d-bc05-e731-c91a-60fbce357514.png">


**レンダリング設定**
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/2717ba69-0838-e188-b742-0775532de9c7.png">

**Aftereffects > プロジェクトパネル > フッテージを変換 > メイン > アルファ: 無視**で解決。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/9b5cfb57-e4c9-365e-b882-eb3758e114f8.png">
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/d57e94f7-e64d-67a6-22d1-e5c464bb1d7a.png">

---
### DepthMapやAOを書き出したい
以下に **MovieRenderQueue_WorldDepth・MovieRenderQueue_AmbientOcclusion** など該当アセットを追加。

**ディファードレンダリング > Deferred Render Data > Additional Post Process Materials**
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/b8e9b9d0-dcdb-abaf-8bc0-53c3e81fa806.png">
DepthMap・AO以外にも書き出せるものがあるので必要なものを適当に。
**/Engine/Plugins/MovieScene/MovieRenderPipeline/Content/Materials/**
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/a464656b-5978-286f-7e8e-b905da434b80.png">
アセットを表示するには **エンジンのコンテンツ・プラグインコンテンツを表示** にしておきましょう。
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/ff256717-eb5c-09ab-72b2-f1571c31b6b6.png">

---
### ついでなので書き出したDepthMapがAftereffectsで真っ白なときの対処法
EXtractoRのProcessのWhite Pointを調整。Aftereffects的にはけっこう極端な数値になることがある。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/0f872f63-50b7-d13c-08e2-7614119a01d4.png">

https://twitter.com/xxJulexx/status/1595649143690633217?s=20&t=vHJy1kfBUdw2P3x2xA4V6w

ちなみにZ-Depth=R / High-Deptht=B。

https://qiita.com/EGJ-Syuya_Mukai/items/8af5b80f250d93299e54

---
### レンダリング(リモート)でCryptomatteが正しく書き出されない
レンダリング(リモート)では未サポートなので **レンダリング(ローカル)** でレンダリング。
<img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/bd7fff9b-01a8-4a42-a95e-657accc3ad4c.png">

**レンダリング パス > Object ID**

https://docs.unrealengine.com/4.27/ja/AnimatingObjects/Sequencer/HighQualityMediaExport/RenderSettings/RenderPasses/

>bject Ids のレンダリング パスは、Unreal Engine の実験段階の機能です。これは、Unreal Editor でのみ使用可能で、シッピング ビルドでは使用できません。

---
### ついでなのでCryptomatteの使い方(Aftereffects)
AftereffectsでEXRを読み込むとImport Optionsが開くのでOKを押すと各要素ごとにコンポジションを自動作成してくれる(正しくないところもちょこっとあるけど…)。
DepthMap使ってDoFあとがけとかAO調整とか要素ごとに色調整とか色々と出来るので必須機能かな。

**EXRインポート時にImport Oputionを聞かれるので必要に応じて設定をしてOK。**
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/e8ffa618-2837-0ce5-c9d8-e3c693e69477.png">
**そうするとコンポを自動生成し必要に応じてやEXtractoRやCryptomatteエフェクトを適用してくれる。**
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/4ad6c34c-6bc6-da70-b6a9-d97b1bdde406.png">

https://twitter.com/xxJulexx/status/1591663999510142976?s=20&t=7ZL40CwxktnVOMWeoY0-FA

---
### 強制LOD0でレンダー
LODがあると切り替え時にパカパカするので映像系では必須かな？
NaniteもパカパカすることあるのでNanite:無効/LOD:0が安定。

**ゲームオーバーライド > レンダリング > Use LODZero: true**
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/cd6288f4-f7d7-93a6-17b5-081e29a2eb1a.png">

編集時に上記と同等のクオリティーで編集したい場合はコンソールコマンドで該当するものを設定。

　foliage.ForceLOD 0
　r.forceLOD 0
　r.ParticleLODBias -10
　foliage.DitheredLOD 0
　r.SkeletalMeshLODBias -10

**画像設定 > Game Overrides**

https://docs.unrealengine.com/5.0/ja/cinematic-rendering-image-quality-settings-in-unreal-engine/

Execute Console Commandを書いたEditor Utility Blueprintをスタートアップに設定しておくと便利。
<img width="1000" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/0abfcf7c-bd19-79d7-80ab-409461ef7906.png">

https://docs.unrealengine.com/5.0/ja/running-blueprints-at-unreal-editor-startup/

---
### UltraDynamicSkyのVolumetricCloudがレンダー毎に違うものになる…
**UltraDynamicSky > Cloud Movement > Randomize Cloud Formation On Run: false**
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/e6555d91-faa2-499d-d173-d089ba83e841.png">
デフォルトでtrueになってるの罠すぎる…

---
# 編集関連
### Foliageを大量配置すると消える…
フォリッジの表示数の上限値を上げる。

**foliage.MaxTrianglesToRender xxx** (デフォルトは100000000)

※重い場合はLOD使った方が良いかもしれないけどそこは見た目で判断。
　編集: LOD有効 / レンダー: LOD0でもよいかと。

* 編集時に設定反映
　Cmdでコンソールコマンド入力 or BPで ExecuteConsolComomand設定。
　<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/163b56ad-d562-dd78-b9ed-a53c3a4a9dcf.png">

* レンダー時のみ設定反映
　**ムービーレンダーキュー > 設定 > コンソール変数** を追加し **Console Variables** に **foliage.MaxTrianglesToRender** を追加。
　<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/1eb3ca51-4bfd-644e-6763-cbc761b1c12a.png">

https://docs.unrealengine.com/5.0/ja/cinematic-rendering-image-quality-settings-in-unreal-engine/

---
### デカールを対象以外に影響しないようにする
デカールは適当にペタペタ貼るのに便利なんだけど必要ないところにも影響しちゃうのでその時の対処法。

https://twitter.com/xxJulexx/status/1595622125330497542?s=20&t=ThUMrH6pauxU-0CGhupbVQ

* StaticMesh設定
　**アウトライナ > 該当StaticMesh選択 > 詳細 > レンダリング > 詳細設定 > Receives Decals: false**
　<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/7f48e97e-798c-6dfd-123e-1247bedf9dec.png">

* ランドスケープ設定
　**Landscape Material > マテリアル > 詳細設定 > Decal Response (DBuffer): None**
　※StaticMeshのようにアウトライナー > 詳細パネルでは設定出来ずマテリアルまで潜らないといけないのでちょっとわかりにくい…
　<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/3b9c62bd-c183-a162-5150-d015a9e0fc28.png">

https://forums.unrealengine.com/t/decals-on-landscape/384169/3

---
### Foliageで草植えたときにのっぺりしないように
グラデーションマップを使ってフォリッジをカラライズする。

https://twitter.com/xxJulexx/status/1590388580438114307?s=20&t=lUL8UthbAOyWHd2Rz4wz-g

マテリアルファンクションを作っておいて使いたいアセットのマテリアルのベースカラー直前に割り込ませると便利！
<img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/9744d597-c901-b383-ce30-daf89d1abc27.png">

https://www.docswell.com/s/EpicGamesJapan/ZJ9WGK-UE4_EnviromentArtDive_Fantasy#p17

---
### AOが欲しい
* SSAO
UE5になってからLumenは便利なんだけどAOが使えない。。。
で、シーンによっては従来のAOが欲しくなることがあるんだけどそういうときは以下で簡単にGI設定を変更出来る。

　**PostProcessVolume > グローバルイルミネーション > メソッド: Screen Space(Bata)**
　<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/f029852c-a7fc-2233-7670-a62c091b0246.png">
　※LumenかSSGIかシーンによってどちらを使うか見極める必要はある。


* マテリアルAO
Actor単体でのAOであればこちらでOK。
ただし他Actorとの接地部分のAOは無し。
　<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/98ddacb4-0f82-5467-f533-b34566eb7f05.png">


**マテリアルAO / SSAO**
<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/75e4c4f0-8971-a9c1-952b-4e08bff6cb52.png"><img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102588/85847676-b912-edf6-1222-919072c65d0c.png">

---
### ランタイム バーチャル テクスチャ(RVT)

StaticMeshとLandscapeの接地部分のマテリアルをブレンドしてグラデーション化することにより境界線がぼやけて画的に馴染みやすくなる。

https://twitter.com/xxJulexx/status/1595665156138184704?s=20&t=41XX4YFX95H4zJoMwa01VQ

実際にチュートリアルとか説明見た方がわかりやすいので以下のリンクを。

https://youtu.be/tsl0R7MaeZI?t=157

https://www.youtube.com/watch?v=xYuIDFzKaF4

https://docs.unrealengine.com/4.26/ja/RenderingAndGraphics/VirtualTexturing/Runtime/

これもマテリアルファンクション化しておくと楽。

---

映像用途での画作りはゲームと違ってフレームレートよりクオリティ優先だったり、カメラに映る範囲だけ作り込めばよかったり、そもそも書き出したものをコンポジット(編集)すること前提で色々お作法が違ったり。
その辺のわからないことをググっててもなかなか答えが見つからなかったりすることも多かったりするのでこのTipsが参考にでもなればと。