Christmas!HoudiniAdventCalender2019も今回を含めてあと2回になりましたね。ここをご覧になってらっしゃる皆さんにおかれましては毎日Houdini使ってらっしゃることと思いますが今回は日々のHoudini生活を楽にするノードのPresetについてお話させて頂こうと思います。(地味な話題ですみません。皆さんが日頃ノードを出す度に毎回毎回設定させられる項目があるはずです。Capsにチェックを付けたりするのは割と頻繁に行うと思います。これはSphereSOPでもPrimitiveTypeをPolygonにするのは同様ですね。毎度毎度めんどくさいですね。この程度なら多少我慢出来ると思います。LineSOPやBoxSOPの場合これらは右クリックメニューからCopyParameterとPasteRelativeReffrencesをやった上で*0.5や*-0.5を付け足してあげなければならない訳で頻繁にやるにしては度し難い手数です。極めつけはL-SystemSOPです。パラメータお化けとも呼べるこのSOP、ユーザーに毎回膨大な式パラメータを入力させるなどかなり狂気じみた仕様になっており正気の沙汰ではありません。その為かこのSOPにはデフォルトでプリセットが大量に用意されています。上の歯車アイコンを押すと出るメニューの中からいろいろ選べる様になっているのですが正直どれもあまり実用に耐えるものでは無いものばかりです。学術的なサイトで幾何学的な表現を行うための式が紹介されたりしていますが具象を表現したい商業主義的な我々にとってはそんなことよりそれっぽい木を今すぐくれという気持ちでいっぱいなのですが世の中そんなには甘くないのです。半ばL-Systemの愚痴みたいになってしまいましたがこれはこれで多彩な表現が出来る良いSOPだと思います。プリセットを使おうそこで何度も同じパラメータを入力しなくても良い様に今選択しているSOPの全パラメータをプリセットとして登録出来る仕組みがありますのでそれを利用しましょう。やり方はとても簡単でシンプルです。Defaultを行うだけです。すると登録されたパラメータでSOPが生成される様になります。Preset...で何種類も自分の好きなパラメータを持つことが出来ます。自分で作ったパラメータは歯車アイコンメニューの一番下にリスト表示されます。パラメータにアニメーションキーを打っていた場合それも保持されます。プリセットを定義するものはどこにある?$HOUDINI_USER_PREF_DIRに保存した場合だと保存場所はC:\Users\(ユーザー名)\Documents\houdini(バージョン)\presets\になります。そこにSopというフォルダが作られSop名.idxという名前のファイルが出来ます。それがプリセットの設定が記述されているファイルです。プリセットを外部から編集したい残念ながらテキストエディタでidxファイルを編集すると壊れて読み込まれなくなります。バイナリエディタで編集しても同様です。Software\Houdini(バージョン)\bin\hidx.exeを使ってidxファイルをプリセット毎に編集可能なテキストファイルに分解して編集することが出来ます。プリセットのリネームや値の編集なども出来ます。hidx.exeはコマンドラインツールなのでHoudiniの中からだとPythonを使って呼び出すのが楽です。使い方は引数を指定せずに実行してみると分かります。option.-xで展開、-cで結合となっています。Houdini上で選択したノードのプリセットを展開したければ下記の様なPythonコードを書けば可能です。command.replace('/','\\')os.system(command)ここでは作業用のフォルダは一つ上のフォルダにしてあります。展開されたファイルはこの様な形で生成されます。)}という様な形でパラメータと値の組み合わせが記述されているのが分かります。編集したりバリエーションをPythonで増やしたり出来ますのでひとしきりやりたいことをやり終えたら先程のhidxの-cオプションを使ってidxに戻してあげましょうバージョンをまたいだプリセットの引っ越しpresetsのフォルダをコピーしてあげれば良いでしょうPresetを指定してノードを呼び出すまだプリセットを設定するコマンドはPython化されておらずHSCRIPTを使用するしかない様です。HSCRIPTでのコマンドはoppresetloadです。Pythonでは以下の様に記述してノードを作成しプリセットを適用します。)hou.hscript(cmd)HDAのプリセット通常のノードと同様にプリセットを追加出来ます。消えたパラメータ、増えたパラメータの扱いHDAを作っているとパラメータを増やしたり減らしたりする事があります。あったパラメータが減っても減らしたタイミングの値が引き継がれるだけで特に問題無くプリセットは動作します。消したパラメータを元に戻しても保存されたファイルは別にあるので元通りに正しく動作します。無かったパラメータが増えた場合もプリセットを変更してもデフォルト値のまま動作します。プリセット情報が保存されたidxはHDAとは独立している為この様な挙動になるものと思われます。長時間かけて調整したパラメータはプリセットに保存しておくと良いでしょう。変更したものをちょっと変えて比較したい場合などにも有効です。Presetの共有方法HDAは環境変数HOUDINI_OTLSCAN_PATHでパスを指定すれば共有出来ます。そのHDAのPresetはどうすれば共通の資産として使えるのでしょうか?実は仕組みとしては整ってはいない状態なので$HOUDINI_USER_PREF_DIRに各自でpresetsフォルダをコピーして使う様な運用しか今の所ないでしょう。さんからご指摘を頂きました。環境変数にHOUDINI_PATHもしくはHSITEを設定していれば共有も出来ました。環境変数にHOUDINI_PATHもしくはHSITEを設定していれば共有も出来るのだそうです。ドキュメントに見当たらなかったので諦めていました。さん情報共有の方ありがとうございました!まとめいちいちHDA化するまでも無いけど毎回手で入力するのも面倒なものにはPresetがかなり効きます。手作業を減らしましょう。Houdiniはパラメータが命のソフトですのでパラメータの扱いを自由自在に扱える様になっておく=Presetを自由に扱える様になることで作業の効率をかなり上げていくことが出来ます。upLoginユーザーは見つかりませんでした。