2021-09-11

FBX export via PDG


FBX を単一ファイルではなく、連番ファイルで出力する方法を紹介する。ここでは、以下に説明する通り、PDG を使う。


使用したビルド:

  • Houdini 18.5.696 (PDG が入った 17.5 以降であればどれでも使えるはず)
シーンファイルへのリンクは一番下にあり。

1. 元シーンの作成

  1. Create シェルフの Torus ツールを Ctrl キーを押しながらクリックする。
  2. ネットワークエディタに出来た torus_object1 をダブルクリックして中に入る。
  3. そこにある torus1 の出力に Transform ノード (transform1) を追加
    • Translate X に cos($FF * 10)*2
    • Translate Z に sin($FF * 10)*2
    と設定する。再生すれば、トーラスが原点を中心に回転する。
      上記の式の $FF はフレーム番号を実数で取っている ($F とすると整数になり、チャネルデータに対しては望ましくない)。 10 を変更すればスピードが変わり、2を変えれば軌道の半径が変わる。
  4. translate1 の出力に Null ノードを追加、名前を OUT と変更し、このノードに表示フラグを付ける。
  5. タイムラインの最終フレームを 240 フレームから 10 フレームぐらいに短くしておく。
これで保存すれば、元シーンは完成。

2. ROP の作成

  1. /out に行き、Filmbox FBX ノード (filmboxfbx1) を作成。
  2. Export の /obj となっているところを Operator Chooser ('+' みたいな) ボタンをクリックして /obj/torus_object1 に変更。
この状態で、Valid Frame Range が Render Current Frame の場合は現在のフレームの形状が Output File に指定されたファイル名で出力され、Render Frame Range に変更すれば、指定フレーム間のアニメーションが単一 FBX で出力される。これだけでは、FBX を連番で出力する方法は、一枚一枚チマチマと手作業で行う以外、ない。

3. TOP の作成

チマチマとした手作業を PDGROP Fetch ノードを使って自動化する。基本的な考え方は、開始フレーム (Start) と終了フレーム (End) とファイル名に含めるフレーム番号をすべて同期させ、それを繰り返す。

  1. /tasks に行き、そこにある topnet1 の中に入る。
      そこには localscheduler があるはず。
  2. ここに ROP Fetch ノード (ropfetch1) を作成。
    1. ROP Path に /out/filmboxfbx1 を指定。
    2. Evaluate Using を Single から Frame Range に変更。
  3. /out/filmbox1 に戻り、
    1. Valid Frame Range を Render Frame Range に変更。
    2. Start/End/Inc の Start と End の両方に @pdg_frame と入力。
    3. Output File を $HIP/fbx/out_`@pdg_frame`.fbx と指定。
  4. ネットワークエディタで /task/topnet1 に戻り、ropfetch1 で RMB-> Cook Selected Node を実行。
      hip ファイルを保存するかどうか訊かれたら、Save and Continue をクリックして続行。正しく実行されれば、TOP グラフは以下のようになる。

      出力先のディレクトリ ($HIP/fbx) には10個のファイルが出来る。

4. ROP Fetch および FBX ROP 設定時の注意

  1. Filmbox FBX ROP に指定した @pdg_frame は PDG のアトリビュートの一つ。ここに主なもののリストがある。
  2. 今回、ROP Fetch ノードにある All Frames in One Batch オプションをオンにしていないので、各処理の実行により時間がかかる。オンにすると、 @pdg_frame は1のままになるので、残念ながら、使えない。
  3. @pdg_frame の代りに @pdg_index を使うと、0 から始まる。
  4. Local Scheduler の代りに、HQueue やその他のスケジューラを使い、ファームと Houdini Engine のライセンスがあれば、処理時間をさらに短縮できる。
  5. @pdg_frame によるフレーム番号の桁数を例えば3桁に揃えるには、$HIP/fbx/out_`@pdg_frame:3`.fbx とする。

シーンファイルおよびリンク


最終更新: 2021-09-13

0 件のコメント:

コメントを投稿