Houdini Expressionのメモ
便利そうなHoudiniのExpression周りについてすぐ忘れちゃうのでメモ
随時更新
最終更新 2022/08/26
環境
mac os Catalina 10.15.7
Houdini FX(apprentice) version 19.5.303
エクスプレッション の種類
Houdiniは2つの異なる言語:従来のHScriptエクスプレッションとPythonでエクスプレッションを記述することができます。さらに、特定のノードではVEXスニペットを記述することで、そのノードの挙動を制御することができます。
HScriptエクスプレッション
エクスプレッションを記述するための従来の方法。エクスプレッション関数を使用します。
Python
エクスプレッションを記述するための強力で冗長な方法。Houdini Object Model APIとPythonビルトイン関数を使用します。
VEX
高速なコンパイル言語。特定のノードの特定のパラメータでのみ利用可能です。
デフォルトでは、Houdiniのパラメータは上記で説明している従来のHScriptエクスプレッション言語を使用します。 特定のパラメータ、ノード、またはすべてにPythonを使用するように切り替えるには、Pythonパラメータエクスプレッションを参照してください。
ex help / ヘルプについて
Hscript textportより、
exhelpでHscript エクスプレッション のhelpを参照することができる。
![](https://assets.st-note.com/img/1661511541119-wIdqH7Ga8H.png?width=1200)
Houdini公式のエクスプレッション についてまとめている記事は以下。
Spare Inputについて
Compile blockのために、spare inputなどを作っている際に、
ノードpathを−1と指定すると spare inputのpath名が引用されるようになる。
detail(-1, "iteration", 0)
![](https://assets.st-note.com/img/1661514834004-BtPiJskwVn.png?width=1200)
Spare inputがたくさんある場合。
エクスプレッション側で参照する際には、上から順に-1,-2,-3,-4,….とマイナスの値が対応しています。
つまり、「Spare Input0=-1」、「Spare Input1=-2」という風に。
数字が一致していないのは気持ち悪いですが、仕様なので受け入れます。
パラメータ名にマウスを合わせると出てくるヘルプに、そのSpare Inputを参照する際の番号が書かれています。
String パラメーターについて
Stringが想定されているパラメーターのところにexpressionを書こうとしてもうまく認識されない場合、
明示的にバッククウォートで囲んであげると、そこはエクスプレッション として認識されるようになる。
しかし、StringでもExpressionを利用したい場合があります。その場合は `{}` を利用します。
String型であっても `(バッククォート)で囲った部分はExpressionとして機能します。
HScriptグローバル変数
どのnodeでも使えるグローバル変数。
Expression Local Variables
ローカルな値が適用される変数。
![](https://assets.st-note.com/img/1661548120641-f9V3vhNrzZ.png?width=1200)
detail
任意のnodeのDetailについてのattributeを参照してくることができる。
detail(<surface_node>, <attrib_name>, <attrib_index>)
detail("/obj/geo1/attribpromote1", "area", 0)
detail(パス, attribute名, attributeのindex)
attributeのindexは Pとかだとxyzあるので、 Pyだったら、1とindex番号を指定してあげれば良い。
rand
ランダム関数
rand(数値)として入れると、数値に対応したランダムな数値を返す。
iterationやtimeなどを入れるのが無難。
この記事が気に入ったらサポートをしてみませんか?