HOME

PDGで複数のFBXを読み込む

プロップやキャラクターの解析目的などでHoudiniを利用するための準備

環境

Houdini Indie 20.5.410

テストに使ったデータ

Fab/ Megascan/ BlueLupin

mixamo

https://www.mixamo.com/

本題と関係ないですが Fab とても便利ですね。Unityでも使えるのも良い。

階層以下すべてのFBXから命名規則で検索

プロップなどの、階層下に一通りのデータが存在している場合。

  1. TOP階層に移動しFile Patternノードを作成
  2. Patternの欄に命名規則を一致させるための条件を指定する 例えば今回対象にするmegascan/BlueLupinは命名規則が「(モデル名)_(補足的な文字列)_LOD*.fbx」なので「(検索するフォルダ)/Raw_LOD?.fbx」と入力すると取得できる。 *がいずれかの文字列、?がいずれかの単一の文字でマッチする
  3. 階層以下すべてのファイルを検索の対象にする場合はRecursiveにチェック
  4. ファイル名、ディレクトリ名、拡張子をどんなアトリビュート名にしたいかを設定する項目があるので名前を入力。ここで入力した (空にすると警告がでて処理が遅くなってしまうので不要な場合でもデフォルトの値を入れておいたほうがいい)
FilePetternノードでfbxを取得
  1. file_patternを右クリックし、GenerateNodeを実行 検索対象に該当するファイル分のワークが作成される。 いずれかのワークをダブルクリックするとそのワークにおける入力状態になり、なにがインプットされているか確認もできる。
PDGのワークが持つアトリビュートを確認
  1. GeometryOutputを接続し、FilePatternで設定したディレクトリ、ファイル名、拡張子がアトリビュートとして取得できるので組み合わせて入力するとワーク数分対象のモデルを読み込む準備ができる。
    expressionはアトリビュートを変更していないなら「@directory + "/" + @filename + @extension」
PDG内のアトリビュートで読み込みファイルを指定

モデル、モーションを組合わせごとに読み込み

キャラクターモデルのリソースを考えた場合、キャラクターフォルダがありそれ以下にモデルとモーションが複数存在しているようなデータが考えられる。

recursiveをキャラクター全体が入っているフォルダから実行するとすべてのキャラクターのモーションを検索してしまうわけだが、読み込みたいモーションは自身のモーションだけであり、モデル、モーションの組み合わせはキャラクターフォルダ単位で行うことが理想になる。

モーションは読み込む組み合わせのみを読みたい

これを実現するために、複数のFilePatternを繋げて使う。 以下はルートフォルダを検索するFile Pattern、モデルを検索するFile Pattern、モーションを検索するFile Patternの3つで構成したキャラクターごとにモーションを読み込む場合の例。

FilePatternを3つ繋げてキャラクターを読み込む

  1. 1つ目のFile Patternでキャラクターごとのルートディレクトリを取得する キャラクターが並んでいるディレクトリパスを指定しFileTypeをDirectoryOnlyに設定 Recursiveをオフにし、file attributeをcharacter_directory、directory attributeを root_directoryとして設定しておく
ディレクトリを読み込むためのFilePattern
  1. 2つ目のFile Patternでモデルfbxを取得する ルールはプロジェクトの命名規則次第になるが、今回はキャラクターのroot folder名と同じ名前のファイルがモデルfbxなので1で取得したキャラクターディレクトリ名を使って「 @root_directory + "/" + @character_directory + "/" + @character_directory.fbx」
モデルfbxを読み込むためのFilePattern
  1. 3つ目のFile Patternでモーションfbxを取得する ルールはプロジェクトの命名規則次第になるが、(モデル名) (モーション名)で保存していたので
    「@root_directory + "/" + @character_directory + "/" + @model_filename*.fbx」
モーションfbxを読み込むためのFilePattern
  1. ワークをダブルクリックするとモデルフォルダ、モーションフォルダなどを取得できているのが確認できる
ワークごとに読み込んだアトリビュート
  1. GeometryOutputに入り、作成したアトリビュートを組合わせてモデルモーションを読み込めば個別キャラクターモーション数分のワークでモデルを動かせる状態になる
FilePatternの組み合わせで読み込めたモデル、モーション

以上でプロップモデル、キャラクターモデルで穴あきポリゴンの検出なり、貫通検出なりをPDGで回す準備ができた。
他のDCCツールと違い、いちいち Python などでバッチインポーターを組まなくてよいので楽

fish_ball

プロシージャル魚類