Import Camera from Maya to Houdini

Maya で作成したカメラを Houdini に持ち込み、Maya でレンダリングするジオメトリと Houdini で作成し Mantra でレンダリングするエフェクトが正しく合成できるようにする (2017年2月更新)。

参考シーンファイルへのリンクは一番下にあり。

1. 初めに

前提知識として以下のことを知っておく。

Maya

  • Maya はカメラにレンダリング (画像) 解像度の設定を持たない。解像度は Render Globals (レンダリング設定) の中にある。
  • よって、カメラ (cameraShape) の Film Back 以下にある Film Aspect Ratio の値が重要になる。
      例えば 1920 x 1080 でレンダリングしたい場合、この値を 1.78 (1920/1080) としておく事が非常に重要。

      Maya のカメラの Camera Aperture (Inch) のデフォルト値は 1.417 x 0.945 なので、実写カメラの考慮が不要でフル HD でレンダリングしたい場合、1.920 と 1.080 とすれば Film Aspect Ratio が自動的に 1.78 となる。
  • Maya でカメラの設定を行う場合には、ビューポートの上にある View メニューの Camera Settings で Film Gate を選択、Gate Mask をオンにしておくとFilm Aspect Ratio による画角の設定がわかり易い。
  • カメラを伴うシーンの出力は次の二つの方法で可能:
    • FBX: File->Export All... (FBX Export)
    • Alembic: Pipeline Cache -> Alembic Cache -> Export All to Alembic
    ただし Render Globals で設定したピクセル画像解像度はどちらにも含まれない。FBX は ASCII 出力可能なのでテキストエディタで検索可能->みつかりません。Alembic はここにそういう設定の記述なし。
  • よってレンダリング解像度は Houdini の中で再設定する必要がある。

Houdini

  • Houdini はカメラにレンダリング画像解像度の設定 (View タブの Resolution) を持ち、これが画角を決定する。
      Resolution を 1920x1080 に設定、Pixel Aspect Ratio が1.0であれば、画角 (Maya で言うところの Film Aspect Ratio) は 1.78 となる。
  • Houdini のレンダー設定 (Mantra ROP) は基本的にカメラの設定を使うが、以下の画像のようオーバーライドすることも可能。

    Override Camera Resolution のトグルをオンにすればプルダウンメニューが有効になる。
  • 単体オブジェクトだけでなくカメラを伴うシーンのインポートは、
    • FBX: File->Import->Filmbox FBX...
    • Alembic: File->Import->Alembic Scene...
    から行なうのが最初のうちは無難。

以下2014年の記述


2. Mayaでのカメラ設定

Maya でカメラを一つ作成 (camera1)。この例では、Maya 2013, レンダリング解像度は 1280x720 という前提。

  1. Angle of View: 33.33
  2. Focal Length: 35.0
  3. Near Clip Plane: 0.1 (default)
  4. Far Clip Plane: 10,000.0 (default)
  5. Film Gate: "35mm 1.85 Projection" とすることで以下の設定になる。
    • Camera Aperture: 0.825, 0.446
    • Film Aspect Ratio: 1.85

3. カメラアニメーションの設定とレンダリング

  1. これに対して簡単な Translate と Rotate のアニメーションを追加。60~120フレームぐらい。
  2. リファレンスとして形状もいくつか配置し、後ほど別ファイルで書き出す。
  3. 作成したカメラから配置した形状に対し、レンダリングを実行。ここでは
    • Mental Ray
    • Image Size Presets で HD720を選択。
    • Draft Quality
    • Targa で保存。

4. カメラをFBXの出力

  1. 作成したカメラ(camera1)を選択、File->Export Selection、FBXでファイルとして出力。Optionsの中で、必ず cameras がONになっていること。ここでは、maya_cameraAnim2013.fbx というファイル名で保存。
  2. 作成した形状も別ファイル(maya_2013_geos.fbx)としてFBXで出力。

5. Houdini でFBXの読み込み

Houdini を起動。

  1. File->Import->Filmbox FBX... を実行。
  2. File の部分にカメラのFBXファイル(maya_cameraAnim2013.fbx)を指定。
  3. Filter Options で Cameras と Animation がオンになっていることを確認。他はオフでもよい。
  4. パネル一番下の "Merge" ボタンを押して、現行のシーンに追加。Importを押すと新しいシーンが作成される。
  5. 形状のFBX (maya_2013_geos.fbx) にも同じ動作を繰り返す。この場合、Filter OptionsでGeometryがオンになっている必要がある。"Merge" ボタンを押して、現行のシーンに追加。Importを押すと新しいシーンが作成される。
  6. この時点でファイルを一度保存すると良いかもしれない。この作業によって環境変数 HIP がファイルが保存されたディレクトリに設定され、この後に続くファイル保存先指定が容易になる。
  7. 二つのファイルが読み込まれるとネットワークビューは以下のようになっている。
  8. maya_cameraAnim2013_fbx サブネットをダブルクリックして中に入り、camera1 ノードを選択、View タブの Resolutionの右脇のプルダウンメニューから "HD 720" を選択。これでレンダリング解像度が 1280x720 になる。
  9. Render View タブへ行き、ROP Camera となっているプルダウンにFBX経由で読み込んだカメラ(/obj/maya_cameraAnim2013_fbx/camera1)を指定。 Render ボタンを押してレンダリングを一度実行。
  10. ネットワークビューで/out へ移動、先ほどのレンダリングの結果できたmantra_ipr ノードを選択。Main タブの Camera の一番右にある'+' アイコンをクリックして、Choose Operator ウィンドウを開き、階層をたどって、camera1を選択、Acceptボタンをクリックしてウィンドウを閉じる。
  11. Properties タブ以下の Output タブに行き、Output Picture にファイル名を指定。先ほど (#6で) ファイルを保存したことにより、$HIP (現在のシーンファイルの保存場所)を頭につけることが出来る。 ここでは $HIP/houdini13_out_$F3.pic として保存している。$F3 はフレーム番号を3桁で。$F2で2桁。$F4で4桁。$F で桁揃えなし。
  12. ここまでできたら、Render ボタンをクリックしてレンダリングを実行。

6. コンポジットモジュール

  1. Network View で /img へ移動。TABメニューからImage Networkノードを作成。img1 というノードが出来る。ダブルクリックで中へ。
  2. Fileノードを作成、Mayaでレンダリングした画像シーケンスを読み込む。
  3. Fileノードをもう一つ作成、Houdiniでレンダリングした画像シーケンスを読み込む。
  4. 二つのFileノードをDiffノードで接続。
  5. Render View タブから Composite View タブへ移動。ビュー下のAlphaチャネル表示ボタンをクリックすれば、アルファの差分が表示される。
  6. タイムスライダーをスクラブすれば、各フレームでの差分が確認できる。表示されるのは、レンダリングされた形状のアウトラインと言って良い細い線で、これは、アンチエイリアスの差分といって差し支えない。これを完全に消すには同じレンダラーを使うしかないと思われる。

7. まとめ

これにより、Mayaで作成したカメラもHoudiniに持っていって同じ画角の画像をレンダリングすることが出来、Mayaで形状、Houdiniでエフェクトという切り分けを可能にし、最終的に問題なく合成が可能になる。
参考シーンファイル:

1 件のコメント:

  1. このコメントはブログの管理者によって削除されました。

    返信削除