2016年9月21日

Illusion Ray Studio が UE4 で3D 動画や VR を制作するための情報を共有

作成 Lucas Smaga and Dominik Sojka

私はポーランドのスタジオ、Illusion Ray の設立者である Lucas Smaga です。これまで、Platige Image と Fuero Games などでの勤務経験があります。弊社のアート ディレクターである Dominik Sojka と共に、アンリアル エンジン 4 (UE4) を使って 3D 動画と VR を制作する方法をご紹介したいと思います。 

Dominik と私はゲーム業界と映画産業の仕事に長年携わってきました。UDK で Oculus Rift DK1 向けにデザインした Dino Safari プロジェクトから VR の模索は始まりました。UE4 のリリースに伴い、UE4 を考慮に入れてこの動画を拡張しました。それから、VR 動画作成を始めました。これまで、5 つの VR 動画 (『Dino Safari』、『Motoride』、『Afterlife』、『The Colossus』 および 『SolarSystem』) を作りました。また、『Pirates 3D』というステレオスコピック動画もつくりました。また、『Silent Hill PT』の雰囲気にインスパイアされた新しいゲームをフォトグラメトリを使って作っています。

IllusionRay_Pipeline-770x433-73f0f1783ffa9bf1526f0bbe74a9e9af7d064983

パイプライン

各プロジェクトで若干異なるものの、ほとんどのケースでパイプラインは以下のようになります。注意:このタイムラインは動画全体だけでなく、シーン毎に使用することもできます。これから、Solar System プロジェクト完成の経緯を説明します。この作品は、今年の夏、ポーランドの 7Dmax シネマで上映されました。このプロジェクトでは個々のシーン / 惑星が個別に処理されています。

スクリプトとワークフロー

最初にジャンルと雰囲気を決めました。次に、具体的なコンテンツのアイデア、およびシーンの分類と各シーンのタイミングなどのスクリプト全体を決めました。弊社の動画は 10 分に満たないものばかりなので、あらゆるシーンのタイミングを慎重に計画しなければなりません。各プロジェクトについて、Pinterest のウォールを作り、インスピレーションとアイデアを集めました。タスク管理は動画毎に Trello のウォールを用意し、行動計画とその期限を定めました。決まっていなくても期限を設定することをお勧めします。そうしないと時間が足りなくなって作業が終わらなくなります。スケジュールの開発マイルストーンを守ることでプロジェクトの遂行が可能になり、その進捗を絶えず監視することができます。当たり前のことですよね。実際、動画、ゲームのどちらを作る場合でも締切はなくてはならないものです。

ブロックアウト

シーンのブロックアウトを 3D ソフトウェアを使って作成後、全体をアンリアル エンジンにインポートしました。メッシュのコリジョンについては、“use complex collision as simple” のオプションにチェックを入れています。続いて、VR での大きさと比率の感覚が合っているかをチェックします。コツ: 通路は実際よりも少し大きめにするとよいでしょう。

アニマティクス

いよいよパイプラインの中で最も重要な部分である、動画のアニマティクスに入ります。この段階では、カメラの raw の動きと基本的なキャラクターとオブジェクトのアニメーションを作成します。ブロックアウトも調整します。ほとんどの場合、スプラインに沿うカメラ アニメーションを使うため、カメラの動きはアンリアル エンジンの外部で行われます (“Camera Rig Rail” はシーケンサーで初めて導入されましたが、我々はマチネを使ってきました)。この時点ではカメラのタイミングが我々にとって最も重要でした。

準備ができたら、アニマティクスをカメラと共に UE4 に取り込み、VR でテストしました。ここで重要となるのは、「カメラの感覚」です。例えば、動きを適切な速度にする、視聴者が不快感や酔いを感じないかなどです。この段階では、多くの試行錯誤があります。チェックし、改善したら、また戻ってチェックし、再度改善したりします。

アニマティクスには、シーンでより詳細な場所、カメラが比較的長く停止する場所、近くで何かを表示する場所などの情報が含まれることを覚えておいてください。最終的にこれがモデルに影響を及ぼします。アニマティクスを使うと、どのモデルの詳細度を高くするか、または低くするかを把握することができます。

IllusionRay_MainModelsAndBasicLights-770x415-53e2dc656165e7393afa8c0a46d3a8967d66c889

メイン モデルと基本ライト

ここから面白くなります。基本的な 3D オブジェクトのモデリングを開始します。簡単に言うと、ブロックアウト全体を、ウォール、インテリア、建物、アイテム、その他のモジュール式の 3D モデルに変換します。

IllusionRay_Pic3-770x722-e73202f547455ccc8fb07321766d529f29981c0e

次に、アンリアル エンジンで全体を基本的なライティングと親のシェーダーでまとめます。キャラクターとアニメーションはアニマティクスおよびスクリプトとガイドラインの話し合いに基づき並行して作成されます。

IllusionRay_Lighting-770x722-dd4193217cdaae505d9da0ba02685507ffea24ac  

ライティング:

最適化のために、主にベイクしたライトを使います。我々の用途では、動的シャドウを無効にした (もちろん、これが不要な場合のみ) 固定ライトを利用するのが最適だと考えました。この方が、静的なライティングよりも反射がうまくいきます。注意:固定ライトはひとつのエリアに対して数が 4 つに制限されています (マテリアルが 4 RGBA チャンネルのため)。そのため、注意深く選択しなければなりません。非常に弱い明るさの静的ライトを多用しました。これは、ラフネス オプションを 1 に設定した GI (グローバルイルミネーション) のシミュレーションに最適です (こうすることでオブジェクトに当たってバウンスしません)。さらに、ほぼすべてのライトがライト プロファイルを使用し、より優れたリアルなフェードを実現します。これまで Koola が用いた素晴らしい方法 (白い平面をスポットライトで照らし、ベイクするやり方) を時々使ってきました。これまでのすべての動画は、ポータルのライトがなかったアンリアル エンジン 4.11 より前のものを使用して作成しました。

雰囲気と仕上げ

基本的な背景が用意できたらプロップを追加します。カメラの動きに基づきこれらを作成し、各ビデオ フレームが適切な構成とウェイトを持つようにします。その後、基本的なエフェクトや色対応表を含む一般的なポストプロセスを行います。個々のシーン / 部屋に対して、雰囲気を少し変えたり、改善するポストプロセスをさらに行います。このとき、各シーンのパーティクルも作成しました。

IllusionRay_MatineeSoundsandCamera-770x415-952c77750a15b16dd536abaa1f84060f687c23fd  

マチネ、サウンド、カメラ:

これは動画制作プロセスにおいて非常に重要な最終部分です。この段階で、すべてのオブジェクトをアニメートします (ドア、窓、パーティクル、スケルタルメッシュ アニメーションの起動、ライトの変更、ポストプロセスのアニメーションなど)。メインのインポートされたカメラには、プラグインのセカンド カメラがあります。これは、振動などの他の微小な動きの情報を持っています。連続的なシーンやシーケンスのタイミングで大きな変更を加えずに、カメラを最終的に微調整するのもこの時点です。

サウンドはこの段階の最後に加えられます。サウンドの一部は、トリガー (ブループリント経由) によって開始されます。または、マチネ (通常、環境音用) によって開始し、他のサウンドはアニメーションでスケルタルメッシュに接続されています (通知)。

IllusionRay_Optimization-770x415-1089027b3e4623c00d3644729868aa4f138cc443

我々はこうしたインタラクティビティを長年マチネで実現してきました。もちろん、皆さんは新しいシーケンサーのシネマティック エディタを使って行うことができます。

最適化:

我々のターゲットは、GTX 970 です。90 FPS から 1 秒でも譲れません。視聴者が不快に感じるゴーストや遅延が生じるからです (89 FPS でもこうしたエフェクトは目立ちます)。

ドローコールを減らすためにモデル毎に不要なマテリアルを減らすことは重要です。画像の品質に影響を与えないようなやり方で可能な限り行うべきです。上記に加えて、Cull Distance Volumes (カリング距離ボリューム) も追加しました。ただし、基本は GPU と CPU のプロファイラーを使うことです。これらはボトルネックを見つけるうえで非常に役立ちます。

各プロジェクトは、できるだけ多くのレベルに分けました。これらは最初に読み込まれ、表示され、隠されます。近距離で透明なオブジェクトの可視性も制限しました (“Camera Distance Fade” の適用)。最も重要なのは、スケルタルメッシュ上の動的シャドウを減らすことです。これは、FPS の低下に最も影響を及ぼすからです。

もちろん、モデルだけでなくパーティクルに対しても LOD (Level of Detail) オプションを使用することをお勧めします。

最後に何らかの FPS になったら、スクリーン比率を 100 より高く設定することができます。これにより画像全体を鮮明にする効果があります。Temporal AA を画像解像度に制限しているからです。


ヒントとコツ

あと少しで終わります。以下は実務ベースのヒントです。

APEX CLOTH

Apex をクロスだけでなく、髪、宙を舞うゴミ、カーテンなどにも使用することをお勧めします。

シミュレーションをアンリアルに転送する

ある 3D ソフトウェアから別のものにシミュレーションを転送するには、まずトランスフォームをベイクしてすべてのアニメートされたオブジェクトをボーン / Null / ダミーに親子付けし、それらをスケルタルメッシュとしてエクスポートします。特定のパーティクルを作成し、それらをプレーンで置換し、アニメーション全体を同じようなやり方でエクスポートして面白いエフェクトを作ることができます。

アンリアル エンジンでは、アニメートされたブレンドシェイプ (モーフ) をインポートすることができます。


 

マテリアルをアニメートする
アンリアル エンジンでは、マテリアルのパラメータをマチネまたはシーケンサーからアニメートできることを覚えておいてください。こうしたやり方で、World Position Offset を使用する、またはオリジナルの Dissolve を作成することで面白いエフェクトを作ることができます。

IllusionRay_AnimatingMaterials-770x415-3f08aa1bd49e4b23d24843b78e6dcd00db48fc03

MUSCLE SYSTEM
筋肉系をアンリアル エンジンにエクスポートするために、筋肉の頂点にコンストレイントを使って、複数のスキンされたボーンを作成した筋肉系に追加することができます。次に、こうしたボーンのトランスフォームをすべてのフレームにベイクし、UE4 にエクスポートします。

テクスチャのタイリングは避けた方がよい
広いエリアだとタイリングが見えてしまうことがよくあります。ディテール テクスチャの追加や様々なマテリアルで一部をペイントするなどの明らかな方法以外に、距離に応じてタイリングを少し変えるのは良いやりかたです (ピクセル深度)。テクスチャをクローンし、タイリングを減らし、回転することをお勧めします。続いて Perlin ノイズをマスクとして使って、これをメイン テクスチャと接続します。こうしたすべてのもの以外に、別のマテリアルを急勾配の場所のテレインに、例えば上方向のベクターと頂点ベクターの Dot Product (内積) によって追加するのもよい方法です。(VertexNormalWS dot 0.0.1)


様々なテクスチャ

ゲームでは草、低木、場合によっては一部のプロップなど基本オブジェクトが何回も再現されます。従って、そのテクスチャに若干の色の変化を加えると良いでしょう。例えば、UV のノイズ オプションを “Absolute World Position” (マテリアルのオフセットを除外) にすると、サチュレーション / 色/ 明るさが変化したり、ほこりや汚れなどの新たなエフェクトが加わります。

終わりに

我々の知識を皆さんと共有する機会を与えてくださったエピック ゲームズに感謝いたします。また、仕事に戻ります。現在、『The Beast Inside』のデモを制作中です。これはスリラー ゲームで、Adam が、他の人の過去の暗い記憶やトラウマを探検する物語です。我々と同じ業界の皆様、または他業界の方々からのコメントやご意見をお待ちしています。Facebook で 『The Beast Inside』 の情報をチェック してください。弊社の情報については 公式ウェブサイトFacebook ページ もご覧ください。