CARA VRでのVRコンテンツへの3Dオブジェクトの合成方法[パート2]

※使用しているNUKEのバージョン:NUKEX 10.0v4
使用しているCARA VRのバージョン:CARA VR 1.0v3

こちらでは、パート1の記事に引き続き、NUKEXおよびCARA VRから取得したカメラを使用して、3Dオブジェクトを実写の360度フッテージに合成する方法について、紹介致します。

※フッテージ提供:VoltFX社(Credits: Footage provided by VoltFX.)

 

▼出力するカメラについて

まず、前回簡単に紹介したカメラのエクスポートに関して、今回のフッテージで該当する「カメラリグが動いている場合」の設定を、あらためてご紹介致します。

 

カメラリグが動いている場合

カメラリグが動いている場合は、パート1の記事の最後でもお伝えしました通り、その動きの情報が必要となりますので、C_SphericalTransformノードを作成し、調整後の360度フッテージを接続します。この際、調整後の結果をWriteノードを使用して連番画像として書き出しておくことで、計算時間を短縮することができます。

C_SphericalTransformノードは、[Output][Projection][Rectlinear]に設定して、通常のNUKE(X)のノードが使用できる空間に変換します。デフォルトの変換場所がカメラのトラッキングを行いづらい場合は、[Rotation]のメニューを使用して位置を調整することができます。

変換した後のViewerの表示結果は、以下の通りです。

上記の画像の中には、パート1の記事で消し込みを行った部分が含まれています。カメラトラッキングの際に除外するため、Rotoノードを作成し、消し込みを行った部分のマスクを作成します。

※以下の画像は、一時的に消し込み前のフッテージにC_SphericalTransformノードとRotoノードを接続しています。赤い範囲が、マスクを作成した部分です。

Rotoノードの下に、NUKEXのノード、CameraTrackerノードを接続し、プロパティの[Mask][Source Alpha]にすることによって、マスクで指定した部分を除外します。

[Settings]タブの[Preview Features]を有効化してトラッキングするポイントをプレビューすると、マスクで指定した赤い範囲内には、ポイントが配置されていないことを確認できます。

[CameraTracker]タブに戻り、[Camera]の項目で、C_SphericalTransformノードの[Output]タブで指定されているパラメータと同様の設定に変更し、トラッキングを開始、解析を行います。

最終的に、[CameraTracker]タブの[Export]メニューから[Camera]を選択して、[Create]を押します。

これで、必要なカメラを取得することができました。

 

 

▼3Dオブジェクトの設定

3Dオブジェクトは、以下の2通りの方法で合成することができます。

  • Cameraノードと、C_RayRenderノードを使用してNUKE内に読み込んだオブジェクトをレンダリングし、合成する方法
  • エクスポートしたカメラを使用して、3DCGソフトウェアに持ち込み、レンダリングした結果をNUKEと合成する方法

それぞれの方法について、以下にて紹介致します。

 

 

▼Cameraノードを使用してNUKE内に読み込んだオブジェクトをレンダリングし、合成する

NUKE内で作業する場合は出力されたCameraノードをそのまま使用することができます。

レンダリング用のCARA VRのノード、C_RayRenderノードを作成し、[cam]インプットにCameraノードを接続します。

オブジェクトを用意します。今回はSphereノードで簡単なオブジェクトを使用していますが、ReadGeoノードであらかじめ作成したオブジェクトを読み込むことも可能です。各ノードの[img]インプットに画像を読み込んだReadノードを接続することで、テクスチャを使用できます。3Dオブジェクトの調整方法につきましては、こちらのページをご覧ください。以下の画像は、位置やテクスチャの設定が完了した時点の、Node Graphタブのスクリーンショットです。

以下の画像は、各設定を完了したNUKEの3D空間のスクリーンショットです。

レンダリング結果を確認するには、C_RayRenderノードをViewerノードに接続し、2DのViewerに切り替えるだけです。ただし、デフォルトでは、360度フッテージとして3D空間をレンダリングすることはできません。C_RayRenderノードのプロパティで、[projection mode][spherical]に変更します。レンダリングされる結果は、以下の通りです。

最後に、クリーンプレートのフッテージとMergeノードで合成します。

最終結果は以下の通りです。

 

 

▼カメラを使用して3DCGソフトウェアでレンダリングし、合成する

外部のソフトウェアにカメラを読み込み、そちらでレンダリングする場合は、カメラを.fbxまたは.abc形式でエクスポートする必要があります。カメラをエクスポートする方法につきましては、こちらをご覧ください。

今回は、先程使用したオブジェクトをカメラと一緒に、WriteGeoノードで.abc形式にして書き出しました。

※この後の3DCGソフトウェア側の操作は、使用するソフトウェアによって異なるため、大体の流れのみ紹介致します。

書き出したファイル(カメラ)を、3DCGソフトウェアで読み込み、レンダリングするオブジェクトをソフトウェア側で配置します。今回はMaya 2017を使用して、書き出した.abcファイルを読み込みました。

レンダリングを行うレンダラーに合わせて、カメラのレンダリング方式を[Spherical]などの、360度レンダリングが行えるものに切り替えます。MtoAでの操作方法につきましては、弊社のMayaブログこちらのページにて、詳しく紹介されております。

マテリアルの設定を行い、レンダリングしたシーケンスは以下の通りです。

レンダリングしたシーケンスの合成は、どちらもLat-longスペースになるため、単純にReadノードで読み込み、Mergeノードで合成するだけとなります。

最終結果は以下の通りです。