最近チーム開発について思いを馳せているめんたいこです。皆さんいかがお過ごしでしょう。
今回はWrangleの対象(Run Over)をネットワークエディタ上で確認できると良いなぁをかなえるTipsについての記事となります。ノードの名前($OS)に_point
とか_primitive
などのサフィックス(接尾辞)やプレフィックス(接頭辞)をつけてもいいですが、人力でやるのもなんだかアレですよね。
そこでHoudiniの機能であるEvent Scriptという機能を使って実現しましょう。最終的にはこんな感じ↓になります。
最近Houdiniのチーム開発に便利そうな仕組みを考えてる。
— めんたいこ (@kickbase) November 11, 2021
ネットワークの作り方なんかはプロジェクトのレギュレーションに合わせればいいと思うけど、Wrangleの対象(Run Over)が表示されてると便利かなーと思ってる。 pic.twitter.com/Wm5lGXxUlg
ちなみに動画に写っているF3キー1発でAttribute Wrangleを作成するScriptについては以前下記記事にまとめましたのでご参考ください。
本記事はHoudini Apprenticeアドベントカレンダー2021 23日目の記事です。
目次
執筆環境
- Windows10
- Houdini 18.5.563
まだHoudini19にしてなくてすみません…
制作の背景
先にも書いたとおり、「Wrangleの対象(Run Over)をネットワークエディタ上で確認したい」シンプルにそんなオーダーになります。
個人的に、ネットワークは「読んでわかる」ものより「見てわかる」もののほうが良いと思っているので、VEXを追うことなく、ノードを選択してパラメータを確認することなくRun Overがわかるようにしたいと考えました。
Event Script is 何
これはSOPやLOPなどのコンテキストとは全然別のお話で、いうなればHoudini全体の仕組みで使えるPythonスクリプトのことです。
簡単な図を用いて解説しましょう。
実はノードを作成したとき、ユーザーは全く気づきませんが、Houdiniは裏側でノードを作ったで!とシグナルを発生させています。
該当するPythonスクリプト*1を作らなければ毎回空振りをするだけで、特に何もしません。
しかし、該当するPythonファイルをHoudiniが認識できる場所に作っておくとそのファイルを実行してくれるのです。これがEvent Scriptという仕組みです。
ただ「ノードが作られたよ」という情報だけではなく、特定のノードが作られたときに実行してねということも可能です。今回はこの仕組みを使っています。
ちなみにこのような仕組みをプログラムの世界ではイベント駆動と呼んだりします。
- 先に実行したいプログラムを用意しておき
- イベントが発生したらそれを実行!
というシステムです。イベントが発生することを発火と言ったりします。爆弾を用意しておいて火がついたらBOMB!というイメージでとらえるとわかりやすいかもしれません。
スクリプトの作成
今回のブログ記事はEvent Scriptの仕組みを紹介することなので、スクリプト自体はサラッと流します。とても短いコードなのでPythonを書く方であれば疑問は少ないと思います。
すごく簡単に説明すると、ノードが作られたときこちらのコードが実行され、main関数
内でUserData
にRun Overの対象を渡してセットしています。
プロジェクト規約としてUserDataをすでに使用しているチームでは使えない方法ですので、そこらへんはよしなに対応してください。
ファイル名設定
Event Scriptの仕組みではPythonファイルのファイル名が重要になってきます。
今回はWrangleが作られたときに実行されてほしいので、attribwrangle_oncreated.py
という名前をつけましょう。
見て分かる通り{ノードタイプ}_oncreated.py
としてあげればOKです。詳しくは下記記事にまとまっていたので参考とさせていただきます。
ファイルの設置
ファイルを置く場所も重要です。最初に書いたとおり、Houdiniが認識できる場所に保存することが重要になってきます。
C:\Program Files\Side Effects Software\Houdini [version]\houdini\scripts\sop
Windowsの場合は上記に保存してください。下図の通り、実行したい処理がsopだったらsopフォルダ以下に、objならobjフォルダ以下に保存すればOKというのがわかるかと思います。
インストール方法のまとめ
Gistにまるっと書いておいたので解説が不要な方はこちらをご覧になるだけでOKかと思います。
[Houdini] [Python] Check Run Over with UserData on Network View · GitHub
まとめ
Event Scriptの仕組み、駆け足のご紹介でしたがいかがでしたでしょうか。使い方によっては夢が広がりそうですね。それでは良きチーミングを!
ではでは!
*1:該当するスクリプト、というのは後述します