CGプロダクションがゲームエンジンでの映像制作に乗り出す際、リアルタイムレンダリング特有の制作手法が壁となることがままある。本稿では、株式会社ブロスの主要スタッフ陣に、Unreal Engine 4(以下、UE4)での映像制作のおおまかなながれとポイントについて解説してもらった。
※本記事は月刊「CGWORLD + digital video」vol. 231(2017年11月号)からの転載となります
TEXT_株式会社ブロス
EDIT_海老原朱里 / Akari Ebihara(CGWORLD)、山田桃子 / Momoko Yamada
ブロス制作のリアルタイムレンダリング作品
プリレンダリングとの様々なちがいを理解しよう
一般的にCG映像制作ではプリレンダリングが基本です。個人や小規模CGプロダクションで高速かつ大量にレンダリングする設備をもつことは、現在でもハードルが高いことに変わりはありません。一方、この数年GPUを含めたハードウェアの機能向上によりリアルタイムレンダリングの画質は大きく向上し、導入コストも格段に低減しました。
-
-
株式会社ブロス
TVアニメ制作協力から海外番組技術サポート、メーカー様向けUE4セミナー企画・施行まで「幅広くお付き合いいただける」スタッフがお待ちしております。
bros.studio
Unity、UE4、Lumberyardなど、ゲームエンジンの無料化によってかつては高額のライセンスフィーを払わなければ手に入らなかった環境が「誰にでも」「すぐに」手に入るようになり、映像制作でリアルタイムレンダリングを導入する事例が飛躍的に増えています。
とはいえ、リアルタイムのレンダリング手法やワークフローは、従来のオフラインレンダリングとは異なる作法や制限が多く、習熟に壁を感じている、という方も多いのではないでしょうか? 本稿では、UE4を使った映像制作のながれを簡単にご紹介しながら、オフラインレンダリングとのちがいをみていきます。
1 ワークフローのちがい
ゲームエンジンでの映像制作は、当然ながら従来のプリレンダリングとはワークフローが異なります。一概には言えませんが、最終的な連番の書き出しにかかるコストが低い分、シーンの構築にかかる工数や制限が増えることが多いです。また、ゲームエンジンの多くはモデリングやテクスチャ、アニメーション作成の機能を充分には備えていません。各種アセットの作成は外部ツールとの連携に頼る必要があります。リアルタイムレンダリングの最大のメリットは、レンダリング時間の大幅な短縮です。
2 リアルタイムレンダリングの得意・不得意
リアルタイムレンダリングでは、プリレンダリングで当たり前にできるものを苦手とする場合があります。それを把握しておくことはとても重要です。例えば、流体シミュレーションや破壊シミュレーション、Hair、Clothアニメーション、サブサーフェス・スキャタリング、透過の表現など、リッチなエフェクトの多くは限定的、もしくは疑似的なかたちでしか実装されていません。このため、細やかなキャラクター表現(有機物のクローズアップなど)には不向きです。様々なテクニックを駆使すれば、プリレンダリングに遜色ない結果を得ることもできますが、費用対効果に見合わなければ、意味がありません。また、プリレンダリングに比べてデータの下準備などは手続きが多くなってしまいがちです。
制作環境はCPUではなく、GPUのスペックが高いものを推奨します。NVIDIA Quadro などOpenGL用ボードより、DirectX用のNVIDIA GTX 1080を代表とする一般的なゲーム用グラフィックスボードとしての性能が重視されます。
プリレンダリングとリアルタイムレンダリングの機能比較
3 リアルタイムレンダリングで使われる用語
本稿をはじめとして、プリレンダリングでは使わないCG用語がリアルタイムレンダリングでは頻出します。まずはそういった用語を理解するのが最初のステップです。ツールによって細かなちがいはありますが、基本的には共通する単語が多くあります。
リアルタイムレンダリングでよく使われる用語の一例
4 3DCGツールでアセットを準備する際の注意点
プリレンダリングではマシンの能力の限界までポリゴン数やテクスチャサイズを引き上げることができますが、リアルタイムレンダリングではテクスチャの合計サイズの上限がメインメモリではなく、GPUメモリサイズに依存します。上限を超えると、UE4では解像度を自動で下げて表示してしまい、仕上がりのクオリティに影響するため、注意しておきましょう。
ゲームエンジンに3Dモデルをインポートする際、自動的に三角形メッシュに変換されます。mental ray、V-Rayのような仮想スムースは使えません。ディスプレイスメントの仕様も異なります。また、インポートの際、3DCGツールでの質感設定はほとんど反映されません。マテリアルの設定はゲームエンジン側で行う必要があります。マテリアル名やテクスチャパスのインポートの可否はゲームエンジンによって若干仕様が異なりますが、共通する注意点としてはUV展開を綺麗に作成し、オーバラップを避けることです。メッシュ同士での親子階層は避け、トランス、ローテーション、スケールの値に気を付けましょう。履歴なども極力削除しておきます。
UE4やUnityなどのゲームエンジンにはリアルタイム再生の処理速度を上げるために、カメラの表示領域外のオブジェクトや、別のオブジェクトで遮蔽されたものをカリング(非表示)する機能があります。この機能を有効に活用するため、背景モデルなどではモデリングの際、モジュラー化を行います。
リアルタイムのモデリング例
左側のような完成品をつくりたい場合は、右のように共通パーツだけをまず作成し、それをインスタンスコピーして組み立てます。これをゲームエンジンで表示すると、カメラに映らないオブジェクトはカリングされ、レンダリング負荷が軽減されます
リアルタイム用のキャラクターリギング例
リギングでの注意事項はジョイントがルート以下に1つの階層でつながるようにすることです。階層が分離している場合、ゲームエンジンに変換した後、モデルが分解されてしまうことがあります。今まで使っていたリグが正しく変換されるか、事前にチェックしましょう。キャラクターアニメーションなどは基本的にジョイントボーンへスキンバインドしたものを扱います
アニメーションベイクする階層の例
リアルタイムエンジンには3DCGツールで設定されたIKハンドル、コンストレイン、エクスプレッション、カーブ(パスアニメ)、ドリブン、デフォーマ、Hairなどはインポートできません。そのため、ジョイントのアニメーションにキーベイクして、リグやIKなどを全て削除してから、FBXにエクスポートしたものをインポートします。IKやコンストレイン、エクスプレッションなどを使用したい場合は、ゲームエンジンの機能を使って設定する必要があります
頂点アニメーション
画像はブレンドシェイプを使ったロボットの破壊表現の例です。UnityやUE4ではブレンドシェイプやジオメトリキャッシュ(Alembic)の頂点アニメーションを扱うこともできます
5 素材のインポートとコンテンツブラウザでのファイル管理
前述のとおり、UE4などのゲームエンジンの多くは3DCGツールのように豊富なモデリング機能を備えていません。各種アセットは、主に外部ツールで作成したものをインポートして扱います。
Mayaや3ds Maxなど、3DCGツールでモデリングされたアセットをFBXで出力して、UE4エディタの「コンテンツブラウザ」からインポートしていきます。UE4では部品となるソースファイルを「Content」以下のフォルダに登録し、それらをインスタンスで配置して組み合わせることで、シーン(レベル)を作成します。積み木や、レゴブロックをイメージしてください。「コンテンツブラウザ」はBridgeやVaultのようにアセットを閲覧できるエクスプローラで、エディタ内で任意のフォルダをつくり、ファイルの管理を行うことができます。
コンテンツブラウザからアセットをドラッグ&ドロップで配置
POINT 1
プロジェクトフォルダ内のファイルはWindowsの標準エクスプローラからも「.uasset」拡張子のファイルとして確認できますが、編集やファイルのコピー、移動は必ずコンテンツブラウザ上で行いましょう。データ破損など、不具合の原因になります
POINT 2
弊社の過去事例では、約100万トライアングルのスキンキャラクター3体、さらに1万ポリゴンのキャラクター約50体を同時に表示したことがあります。UE4では仕様上、インポートするモデルのポリゴン数に明確な上限はありませんが、あまりに大きなデータの場合、レンダリング負荷だけでなく、インポート時の処理時間が膨大になってしまいます。アセットはできるだけ最適化して扱いましょう。また、テクスチャのピクセル数に関しては2の累乗を基本とします。それ以外のサイズでのインポートも可能ですが、一部の仕様が使えなくなるなどの問題がありますので、注意してください。
解像度は8K(8,192×8,192)サイズが上限です
POINT 3
UE4はアセットを独自形式に変換しますが、UnityではFBXなどのソースファイルをそのままプロジェクトフォルダ内に保存します。Unity上で設定されたパラメータなどの情報はファイルと1:1の「.meta」形式のテキストファイルに記述されます。そのため、SVNなどでのバージョン管理の際はソースファイルだけでなく「.meta」ファイルも忘れずにコミットしましょう
6 アセットの編集、マテリアルの作成
現状、V-Rayなどのマテリアル設定をそのままコンバートすることは難しく、それぞれのエンジンの仕様に合わせたマテリアル、テクスチャパスをつくり直す必要があります。手間のかかる作業ですが、ただ、このあたりのワークフローは今後、外部レンダラとの連携強化によって変わっていくかもしれません。ここでは本誌2015年7月号(203号)に掲載された弊社SV・今泉隼介による戦車モデルをベースに、戦車と背景のマテリアルを作成していきます。
画像は、最もシンプルなPBRマテリアルの一例です。カラー、メタリック、ラフネス、ノーマルに、それぞれ該当するテクスチャが接続されています。テクスチャ容量の削減のためにRGBaの各チャンネルを、それぞれグレースケールテクスチャとして扱うこともできます。
UE4の「マテリアルエディタ」はMayaでいうハイパーシェードのように、ノードを繋ぐことでマテリアルが組めるようになっています。固定されたプリセットのようなものがないので、複雑な構成のものをつくる場合、知識と習熟が必要です。学習には公式のサンプルなどを参考にするとよいでしょう。また、PBRマテリアル用のテクスチャを作成するには「Substance Designer/Painter」「Quixel」「MARI」などの、PBRワークフローに対応した3Dペイントツールが作業効率を高めます。
オリジナル戦車レンダリングイメージ
UE4のマテリアルエディタ
POINT 1
UE4にはAllegorithmicのSubstanceプラグインがインテグレートされているため、.sbsar形式のマテリアルをインポートすることができます。Substance はMaya、3ds Max、Unityなどにも対応しており、共通のマテリアルを使用できます。もし、複数のツールを横断できるマテリアル資産を蓄積したいのであれば、Substanceの導入をオススメします
POINT 2
Unityには、UE4のようなマテリアルエディタは存在しません。あらかじめ用意されているビルドインシェーダか、自作のシェーダコードをマテリアルに適用します。なお、「Shader Forge」という、UE4のマテリアルエディタによく似た機能をアセットストアから購入することもできます
7 アセット配置によるレベルの構築
用意したアセットを使って、レベル(シーン)を組み立てていきます。UE4のビューポートはMayaなどに比べて動作が軽く、最終ルックに近い質感を確認しながら作業できることに大きなメリットがあります。
レベルの構築。[ファイル→アクタ→レベルにインポート...]の機能を使えば、3DCGツールで構築したシーンを丸ごとインポートすることも可能です
POINT 1
UE4での単位は1=1cmです。3DCGツール側で単位を揃えておきましょう。ビューポート右上のスナップ機能は配置作業の際にとても便利です。物理制御などの挙動に影響するため、特別な理由がない限りスケールは原寸で扱うことをオススメします
POINT 2
レベル(シーン)に使われるモデル、マテリアル、テクスチャの数が増えれば増えるほど、処理負荷はかけ算で増大します。なるべく少ないアセットの組み合わせでレベルを構築するように心がけ、インスタンスを用いたモジュラー化などで最適化します
POINT 3
UE4では「ブループリントクラス」を使うと、複数のアセットをひとつにまとめたり、スクリプト制御などを加えたものを登録できます。Unityでは「Prefab」で、同様の作業を行うことができます
8 ライティング
指向性ライト(並行光源)、ポイントライト、スポットライト、スカイライト(無限遠のIBLライト)の4種類です。スカイライトには、レベル内に1つしか存在できないという制限があります。また、プリレンダリングとちがい、1つのライトに3つのカテゴリが存在します。大規模な地形などの場合、処理負荷に大きく影響しますので理解が必要です。
ライティングのエディット
POINT 1
「ライトの可動性」という概念はプリレンダリングに慣れた人には理解しにくいかもしれません。しかし、リアルタイムレンダリングにおける高速化の重要な要素です。ワークフローにおいても、ライトビルドにかかる時間が制作スケジュールを左右します。ゲームエンジンで映像制作を行うにあたっては、まずライティングのしくみを理解しておきましょう
POINT 2
ライトを事前ベイクするためにはライトマップ用のUVが必須になります。UE4にはライトマップUVを自動展開してくれる機能がありますが、ライトベイクの結果に不具合のある場合は、自動作成のUVが適切かどうか確認し、手作業で調整します
POINT 3
UnityにもUE4と同様にスタティックライトの事前ベイク機能が存在します。ただし、ステーショナリーライトに該当するものはありません
POINT 4
UE4でもV-Rayのように「IESプロファイル」を使用することができます。ただし、IESプロファイルを割り当てることができるのはステーショナリーかムーバブルのポイントライト、およびスポットライトに制限されています。スタティックライトに割り当てると、見た目に不具合が生じます
UV展開によるライトマップの不具合。左から、UVが調整された例、効率の悪い例、UVが設定されていない例。中央はUVの継ぎ目に滲みが出ている。右は、ライトマップが正常に生成されず、黒くなっている
A スタティック(静的)ライト
可動しないライティングをオブジェクトにテクスチャとしてベイクしておくこと(ライトマップ)で計算を省く、という手法を用いています。ただし、ベイクされたライティングを動的に変更することはできません
B ステーショナリー(固定)ライト
可動はしないものの輝度や色のアニメーションに対応したライトです。1つのメッシュに使えるライトは4つまでの制限があり、複数のライトを隣接して配置すると、5つめはエラー表示になって、反映されません
C ムーバブル(動的)ライト
毎フレーム計算されるライトです。処理負荷が高く、間接照明に対応していません。アニメーションする光源に使用します
9 カットシーン制作
UE4には「シーケンサー」というカットシーン作成用のエディタがあります。After Effectなどの動画編集ツールに似たタイムラインUIで、リアルタイムのカットシーンを作成できます。
シーケンサー
POINT 1
シーケンサー内に、サブトラックとして複数のシーケンサーを配置することができるため、分業して細かなカットや要素のエディットを進めることができます
POINT 2
レベルに配置したアクターをアニメーションさせるには、アクターの可動性をムーバブルに設定します。シーケンサーでアクターにアニメーションを設定しても、スタティック設定になっていると、静止したまま動きません
POINT 3
Unity 2017から「Timeline」という、カットシーン作成用の機能が追加されました。ただし、動画の書き出し機能などは2017年9月下旬に追加される予定です
POINT 4
シネマティクスにはシーケンサーのほかに「マチネ」というよく似た機能があります。マチネは古くからある機能で、シーケンサーはマチネの上位互換機能なのですが、完全移行が終わっていないためか、現在2つのエディタが重複して存在しています
10 動画または、連番ファイルの書き出し
シーケンサー(およびマチネ)には、オフラインレンダリングでの連番書き出し機能があります。作成したカットシーンをムービーに出力してみましょう。
保存フォルダと出力フォーマットを指定
POINT 1
シーケンサーのレンダリング機能ではフレーム数などを設定できますが、UE4の内部的な単位は「秒」であることに注意(GPU処理により可変フレームレートに対応しているため)
POINT 2
Gバッファの抽出で、要素レンダリングを行うこともできます
11 ポスト処理と要素レンダリング
UE4にはポスト処理機能として、様々なフルスクリーンエフェクトや自由度の高い調整機能が揃っています。しかし、V-Rayやmental rayなどプリレンダリングやAfter EffectやNUKEでのコンポジットと比較すると、アンチエイリアスや被写界深度ボケなどで荒さが目立ち、高精度の結果を得ることはできません。
そこで、Gバッファから要素レンダリングの連番を出力して、それをAfter Effectでコンポジットしてみます。Gバッファの要素はシーケンサーのムービーレンダリング設定の[Output Format]をカスタムレンダーパスに設定し、「レンダーパスを追加...」することで書き出すことができます。[Capture Frames in HDR]にチェックを入れると、HDRでのレンダリングも可能です。ぜひ活用してください。
シーケンサーのムービーレンダリング設定。連番の素材は最終レンダリングサイズの倍の大きさでレンダリング。コンポジット時に1/2に縮小して、ジャギーが目立たないようにします
UE4最終レンダリング
Unity最終レンダリング
V-Rayオリジナルアセットレンダリング
まとめ
リアルタイムレンダリングには様々な制限がありますが、用途を絞って使いどころを考えれば利用価値は高く、局所的には劇的な工数の削減につながります。
例えば、プリプロダクションにおけるトライ&エラーやオブジェクト数の多い大規模背景レンダリングなどでは作業効率が飛躍的に上がります。さらに監督の目の前でカメラワークの変更やルックの調整など修正を行いその場でプレビューを確認できるのは、リアルタイムレンダリングの強みです。このような強みを上手くワークフローに取り入れることで、大規模で高額なレンダーファームを使わなくても、比較的安価なゲーミングPC上で高速かつ高画質なレンダリングを行うことが可能になります。
すでにハリウッドメジャーでは、『ローグ・ワン/スター・ウォーズ・ストーリー』(2016)の本編中数カット、『猿の惑星:聖戦記(グレート・ウォー)』(2017)のプリビズなどで、UE4を積極的に活用した商業映画制作が行われています。今まさに、リアルタイムレンダリングを使いこなす個人や小規模プロダクションが、フルCG長編作品を制作する時代に入っているのかもしれません。
プリレンダリングとリアルタイムレンダリング、効率が良いのは?
-
株式会社ブロス 最新制作協力作品
TVアニメ『宝石の国』
TOKYO MX、MBS、BS11、AT-Xにて10月7日(土)より放送開始!
原作:市川春子『宝石の国』(講談社『アフタヌーン』連載)
監督:京極尚彦
CGチーフディレクター:井野元英二
制作:オレンジ
© 2017 市川春子・講談社/「宝石の国」製作委員会