こちらの記事では、CARA VRを使用したNUKEでのVRコンテンツ制作に関連するご質問について、Q&A形式で紹介致します。
こちらの記事で紹介致しますNUKE用VR制作プラグイン「CARA VR」の製品概要につきましては、こちらをご覧ください。
▼カメラリグとその解析、C_CameraSolverノード関係
- CARA VRはどのようなカメラリグに対応していますか?
- CARA VRはGoogle Jump リグには対応していますか?
- CARA VR のC_CameraSolverノードでRICOH THETAカメラは対応していますか?
- C_CameraSolverノードでカメラの動きをトラッキングし、アニメーションを含めてエクスポートすることは可能でしょうか?
- C_CameraSlover ノードでエクスポートしたカメラリグを、WriteGeoノードで書き出したいのですが、出力しようとするとエラーが表示されます。
■CARA VRはどのようなカメラリグに対応していますか?
C_CameraSolverノードにはFreedom 360、Nokia OZO など代表的なVRカメラに対するプリセットが含まれています。カスタムの設定もあり、そちらを使用するとカメラの数を任意に指定することが可能です。
CARA VR 1.0v3で選択可能なプリセットは以下の通りです。
■CARA VRはGoogle Jump リグには対応していますか?
CARA VR 1.0v3以降で対応しております。
C_CameraSolverノードのプリセット内に、Google Jumpが追加されており、Toolsets内にも、Google Jumpのメタデータを利用してデプス情報を抽出するツールセットが追加されております。
尚、Google Jumpリグを使用する場合は、.txtファイルまたは.jsonファイルもインポートする必要があります。[Preset]ドロップダウンリストから、必要なプリセットを選択し、[Setup Rig]を選択してファイルを参照してください。
■CARA VR のC_CameraSolverノードでRICOH THETAカメラは対応していますか?
現時点のCARA VRは、正式にはRICOH THETAカメラに対応しておりませんが、同様のカメラからいくつか成功した事例がありますので、その際の設定を紹介致します。
良い結果を得るには、CARA VR で解析を行う前にC_CameraSolverノードのFocal Lengthを9.9に設定しておく必要があります。
※実際に使用するカメラや素材によっては、この値を調整する必要があります。
基本的な手順は以下のとおりです。
- C_CameraSolverノードを作成し、フッテージを読み込んだReadノードに接続します。
- C_CameraSolverノードのプロパティを開きます。
- [Set global camera parameter]を有効にします。
- [Focal Length]を9.9に設定します。
- [Match]、[Solve]を順に押して、結果を確認します。
CARA VRによる解析が行われない場合は、[Focal Length]の数値を調整し、正しく解析できるまで手順4と5を繰り返してください。
■C_CameraSolverノードでカメラリグの動きをトラッキングし、アニメーションを含めてエクスポートすることは可能でしょうか?
C_CameraSolverノードの仕様により、単体では行えません。
C_CameraSolverノードは、カメラがお互いに関連性のある環境で動作するように設計されており、周りの環境と関連性があるようには設計されていません。
C_CameraSolverノードからエクスポートしたカメラリグにアニメーションを追加するには、CameraTrackerノードを使用して3D空間での動きを取得する必要があります。
■CaraVRのC_CameraSlover ノードで解析を行った後に、[Cameras]を選択してエクスポートしたカメラリグのデータをWriteGeoノードで書き出したいのですが、出力しようとすると以下の画像のようなエラーが表示されます。
エラーは、WriteGeoノードの[views]に複数のビューが選択されていることによって発生しています。
そのため、CARA VRのC_CameraSolverノードから出力したカメラをFBXまたはABC形式で出力する場合、以下のいずれかの操作を行い、WriteGeoノードの[views]をmainのみにした状態で、[Execute]ボタンからエクスポートを行う必要があります。
[1]カメラをコピーしてView設定のないCompファイルで出力する方法
WriteGeoノードは、現在開いているCompファイルのProject Settings内のView設定を参照します。新規作成したCompファイルのView設定はmainのみですので、そちらにエクスポートしたいカメラをコピーすることで、問題を回避できます。
- C_CameraSolverノードの[Export]メニューからカメラを出力します。
- 出力されたノード(Axis、Camera、Scenes)すべてを選択し、[Ctrl+C]キーでコピーします。
- [Ctrl+N] キーで新しいCompファイルを開き、Node Graphタブ内で[Ctrl+V] キーを押してペーストします。
- コピーしたノード群の中から、Sceneノードを選択し、WriteGeoノードを作成します。
- WriteGeoノードでFBXまたはABC(Alembic)形式を選択して、フォルダ等を設定し、エクスポートを行ってください。
[2]Writeノードのビュー設定にリンクさせ、Writeノード側の設定をmainのみにする方法
CARA VR 1.0v2以降をご使用の場合は、NUKEのWriteノードのに[Cara vr]タブが追加され、プリセットでmainビューのみを選択できます。これを利用し、Writeノードで設定した内容をWriteGeoノードで参照して問題を回避します。
- C_CameraSolverノードの[Export]メニューからカメラを出力します。
- 出力されたノードの中のSceneノードを選択し、WriteGeoノードを作成します。
- 選択を解除してから、Writeノードを作成します。
- Writeノードと、WriteGeoノードのプロパティを同時に開いた状態にします。
- Writeノードの[views]の右側にある[=]ボタンを[Ctrl]キーを押しながらドラッグし、 WriteGeoノードの[views]の右側にある[=]ボタンの上でドロップします。
- WriteノードのCARA VRタブの設定で[main]を選んで[Set]を押します。
- WriteGeoノードでFBXまたはABC(Alembic)形式を選択して、フォルダ等を設定し、エクスポートを行ってください。
尚、上記のどちらの方法でも、ノード毎にNUKEまたは他の3DCGソフトウェアで使用可能な別々のカメラオブジェクトとして保存することができます。
▼ステッチング、C_Stitcherノード関係
- CARA VRでのステレオシーケンスのステッチングは可能でしょうか?
- 大きく動くものが含まれているシーケンスは、CARA VRでステッチングは可能でしょうか?
- Cara VRによるステッチング作業で、解析が難しい素材は何かありますか?
■CARA VRでのステレオシーケンスのステッチングは可能でしょうか?
はい、対応しております。C_Stitcherノードのプロパティを切り替えることでステレオシーケンスのステッチングが可能です。
ステッチングの詳細は、こちらのThe Foundry社による日本語の動画よりご覧いただけます。
■自動車等、大きく動くものが含まれているシーケンスが対象の場合、ステッチングの結果がおかしくなることが良くありますが、CARA VRではそのような素材のステッチングは可能でしょうか?
CARA VRは独自の方式でステッチングを行うため、シーケンス内に動いているものがあった場合も、指定したキーフレーム間で補間して、比較的安定したステッチングが可能となっております。
また、C_SphericalTransformノードを利用して、一部に対してNUKEのノードで個別に修正することも可能です。
撮影に使用したリグ自体が不安定となっており、それが原因で撮影されたシーケンスが大きく動いているという場合は、スタビライズを行うことができます。スタビライズの方法につきましては、こちらをご覧ください。
■Cara VRによるステッチング作業で、解析が難しい素材は何かありますか?
すべての360 ステッチングに関するひとつの既知の問題として、カメラリグから数センチメートルの所から数キロメートルまで離れた大規模な深度がシーンにあるときは、注意が必要です。
例えば、モーターバイクの運転手のヘルメットにカメラリグを設置して撮影した素材に対して、ヘルメットを除外し、周囲を結合して解析するのは収束の理由で非常に難しくなります。(この場合は、モーターバイクが移動するにつれて、後方の地面のポイントは水平線に近づき、最終的に水平線と重なってしまいます。)
CARA VRを使用してステッチングを行う場合、基本的にはC_CameraSolverノードとC_Stitcherノードの設定を調整することで解析結果を改良したり良い結果を得ることができますが、ショットや使用するカメラによっては、最適な解析結果を得るために異なる設定を調整する必要がでてきます。
▼VR コンテンツの合成、C_SphericalTransformノード関係
- リグの解析とステッチングをした後の不要な部分を修正するには、どのような方法がありますか?
- C_SphericalTransformノードを使用して修正を行った後に再度Lat-longに変更したところ、変換前の結果と一致しません。
- 複数のカメラに含まれるような領域に対して合成を行いたい場合、CARA VRではどのような方法がありますか?
- CARA VRによるVRコンテンツの制作に関して、実写素材にCGを合成したい場合、どのような作業が必要ですか?
■リグの解析とステッチングをした後に、不要な部分を修正して合成するには、どのような方法がありますか?
CARA VRで特定の範囲のものを修正するには、C_SphericalTransformノードを利用して、編集したい範囲をLat-longからRectlinearに変換し、通常のNUKEのノードで修正し、再度C_SphericalTransformノードを使用してRectlinearからLat-longに再変換し、Mergeノードでステッチング後のシーケンスと合成するという作業が基本的な合成方法です。
二つのC_SphericalTransformノードの間(以下の画像の赤枠部分)であれば、NUKEのノードを使用して通常通りの合成作業を行うことができます。
詳細につきましては、こちらのThe Foundry社による日本語の動画よりご覧いただけます。
■C_SphericalTransformノードを使用して、Lat-longからRectlinearに変換して、修正を行うことまではできましたが、再度Lat-longに変更したところ、変換前の結果と一致しません。
まず、C_SphericalTransformノードを確認してください。一部分を抜き出したRectlinearの画像を正常にLat-longに戻すには、最初に変換を行ったC_SphericalTransformノードに合わせた操作を行うノードを適用する必要があります。
そのようなノードを作成する一番簡単な方法は、Rectlinearに変換したC_SphericalTransform ノードのプロパティで[C_SphericalTransform(Invert Linked)]を使用することです。
こちらを使用することで、設定内容を参照してLat-longに戻すC_SphericalTransform ノードをすぐに作成することができます。作成されたノードは、以下の画像のように接続します。
※画像ではコネクション上にDotノードがありますが、こちらはエクスプレッションとコネクションが重なるため、追加したものです。通常は必要ありません。
また、C_SphericalTransform ノードでRectlinearに変換を行った後に、Cropノード等で画像自体の形を変えてしまうと、編集後の結果と元画像が一致しないことがありますので、ご注意ください。
■複数のカメラに含まれるような領域に対して合成を行いたい場合、CARA VRではどのような方法がありますか?
ステッチングを行って、Lat-Longの状態でキーイングまたはマスクを作成して差し替えるといった手順になるかと思います。
差し替える画像がLat-Longではない場合は、その変換が追加で必要となりますが、差し替える画像がLat-Longの場合は、3D空間を構築する必要なく、そのまま合成が可能です。
■CARA VRによるVRコンテンツの制作に関して、実写素材にCGを合成したい場合、どのような作業が必要ですか?
C_CameraSolverノードにて、計算した結果からCameras(カメラオブジェクト) を出力することができるため、それをWriteGeoノードにてファイルに出力し、3DCGソフトウェア側へ渡すことは可能です。
また、動いているVRカメラリグの場合は、CGを加えたいBGでC_SphericalTransformノードを使用する必要があります。そして、それをNUKEのCameraTrackerでトラッキングします。それから、CG用に球体モードでレンダリングするためにCameraTrackerを使用してカメラをエクスポートします。
静止しているカメラリグの場合は、3DCGソフトウェアで球体カメラを作成し、焦点距離とフィルムバックサイズがC_CameraSolverノードの結果と一致するように設定を行います。
尚、こちらに関しては、改めてこのブログでも紹介する予定です。
▼VRコンテンツのトラッキング、CameraTracker、C_Trackerノード関係
- カメラリグのスタビライズをCARA VRで行う方法を教えてください。
- C_Trackerノードでフッテージの一部だけをトラッキングする方法はありますか?
- 素材のデータサイズが大きい場合に、 CameratrackerやC_Trackerの計算を軽くする方法はありますか?
- 素材のデータサイズが大きく、トラッキングの途中で強制終了してしまいます。
- 長尺のVRシーケンスの一部だけに対してトラッキングを行い、カメラを修正して、元のシーケンスの結果と差し替えたいのですが、最初と最後をオリジナルのシーケンスと一致させる方法はありますか?
- NUKEとCARA VRを使用して、VRシーケンスにスタビライズをかけた後に、一部が動いたままになってしまいます。例えば、奥の水平線がとまってもカメラリグの周辺が動いたままになるのですが、修正方法はありますか?
■カメラリグのスタビライズをCARA VRで行う場合、どのような操作が必要でしょうか?
360°シーケンスのトラッキングとスタビライズ方法としましては、Lat-longから通常の形式(Rectlinear)に変換して、CameraTrackerノードを使用する方法と、360°シーケンスから直接CARA VRのTracker(C_Trackerノード)を使用する方法がございます。
それぞれの手順の詳細につきましては、こちらのThe Foundry社による日本語の動画をご覧ください。
■フッテージの一部だけをC_Trackerノードでトラッキングすることは可能でしょうか?
はい、可能です。C_Trackerノードでフレーム範囲を指定してトラッキングするには、トラッキング実行時に[track forward range]ボタンを使用します。
こちらのボタンを使用することで、トラッキング開始フレームと終了フレーム、ステップを指定するウィンドウが開きます。例えば、1フレーム目から100フレーム目のトラッキングのみ行う場合は、[from]に1、[to]に100を入力し、[OK]ボタンを押してください。
■データサイズの大きい素材を使用してVRコンテンツを制作する場合に、 CameratrackerノードやC_Trackerノードの計算を軽くする方法はありますか?
CaraVRに関する処理速度をスピードアップさせる方法は、以下の通りです。
- ネットワークドライブではなく、ローカルのストレージにSSD搭載してファイルの読み書きを行ってください。
- movまたは他の動画ファイル形式ではなく、DPXファイルを読み書きに使用してください。
- NUKEが使用できるVRAMを増やしてください。[Edit] > [Preferences…] > [Performance/Hardware]の[GPU texture cache size]で調整が可能です。
- 2013年以降のMacをご使用の場合は、マルチGPUを有効化してください。設定手順につきましては、こちら(英語)をご覧ください。
- GPUが使用可能であれば、GPUを使用してください。[Edit] > [Preferences…] > [Panels/Viewer]にある2つのオプションを有効化することで、計算に使用されるようになります。
- Viewerタブ内のDownrez 機能を使用してください。
- ステッチングの結果が良いときのみ、C_Stitcherノードの後にプリコンプを行ってください。C_Stitcherノードより後(下流)の計算を速くすることができます。
- CARA VRを最新バージョンにアップグレードしてください。NUKE本体は、CARA VRが対応している最新バージョンをインストールしてください。
- レンダリング中に複数のNukeインスタンスを実行し、各インスタンスに異なるフレーム範囲をレンダリングさせてください。
- トラッキングに関しては、トラッキングする範囲が一部の場合、その一部のみにAlphaチャンネルを使用してトラッキングさせることも有効です。
■素材のデータサイズが大きく、トラッキングの途中で強制終了してしまいます。
トラッキングが長時間行われている間に強制終了してしまうような場合は、Nukeの自動保存機能が関連している可能性があります。自動保存が行われた時に、トラッカーデータのシリアライゼーション(並列処理の直列化)が非常に集中して、クラッシュの原因となることがあります。
自動保存を無効化するには、[Edit] > [Preferences…] で開いたウィンドウの左側から[General]を選択し、 [Autosave]の[idle comp autosave after]および[force comp autosave after]を「0」に設定してください。
完全に無効化したくない場合は、デフォルトの30秒より保存頻度の低い設定を行ってください。
■長尺のVRシーケンスの一部だけに対してトラッキングを行い、カメラを修正して、元のシーケンスの結果と差し替えたいのですが、最初と最後をオリジナルのシーケンスと一致させる方法はありますか?
カメラの修正を行ったノードの下に、ProjectionでLatlong-Latlongを設定したC_SphericalTransformノードを追加し、[Rotation Angles]の値を、差し替える最初のフレームと最後のフレームが一致するようにアニメーションを設定してください。
これにより、トラッキングして修正されたショットの両端と、オリジナルのシーケンスが一致するようになります。
■NUKEとCARA VRを使用して、VRシーケンスにスタビライズをかけた後に、一部が動いたままになってしまいます。例えば、奥の水平線がとまってもカメラリグの周辺が動いたままになるのですが、修正方法はありますか?
カメラ(もしくは一部のカメラ)がわずかに同期から外れて、ローリングシャッター現象が発生していることにより、CameraTrackerノードまたはC_Trackerノードが正しく解析できていない可能性があります。
そのような場合は、まずオリジナルの撮影素材からローリングシャッター現象の歪みを修正し、それからスティッチングとスタビライズを行ってください。
▼レビュー関係
■ソフトウェア内でVR結果を確認するためのViewerは用意されていますか?
CARA VRを使用した場合、Oculus Rift、HTC Vive等のヘッドマウントディスプレイをご使用のマシンに接続することで、NUKE のMonitor Output機能を利用してプレビューを出力することができます。
また、簡易的なプレビューとなりますが、NUKE の3Dコンポジット系のSphere ノードやCameraノード等を利用しても、3Dビュー上で表示して確認することが可能です。
▼VRコンテンツの レンダリング関係
- CARA VRで編集したデータをレンダーファームでレンダリングしようとしたところ、エラーが表示されました。
- CARA VRのレンダーノードとはどのようなものですか?
- CARA VRレンダーノードを使用するメリットはありますか?
- CARA VRのスクリプトファイルをレンダリングする際にGPUを使用する方法はありますか?
- Writeノードでレンダリングする対象のViewを素早く選択する方法はありますか?
- 画像をレンダリングする場合に、1つの画像にそれぞれのView情報を保存することは可能でしょうか?
■CARA VRのツールを含む.nkレンダリングをレンダーファームを使用して行おうとしたところ、”caravr_nuke_r”ライセンスが取得できずレンダリングできませんでした。
CARA VRのレンダリングに関しまして、レンダリングファームで 「nuke_r」を使用してレンダリングする場合は 「caravr_nuke_r」が必要となります。
The Foundry社製品のライセンスの仕組みにつきましては、こちらをご覧ください。
■CARA VRのレンダーノードとはどのようなものですか?
レンダーノードはレンダーライセンスを意味します。
CARA VRのノードを含むNukeスクリプト(.nk)をレンダーファームやターミナルでレンダリングしたい場合は、CARA VR レンダーライセンス「caravr_nuke_r」が必要となります。
■すべてのツールセットがGPUベースになっているようですが、CARA VRレンダーライセンスを使用するメリットはありますか?
GPUアクセラレーションノードを使用すると、CARA VRノードの処理速度は向上しますが、スクリプト内に含まれるGPUに対応していないNukeの標準のノードがCPUで処理されているため、その速度が制限されてしまいます。
NukeとCARA VRのレンダーライセンスがある場合は、制作に使用しているマシーンのリソースに縛られることなく、レンダリング用マシンでCARA VRのスクリプトファイルのレンダリングが可能です。
■CARA VRレンダーノードを使用する際に、GPUを使用してレンダリングする方法はありますか?
互換性のあるGPUをお持ちでしたら、「–gpu 0」をレンダリングコマンドに追加することで、GPUを用いてレンダリングを実行することができます。
■Writeノードで書き出す際に、[Views]の項目が、Compファイル内に設定されているViewのすべてが選択された状態になります。mainのみをレンダリングしたい場合、一括で選択する方法はありますか?
CARA VR 1.0v3の新機能を使用することで、mainのみ選択する、またはすべてのViewを選択するといったことが可能です。mainViewのみレンダリングする場合の手順は以下の通りです。
- 書き出しを行うWriteノードのプロパティを開いてください。
- [CaraVR]タブを開いてください。
- [View Presets]をmainに設定し、[Set]を押してください。 [Write]タブ内の[views]がmainのみになっていることを確認してください。
- レンダリングを行ってください。
[View Preset]では、main以外に、[stereo] [cams] [all]というプリセットを選択することも可能です。
■画像をレンダリングする場合に、1つの画像にそれぞれのViewの情報を保存することは可能でしょうか?
はい、複数のView情報があるストリームにWriteノードを接続し、ファイル形式をOpenEXRに変更することで、Writeノードで指定したView情報を.exrファイルに含めた状態でレンダリングすることができます。
▼その他
- CARA VRをインストール後に、CameraTrackerノードのExportメニューにCARA VRのノードが追加されません。
- C_SphericalTransformノードとSphericalTransformノードの違いは何でしょうか?
- NUKE 10.5v1上でCARA VRのノードが呼び出せません。
■CARA VRをインストールしましたが、CameraTrackerノードの[Export]プルダウンメニューにC_SphericalTransform(またはC_MetaDataTransform) が見つかりません。
CARA VR v1.0v1では、NUKE 10 上で使用した場合にCameraTrackerノードの[Export]メニューに[C_Spherical_Transform]および[C_MetaDataTransform]の項目が表示されない不具合が発生していました。
現在、これは修正されています。そのため、CARA VR 1.0v1をご使用の場合はCARA VRを一度アンインストールしたのち、 最新のCARA VR をインストールしてください。
CARA VRの最新版インストーラはこちらよりダウンロード頂けます。
※The Foundry社サイトのアカウントでのログインが必要となります。
例えば、CARA VR 1.0v3であれば、CameraTrackerノードの[Export]プルダウンメニューの下部に[C_SphericalTransform]および[C_MetaDataTransform]が表示されます。
■CARA VRのC_SphericalTransformノードとNUKEが持つSphericalTransformノードの違いは何でしょうか?
SphericalTransformノードは、.hdr等のHDR画像に対して、位置の調整や、環境マップのタイプの変換を行うためのノードです。
(例:ミラーボールを使用して撮影した環境マップ用の画像をLat Longに変換する)
C_SphericalTransformノードは、基本的な効果はSphericalTransformノードと同様に、Projectionのタイプ変換を行いますが、[Rectlinear]の追加等、360度のコンテンツ制作用に設計されているノードです。またGPU アクセラレーションにも対応しています。
■NUKE 10.5v1上でCARA VRのノードが呼び出せません。
CARA VR 1.0v3は、NUKE 10.0v4またはNUKE 9.0v9に対応しております。NUKE 10.5v1は、CARA VR の次期バーションで対応する予定となっております。