Maya Anim Channel to Houdini

Maya のアニメーション チャネルをHoudiniへ

FBX や Alembic とは別に、単一または少ない数のチャネルデータをMayaからHoudiniに読み込む方法を覚える。ここでは、Mayaの

  1. 単一アニメーションチャネルを chop 関数を使って指定する方法
  2. tx, ty, tz といった3連データをExport ノードを使って指定する方法
の二つを紹介。

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

I. Mayaから単一チャネルデータの出力とHoudiniでの読み込み

MayaのカメラのfocalLength に簡単なキーフレームアニメーションを設定、これを出力、Houdiniのカメラに読み込む。

0. Maya でのシーン作成

Maya でカメラ一つ (camera1) と Sphere 一つ (pSphere1) の簡単なシーンを作成。camera1 の Focal Length に 35@1, 75@60, 35@120という簡単なキーフレームアニメーションを付けたとする。

このシーンは、maya2013_camera1_FocalLengthAnim.ma として保存してある。

1. Maya からのチャネルデータの出力

  1. カメラのシェイプノード (cameraShape1)を選択する。つまり、camera1をビューポートで選択後、下矢印(↓)キーを押して一階層下げ、cameraShape1 が選択された状態にする。
  2. Channelbox で cameraShape1のFocal Length をクリック、ハイライトされた状態にする。
  3. File->Export Selection ...を実行、
    • File Type を move にする。
    • File Type Specific Options 以下にある "From Channel Box ボタンをクリック、cameraShape1.fl を出力するチャネルとして登録。
    • Export Selection をクリック、ディレクトリを指定、ファイル名を付けて保存するが、この際に拡張子をMayaのデフォルトである .move (または.mov)ではなく、.chanとすると Houdiniで認識可能になる。
    • ここでは、maya_camera1_focalLengthAnim.chan という名前で保存。
    • MEL では、
      movOut -f "filename" camera1.focalLength;
      と書ける。
  4. アニメーションが一度再生され、チャネルが各フレームべた打ちのキーフレームデータとしてテキストファイルで出力される。このファイルは、テキストエディタで開くことが出来る。開いてみれば、ヘッダもなければチャネル名もない行単位でデータが書かれただけのファイルなので、使いまわしはし易い。Excelで書くことだって出来るだろう。

2. Houdini でのシーン作成

Houdini を起動。

  1. Create シェルフからSphere をCtrl+クリック。原点に配置。
  2. Lights and Cameras シェルフから Cameraを同様に Ctrlキーを押しながらクリック。今見ているビューでカメラ (cam1) が作られる。ビューポートは下ような状態:

    ネットワークエディタは下のように二つのノードが存在することがわかる。
  3. ここまでの状態は、houdini_animImport_setup.hip として保存してある。

3. .chan ファイルの読み込み (その1)

.chan などのチャネルファイルは CHOP コンテクストで扱う。このためには、a) ネットワークビューでコンテクストを/ch に変えるか、b) CHOP Network をSOP 内に作成する、のいずれかを行う。ここでは、まず /ch へ行く。

  1. ネットワークビュー上部のプルダウンから、ch を選択する。
  2. TAB メニューから CHOP Network を選択する。選択肢は、デフォルトの場合、一つしかないはず。

    実行すれば、ch1 というノードが出来るので、その中に入る。
  3. ch1 の中で TAB メニューから File ノードを作成。file1 ノードが出来る。
  4. file1 の Channel File に、Mayaから出力した .chan ファイル (maya_camera1_focalLengthAnim.chan) を指定。
  5. ネットワークビューで file1 を表示ノード(ノード右側を青)とし、Motion Viewを開けば、チャネルデータが正しく読み込めていることを確認できる。
    描かれたグラフのチャネル名が"chan0"となっていることを確認。後で必要。

4. チャネルデータの関連付け (その1)

読み込んだファイルをノードのパラメータに関連付けるにはいくつかのう方法があるが、まず chop という関数を使用する。

  1. ネットワークビューで/obj に戻り、cam1 を選択。View タブに行き、Focal Length というパラメータがあることを確認。
  2. デフォルトの値である 50 を削除し、ここに

    chop("../../ch/ch1/file1/chan0")

    というエクスプレッションを記述。
    chop("と入力したあとパラメータ名を書いていく際にはパラメータ名補間が効くので途中で間違えることはないが、最後の chan0 は出て来ないので注意が必要。最後はかならず " (ダブルクオート)が必要。
  3. 正しく設定が出来れば、Scene View 表示でタイムスライダーをスクラブすれば、カメラのズームが変更する様子が確認できる。

II. Mayaからの三連データの出力とHoudiniでの読み込み

Maya の中の pSphere1 に簡単な tx, ty, tz だけのアニメーションを付け、これを Houdini内の sphere_object1 に渡す。
Maya での手順は割愛し、pSphere1 の TranslateX, TranslateY, TranslateZ の3つをチャネルボックスでハイライトし、先ほどと同じ手順で、maya_pSphere1_translateAnim.chan というファイルで出力した。

5. .chan ファイルの読み込み (その2)

今回は、SOP内に CHOP Network を作って行ってみる。

  1. Scene ビュー (/obj) で、TAB-> 'c', 'h', 'o', とキーボードを打っていけば、ノードの選択肢として CHOP Networkが残る(そうでなければ Managers 以下)。これを選択、実行。chopnet1が出来る。
  2. 先ほど同様、中に入り、file ノードを作成。file1 が出来る。
  3. file1 の Channel File にmaya_pSphere1_translateAnim.chan を指定。これを表示ノードとし、MotionViewで見れば、チャネルデータが3つ、chan0, chan1, chan2 と読み込まれていることが確認できる。
    Motion View 内で'd'キーを押すと、キーフレームデータが点で表示される。もう一度押せば消える。
  4. file1 の Name Options を "Use Names in File" (デフォルト) から "Use New Names" とする。こうすると直下の Names のフィールドが変更できるようになる。
  5. chan0 を削除。替わりに t[xyz] と入力。

    Motion View に表示されている3つのアニメーションカーブが、それぞれ tx, ty, tz に変更されたことがわかる。

6. チャネルデータの関連付け (その2)

3つのチャネルデータを関連付けるには、それぞれで chop() 関数を使うよりも、Export ノードを使って関連先を指定した方が使い勝手が良い。

  1. chopnet1 の中に Export ノード (export1)を作成、file1 から export1 の左側に接続する。
  2. export1 を選択しParameter Viewを見る。Node というパラメータの一番右の '+' アイコンをクリック、Choose Operator ウィンドウを表示、ここで、sphere_object1 を選択、Acceptを押して確定。
  3. Node の直下の Path の値を tx から t[xyz] に変更。
  4. Netork View で export1 の Export (右から3番目の茶色・オレンジ色)フラグをオンにする。
  5. Scene Viewで sphere_object1 を表示し、タイムスライダーをスクラブすると、sphereがアニメーションしていることが確認できる。

    sphere_object1 のトランスフォームを見れば、tx, ty, tz がそれぞれ Overriden となっていることがわかる。
  6. 再び、/obj/chopnet1/ に戻り、export1 ノードの Export フラグをオフにすれば、sphere_object1 はアニメーションされない。

まとめ

これら2つの方法により、単一アニメーションチャネルも3連チャネルもMayaからHoudiniにもって行くことが可能になる。Maya から出力したチャネルデータを CHOP (/ch 以下) に格納するか、それとも SOP (/obj 以下) に格納するかはシーン全体の構成にも拠ると思うが、Houdini Digital Asset として他のユーザや環境とシェアするのであれば、SOP 以下に格納した方が楽になるはず。
参考シーンファイル:

0 件のコメント:

コメントを投稿