On this page |
VOP/VEXを使って、サーフェスとパーティクルのノードを新しく作成することができます。これらのノードは、内部のVOPネットワークまたはVEXプログラムを評価して、 入力のジオメトリ/パーティクルのPointアトリビュートを操作します。
VOPネットワークまたはテキストのVEXソースコードによって、ノードがどのようにして入力ジオメトリを修正するのか定義することができます。
VOPネットワークでノードの挙動を定義する ¶
-
ネットワークエディタで、 VEX Builderネットワーク レベル(パスの
obj
をクリックして、 Other Networks ▸ vex を選択)に移動します。 -
SOP Typeノードを作成します。
-
SOP Typeノードのパラメータエディタで、 SOP Type Name をTabメニューで表示させるノード名に設定します。
-
ネットワークエディタで、SOP Typeノードをダブルクリックして中に入り、VOPネットワークを作成します。
テキストのVEXコードでノードの挙動を定義する ¶
-
File ▸ New Operator Type を選択します。
-
新規ノードタイプの名前とラベルを設定し、 Operator Style を VEX Type に、 Network Type を Geometry Operator に設定します。
-
Accept をクリックします。
-
Edit Operator Type Properties ウィンドウの Code タブでVEX定義を編集します。戻り値のタイプが
sop
の関数は、Houdiniがジオメトリを操作するために実行する“main”関数です。
VOP/VEXの接続/記述の方法 ¶
-
VOPノードのパラメータエクスプレッションは、 ポイント単位で評価されません 。VOPを使ってポイントデータを操作しなければなりません。
-
Parameter VOPノード(またはVEXの関数パラメータ)を使って、ノードのユーザインターフェース(VOP SOPノードのパラメータエディタにパラメータのコントロールが表示されます)を作成することができます。
-
アトリビュートがパラメータと同じ名前で入力ジオメトリ上に存在すれば、パラメータの値は、アトリビュートで上書きされます(ここでいうパラメータ名とは、“内部の”パラメータ名のことで、人が解読可能な ラベル ではないことに注意してください)。
-
Pointアトリビュートにアクセスするには:
-
VOPでは、Global Variables VOPノードを作成して、共通のPointアトリビュート(VOP SOPノードの1番目の入力から)にアクセスし、それを他のVOPノードを介して伝送します。他のアトリビュートに対しては、それと同じ名前とタイプのパラメータを使用する(パラメータがアトリビュートで上書きされます)か、Import Attribute VOPを使用します。
-
VEXでは、グローバル変数が
P
などの共通のPointアトリビュート(1番目の入力から)で利用可能です。他のアトリビュートに対しては、それと同じ名前とタイプのパラメータを使用する(パラメータがアトリビュートで上書きされます)か、import()関数を使用します。
-
-
1番目の入力のジオメトリのみがネットワーク/プログラムで操作することができます。Import Attribute VOPやVEXのimport()関数を使って、他の入力から情報にアクセスすることができます。
-
アトリビュートをジオメトリに追加するには
VOPでは、Parameter VOPノードを使って、 Export を Always または When Input is Connected に設定します。
VEXでは、
export
(例えば、export float a = 0;
)としてマークした関数パラメータを使うか、addattribute()関数(特にコンパイル時に知らない名前のアトリビュートを追加/変更する時。つまり、アトリビュート名をユーザインターフェースで制御する時)を使います。 -
VEXコードでは、戻り値のタイプが
sop
またはpop
の関数は、Houdiniがコールする“main”関数です。このmain関数で必要に応じて他の“helper”関数を定義することができます。
See also |