2020 01/06更新
自分への覚書、暫定であり随時更新して調整していく予定
現状Mantraでレンダリングする場合はちょっと無駄が多い気がする
キャッシュのファイル名
Obj名をキャッシュのフォルダやファイル名に含ませる
どのObjectのどのキャッシュなのかを辿りやすくするため
中間キャッシュはPrefixをつける
レンダリングに必要かどうかを判断しやすくする為
整理時に消しやすい為
ノード整理
色分けする
赤:見た目で調整する必要があるかもしれないノード pscaleやN, up, vなどの見た目や動きに影響するアトリビュート操作系
緑:アニメーションしているノード 流用時にカメラからの見た目で調整する必要がある為
先頭を大文字にする
IN:別階層から読み込んでいるノード(主にObject Merge)
OUT:ExpressionやROPへ渡すノード(主にNull)
Object階層
作業に必須なノードをObject階層でも繋いでおく
ノードをコピペした際のコピー漏れを防ぐ
下流が動かなくなってしまう場合のみ繋ぐ(Maya等外部からのガイドなど)
Obj階層で名前をきちんとつける
差し替えや依存関係をわかりやすくするため
キャラやBGなどの外部データ (Alembic)整理
シーンスケールを合わせる
Houdiniの基本は 1Unit = 1m (ただし、あまりにも値が扱いにくい場合は調整する)
Object階層でスケールをかけるとObject MergeやFBXがややこしくなる為、注意
重い場合はBgeoなどに一度変換する
外部データ(Alembic等)がサーバーにある場合などは、ローカルにBgeoで保存する
外部データ自体をローカルにコピーして読み込み直してしまうと、他人がシーンを開いたときにややこしくなる
ローカルのディレクトリパスを作成する場合はグローバル変数で作成し、サーバーと同じ階層になるようにする
必要なGroupを作る
可能な限りプロシージャルな選択方法にする
Alembicの場合は以下のオプションから選択するのが楽
Obj階層からキャッシュの差し替えが可能なようにする
ぱっと見の視認性を上げるため、バージョンなどの書き換え, 確認が容易なため
opname("")
などを使用してObject階層の名称をキャッシュに使用することで、データがなければエラーを吐くようにする
下流で読み込む場合はObject MergeのObject1に../../`opinput("..",0)`/OUT
で読み込める
下流で読み込む際はObject MergeのTransformをInto This Objectに変更するのも忘れないように
外部ソフトにデータを戻す場合
Houdini内でTransformノードを使用して元の大きさに戻す
シェーダーで不具合が起きたりするため
過去記事も参照 godofsuama.hatenablog.com
Pyro等、Volumeデータ設定と整理
DOPの入力を固定する
Input 0:エミッター
Input 1:Bounding Box
Input 2:Collision
Input 3:Additional Force / Velocity
固定することで迷いを減らし、流用しやすくする為
DOP Importを使用する
DOP Import Fieldと違いDOP Networkにコネクトすることができる為、 上流にノードを接続した際にノードがずれづらい
不要なDOP ImportをBypassすれば見ただけで使用していないのがわかる
DOPから直接VDB化しない
後処理の調整を複数行うことがある為
Volume系ノードでVDBに対応していないものもある
自分の環境ではシムが重いとVDB化が失敗することがある
VDBのファイルサイズを減らす
Houdini 18以降であればある程度の処理が、Pyro Post Processノード一つでできるようになった
その他は過去記事を参照 godofsuama.hatenablog.com
DOP内の値の変更を減らす
キーフレームの調整など、SOPで可能なことは可能な限りSOPで行う
Smoke ObjectのSizeやCenterなどもExpressionで読む
エミッターの動きが速い場合は以下の設定も追加でしておく
Smoke ObjectのSolve On Creation Frameにチェックを入れる
Delay Framesを設定し、リサイズするフレームを遅らせる
Padding, Subtract Thresholdの値を大きくする(Help)
Gas Resize Fluid Dynamicの設定をする