前書き
はじめまして、ビジュアルディレクターの新福です。
主に映像のディレクション、モーショングラフィックスや3DCGの制作をしております。
最近はメタバースやデジタルヒューマンなど3DCG技術を活用する場が増えています。そのような事例でゲームエンジンを活用する事がありますが、 Unreal Engine (以下UE) の表現力は特にすごいですよね。1→10でも UE の案件活用が多々あります。
また映像コンテンツ自体も高解像度化が進み、膨張するレンダリングタスクに備えるために、UEでレンダリングをするというのを考えている方もいらっしゃるかと思います。
様々なチュートリアルが出ていますが、一連の流れをまとめた情報はなかなか無かったので、今回調べながらテスト動画を作りましたので、一連の流れを記していきます。
なおUE自体をほぼ初めて触りますので、細かな間違いあるかもしれませんが、ご容赦ください。
環境
UE4ではなくUE5 early access版で作業します。
今回使ってみようとしたきっかけとなったものはUE5のlumenというリアルタイムでGIを描画する機能です。RedshiftやOctane render といったGPUレンダラーが主流になってきているとは言え、GIの計算はまだまだ時間がかかります。
UE4まではライトを「動くもの、動かないもの」で区別したり、ライトのベイクが必要があったので、UE5はその辺りとっつきやすくなったのではないかと思い検証した次第です。
C4Dで保存データを保存
UEのpluginのData smithがC4Dファイルにネイティブに対応しているので、C4Dで保存します。
保存の仕方を注意しないといけないところは、プロジェクト設定>CinewareのSave-をいう3点を全部チェックしておく事です。
- マテリアルは標準マテリアルを割り当てる。Redshiftマテリアル等外部のものは対応していません。
- 一つのオブジェクトで polygon selectionタグを使うとUEの方でエレメント0、エレメント1というように付きます。
C4DからUE4にデータをインポート
UE5でDatasmithのプラグインを読み込んで、再起動する。
Datasmithでのインポートが終わったら、最初から入って居るFloorやLightは削除しておく。
postprocess_volumeを作成して、infinite expendedにチェックを入れ、エフェクトのかかる範囲を無限にします。(よく使う)
ライティング
今回はlumenの機能を生かして、ポイントライトやディレクショナルライト等のいわゆるライトオブジェクトを使用せず、オブジェクトに割り当てたマテリアルのエミッシブカラーのみで調整しております。
マテリアルの調整
C4Dの標準マテリアルをインポートしたものはマテリアルではなく、マテリアルインスタンスという状態になっております。 なのでノードを繋がなくても、カラーや反射の調整ができるようになっています。
マテリアルエディタ上で、1.2.3.4を押しながら左クリックで、それぞれの次元を持った定数を作れます。(よく使う)
一般的な3DCGツールと違うのはガラス等の透明なものの扱いです。RedshiftならReflaction(屈折)を調整すれば透明なものを表現できますが、今回グラフィックボードがgtx1080とハードウェアリアルタイムレイトレーシングに対応していないので、frenelを使用して疑似的に表現してます。
ポストプロセス①(GI、反射などの品質調整)
作成>ビジュアルエフェクト>ポストプロセスボリュームで追加します。
シーン全体にかかるエフェクトです。
これとは別に個々のカメラにもポストプロセスボリュームが付いているので、カメラ毎に調整ができます。(カメラのdepth field調整で後術)
小さいオブジェクトでEmissionマテリアルを使用しただけの暗いシーンだとアーティファクト(モヤモヤしたもの)が発生しやすいので、PostProcessVolumeでファイナルギャザーの品質を上げると解決する場合があります。
ポストプロセス②(絵作り)
使用したい機能にチェックをつけて有効にします。
エフェクトは画面全体に影響するものです。
bloom, exposure,Chromatic Aberration(色収差)等一通りあります。
カメラのdepth of field調整
レンズブラーに関しては、全体のポストプロセスボリュームではなく、カメラ側のDepth of Fieldにキーを打ってアニメーションさせてます。
ブラー深度半径は有効にしようとしても、CIrcleDOFのみという表示が出て無効になってしまいます。DOFのメソッドも進化していて、Cinematic DOFが良いそうです。 https://docs.unrealengine.com/4.27/ja/RenderingAndGraphics/PostProcessEffects/DepthOfField/CinematicDOFMethods/
シーケンサーで編集
Datasmithでインポートしたアニメーションをシーケンサーで開くと、アニメーションがついているオブジェクトがキーフレーム付きで表示される。
これをシーケンサーの文字の下のカチンコマークからレンダリングしてもアニメーション付きではレンダリングされません。
シーケンサーウインドを出したら、「+トラック」から「カメラカットトラック」を追加します。
今回は2カット分作りますので、さらに+を押して、カメラを選択します。複数ある場合はその分追加します。
今回のようにカメラ1、カメラ2共に1-100Fキーがついている場合は、例えばカメラ2を100F以降にしてしまうとカメラアニメーションが無くなってしまうので、C4D内であらかじめカメラ1、2のアイメーションさせるタイミングをずらしておくと良いです。UE内でもできると思いますがこれから調べます。
カメラマークをクリックして**「ビューポートをカメラカットにロック」**
これでレンダリングサイズで縦横比が固定され、シーケンスを再生するとカット毎にカメラが切り替わります。
レンダリング
ムービーの書き出しは二通りの方法があります。
・ウインドウ>シネマティック>ムービーレンダーキュー
・シーケンサーのシーケンス書き出し
ムービーレンダーキューの方が新しい機能で、AOVまで出せます。
出力のファイル名にtokenを使えるので、
{sequence_name}{camera_name}/{sequence_name}{camera_name}.{frame_number}
とすると、カメラ毎に書き出す連番を分ける事ができます。
movie render cueで映像を書きだした時に、上下に黒いバーが出る事がありますが、それは「画面の解像度」と「カメラのfilm back」があっていないためです。カメラのfilm backを16:9のものにすれば直ります。
レンダリング結果
1カット目のドアの反射が途中から入ってきたり、レンズブラーのアニメーションが入っていなかったり、ガラスの表現を見るとRedshiftほどリアルではなく、精度を詰めていく事が難しいところもありますが、FullHDサイズの連番100枚のレンダリングが5秒とかからず終わりました。
精度の差こそありますが、普段使用するレンダラーからは考えられないスピードですね。まだまだ解決すべき課題はありますが、用途によっては品質は十分活用できると思います。
あとがき
UE5は2021年現在ではearly access版ではありますが、2022年にフルリリース予定ですので、映像に活用していく良いタイミングだと思いますので、ぜひ活用していきましょう!
主な参照元