{
4/10追加 :[Geometory Importの詳細、アトリビュートについて]
4/19追加 :[Wedge : (Switch SOPと連携し、Work ItemでInputを切り替え)]
}
はじめに
ForeachノードでグループごとにFBXやテクスチャの書き出しをしようとすると結構大変でした。
そんなときはPDGを使うと簡単、らしいので調べながら使ってます。
そんなわけで調べてわかったことを書き溜めていきます。
躓いたら書き足していきます。
Geometory Import
検証ノードネットワーク
SOP
Voronoi Fracture で分けたname の Pieceを
Groups From NameでGroupに更に分けています
こうすることでGeometry ImportはGroup毎をタスクとして認識します
TOP
Geometry Importの Geometry SourceをSOP Nodeに変更しSOP Pathを
明示しておいたNullにしています
ハマりどころ
FBX書き出し
症状:グループ毎に書き出しができない
ROP FBX OutputをつないでOutput Fileを
$HIP/fbx/out`@pdg_index`.fbx
このようにすればGroup毎にバラバラに出ると思いましたが
そうではない
Output Size同じになっていてGroup毎にバラバラに出力してくれてはいないです
処方箋 Group毎にバラバラにしてから出力する
BlastのGroupのパラメーターに
`@groupname`
こう書いてグループ毎にバラバラの状態を ROP FBX Outputに伝えてあげると
ちゃんとグループ毎にFBXが書き出されます
原因
Geometry ImportのWork ItemsがGroup毎にあっても
それは別々のジオメトリそのものではなく、あくまでTaskのIndex情報なので
ジオメトリはちゃんとバラバラにしておく
pdg_indexとグループ名が一致しない
groupname piece20がpdg_index 0に来ています
処方箋 Create Work item for : Each Piece Attribute Valueにする
piece valueがpdg_indexと一致しました
Piece Attribute Value とは?
ここではVoronoi Fractureで作ったnameアトリビュートです
BlastのGroupのパラメーターに
`@piecevalue`
これでGroup名とpdg_indexが一致しています
原因 Create Work item for : All Groups はインデックスを考慮しない
多分・・・
インデックスを気にするときは Each Piece Attribute Valueにしましょう
アトリビュートについて
`@piecevalue`
`@groupname`
など、こういうものはWork item infoを見ればわかるので覚える必要はないと思います
ただし、以下の3つはWork item infoには出てないので、PDGを使う際は覚えた方がよいと思います
-
@pdg_index
タスクの「通し番号」です。
役割: 並列処理される各タスク(仕事の粒)に割り振られる 0 から始まるインデックス番号です。
使い道: ファイル名にtest_@pdg_index.bgeo.scのように入れて、出力ファイルが上書きされないように区別したり、特定の番号のタスクだけ処理を変えたりするのに使います。 -
@pdg_input
そのタスクに入力される「ファイルパス」です。
役割: 前の工程(ノード)から渡されてきたデータの場所を指します。
使い道: 例えば「モデルを読み込んでベイクする」というタスクなら、読み込むべきモデルのパスがここに入っています。 -
@pdg_output
そのタスクが「出力したファイルパス」です。
役割: そのノードでの処理が終わった後に生成されたデータの場所を指します。
使い道: 次のノード(後続タスク)はこの@pdg_outputを自分の@pdg_inputとして受け取ります。
HoudiniのPDGを「工場のライン」だとすると:
@pdg_index: ベルトコンベアに乗っている商品の「整理番号」
@pdg_input: 加工前の「材料」が置いてある場所
@pdg_output: 加工が終わった「製品」を置いた場所
これらを使うことで、大量のボックスを一度に破砕して連番ファイルで保存する、といった作業を自動化できます。
Wedge
Switch SOPと連携し、Work ItemでInputを切り替え
Work Itemを変えるたびに表示を切り替える仕組みのためには、以下の2つを行う
Wedge Countの取得
opninputs("/obj/Props_BaseMesh/switch1/")
Switch SOPのSelect Inputと Wedge Indexを一致させる
@wedgeindex












