2021-04-22

FBX import

Houdini には FBX を読み込む方法がいくつかあり、例外はあるとしても、以下のようになる。

方法 ジオメトリ アニメーション マテリアル 主な使用用途
File->Import > Filmbox FBX 最も一般的な読み込み
FBX Character Import SOP モーション編集
Labs FBX Archive Import SOP ✔ (トグルで指定) ✔ (トグルで指定) File->Importと機能的には同じ
Agent SOP 群衆専用

ここでは、KineFX で操作することを念頭にして、それぞれの方法をを説明していく。



使用したビルド:

  • Houdini 18.5.554 (Windows 10)
  • mixamo ファイル


0. はじめに

  • Maya のデフォルト単位は cm で、Houdini のデフォルト単位は m。よって、Maya で185㎝ として設定したキャラクタをそのまま Houdini に持ってくると 185m の巨人と認識される。主な回避方法はそれぞれの機能の Convert Units トグルで、Maya でも Houdini でもデフォルト単位は変更しないのが無難。
  • Houdini の SOP レベルにアニメーション付きのキャラクタを持ってきただけでは(スキニング付きの)アニメーション再生がされない。再生には Bone Deform ノードが必須。
  • 他にも気を付けることはいろいろあるが、それぞれの部分で後述。

手っ取り早く FBX を KineFX で使ってみたい人は一章を飛ばし、 2. FBX Character Import SOP に進む。


1. File -> Import -> Filmbox FBX

この方法が最も一般的な FBX ファイルの読み込み方法で、カメラ、ジオメトリ、アニメーション、ライト、マテリアルなど、FBX が対応するデータタイプに対応している。

Filter Options

なお、マテリアルだけの読み込みは現時点ではできない。

Animation Options

Mixamo.com からのファイルを読み込む時には、Override Scene Frame Range をオンにし、FBX 内のフレーム範囲を使うようにするのが無難 (デフォルトではオフ)。理由は後述

Material Options

旧式の /shop 形式のマテリアルを使うのであれば FBX Shader Nodes にし、新しい /mat 型が良ければ Principled Shaders が無難。

Compatibility Options

ここで重要なのは Maya からかそれ以外かということだと思う。

General Options

  • 読み込んだキャラクタの巨人化を防ぎたいのであれば、 Convert Units をオンにする。
  • Import Directly Into /obj Network をオンにするとサブネットワークなしでボーン構造が展開される。
  • Unlock Geometry File SOPs をオンにすると読み込んだデータがシーンにフリーズされない。これに関しては後述

Import As New Scene をクリックすれば、File-> New が行われてから FBX ファイルが読み込まれ、Import をクリックすれば 既存のシーンに読み込まれるだけ。

実際の読み込み

上記の設定、つまりデフォルトの設定に

  • Override Frame Range をオン
  • Convert Units をオン
を加えて Impport ボタンをクリックすると、以下のようになる。
  • ビューポート内のグリッド罫線 -1 と 1 の間にキャラクタが立っていることがわかり、このキャラクタが ㎝ で読み込まれたことがわかる。m として扱われた場合は罫線の目盛が 100 なり 125 となっているはず。
  • ネットワークエディタには、back_flip_to_uppercut_fbx という名のサブネットワークが出来、その中にデータが格納されている。
  • mixamo からのデータの場合、メインウィンドウ右上の Take の設定が mixamo.com と自動的に設定され、この FBX ファイルが持つアニメーションが再生できるようになっている。

    Take 001 または Main に戻せば、T-ポーズに戻る。
ビューポート上のボーンを非表示にするには、ビューポート右側のツールバーの Control Visibility of Object Type ポップアップメニューで Bones をオフにする。

これでタイムラインをスクラブするなり Play ボタンをクリックすればアニメーションが再生される。

ネットワークエディタで back_flip_to_uppercut_fbx ノード内に入ると、以下のような構造のネットワークがある。

ツリー構造の一番上が Hips というノードで、これがスケルトンのルートであり、はるか右にスキンジオメトリ形状 (Kachujin という名前) とその下に materials というマテリアルネットワークがあり、その中に実際のマテリアルである Kachujin_MAT という名の Prinicpled Shader がある。

インポート時に Convert Units をオンにした場合、Hips と Kachujin のスケール値 (sx, sy, sz) がそれぞれ 0.01 となっていて、これが Convert Units がしたこと。

Kachujin の中に入ってみると、以下のようなネットワークになっている。

上の二つのノードに赤いフラグが付いているということは、これらがフリーズされていて、この状態でシーンを保存すると .hip の中に FBX の持つデータがすべて書き込まれ、読み込んだ FBX が大きなものであれば、 .hip ファイルも大きなものとなる。この挙動を回避するには、 General Options で Unlock Geometry File SOPs をオンにする。

追加作業を行う際には Take を Main に戻しておくのが無難。Take が Main 以外の場合、パラメータフィールドが黒以外の色で表示されているので、この時は注意する。

Scene Character Import
いずれにせよ、これでシーン (Object) レベルに FBX ファイルの読み込みができた。この方法の利点は、マテリアルなどがすべて読み込まれ、Houdini 内でマテリアル付きで再生できるようになっていること。ただし、KineFX (SOP レベル) で扱うには、Geometry ノードを別途作成、その中に Scene Character Import ノードを作って参照し、 Bone Deform ノードでスキニングを評価する必要がある。


  • Subnet Path に読み込んだ FBX のサブネットワークのパス
  • Clip Name に * を挿入
  • Reload ボタンをクリック
これで SOP レベルに FBX データを持ち込むことが出来た。しかし、このノードに表示フラグをつけるとビューポートの形状は巨大化 (m 化) している。ただし、Bone Deform を接続し、表示フラグをこちらに移すと ㎝ に戻る。

Bone Deform に表示フラグがあるまま、Scene Character Import で Clip Name を * に指定した上で、画面右上で Take を mixamo.com にし、Reload ボタンをクリックすると当該のアニメーションがロードされる。 この後は、Take をメインに戻しても mixamo.com テイクのアニメーションの再生が可能。

ここまでかなり長々と説明が必要だったように、File->Import->Filmbox FBX から Scene Character Import 経由で Bone Deform を実行するのは、手数が多い上に気を付けなければならないところも多い。よって、FBX と Kine FX を併用するには、次の FBX Character Import SOP がお勧め。


2. FBX Character Import SOP

  1. Geometry ノード (/obj/geo2) を作成し、その中に入り、FBX Character Import ノード (fbxcharacterimport1) を作成。
    • FBX File に読み込む .fbx ファイル名を指定
    • Clip Name に横の ▽ から mixamo.com を選択
    • Convert Units はデフォルトでオンになっている
  2. Bone Deform ノード (bonedeform1) を作成し、fbxcharacterimport1 と三つの入出力をすべて接続。
    1. 一番左はスキンジオメトリデータ
    2. 真ん中はレストポーズデータ
    3. 右側はアニメーションデータ
    となっている。よって、左の接続の間に PolyReduce を挿入してポリゴンリダクションをアニメーションしているキャラクタに対して実行したり、右の接続の間に RigPose を挿入し、アニメーションを編集することも可能。


左の出力に Clean を追加してから PolyReduce (約50% 削減) して Bone Deform にした結果。この状態でアニメーションの確認が可能。

マテリアルの設定
fbxcharacterimport1 をダブルクリックして中に入ると、 material という名の mat ネットワークがあり、その中に principled shader が存在するので、これが設定されているマテリアルだと思うかもしれないが、このマテリアルには何の設定もない。 実際には、スキンジオメトリへのマテリアルは、material_override プリミティブアトリビュートで行われている。Geometry Spreadsheet を開き、Primitives の項に行くと以下のようになっている。

よって Material SOP ないしアトリビュートの編集によるマテリアル操作が必要。

また fbxcharacterimport1 の中でスキンジオメトリデータは FBX Skin Import SOP、アニメーションは FBX Animation SOP で読み込まれ、それぞれの下流で OUTPUT ノードに接続され、出力されていることも確認可能。

つまりは FBX Character Import ノード自体が HDA であるということ。

KineFX の各種手順に関してはこちらを参照のこと。


3. Labs FBX Archive Import SOP

Labs FBX Archive Import SOP は、SideFX Labs ツールの一つで、使用には SideFX Labs のインストールが必要。

  1. Geometry ノード (/obj/geo3) を別途作成し、その中に入り、Labs FBX Archive Import ノード (fbx_archive_import1) を作成。
    • FBX File に読み込む .fbx ファイル名を指定
    • 18.5.554 以降、Convert Units がパラメータに追加されているので、Transform ノードを追加したスケールの調整は不要
    • Import Animation, Import Bones and Skinning もオンにする
    • Unlock Geometry をオンにすると、ここのノードのロックが解除される
    • fbx_archive_import1 をダブルクリックし、中に入るとそこにあるのは File->Import Filmbox FBX で読んだ時と全く同じノード。
つまり、この Labs ノードがやっていることは SOP 内に File->Import > Filmbox FBX の結果を持ち込んでいるだけ。


4. Agent SOP

  1. Geometry ノード (/obj/geo4) を別途作成し、その中に入り、Agent ノード (agent1) を作成。
    • 下の方にスクロールし、Input を FBX に変更
    • すると現れる FBX File に読み込む .fbx ファイル名を指定
    • Convert Units はデフォルトでオンになっている
    • さらに下にスクロールし、Clip 以下の Clip Name に mixamo.com を手動入力する
    これで アニメーションがテイクの指定なしに再生可能になる。
  2. ネットワークエディタで MMB で情報パネルを出すと、Point, Primitive, Vertex, Packed Agent がそれぞれ 1 になっていることがわかる。

    つまり、Agent ノード経由で読み込まれた FBX キャラクタはパック (エージェント) プリミティブに変換されているということ。
  3. ビューポートに表示されるエージェントにはマテリアルはデフォルトでは表示されない。

    マテリアル操作はスタイルシートを使う。

5. よくある問題

a. アニメーションが合わない

File->Import->Filmbox FBX と FBX Character Import SOP で同じ FBX を読んだにもかかわらずアニメーションが合わない場合がある。

この場合 Filmbox FBX オプションパネルの Animation Options 以下の Override Scene Frame Range をオンにして読み込む (デフォルトではオフ)。
FBX Character Import SOP と Agent との間では起きない。

b. シェーダの色味が変

File->Import->Filmbox FBX で読み込んだ FBX のシェーディング結果が白っぽくなってしまう場合がある。

この場合、Principled Shader の Emission Intensity を確認、1 になっていれば 0 にする。


まとめ

方法 利点 注意点
File->Import > Filmbox FBX
  • ジオメトリ、アニメーション、マテリアルのすべてを読み込むことが出来る。
  • マテリアルの編集・再設定が容易
  • シーンレベルに読み込まれるので、SOP に持ち込むには Character Scene Import と併用する。
  • ジオメトリがフリーズされるので、.hip が巨大になる可能性がある。
  • Mixamo 等を使う場合、テイクに影響されるので操作に注意する必要が出る。
  • FBX Character Import SOP SOP レベルで直接読み込み、KineFX に渡すことが出来る。 マテリアルは material_override プリミティブアトリビュートで指定される
    Labs FBX Archive Import SOP File->Import...FBX と同じ機能を SOP 内で行える 基本的には File->Import...FBX と同機能
    Agent SOP ほぼ群衆専用。パックプリミティブなので最も処理が軽い マテリアルは Stylesheets でアサインする。

    リンク


    最終更新: 2021-11-23

    0 件のコメント:

    コメントを投稿