On this page | |
Since | 12.5 |
Geometry VOPノードは、ジオメトリアトリビュートのセットに対してCVEXを実行します。
CVEXシェーダは、このノードの内部にCVEX VOPネットワークを構築することで、.vfl
ファイル、SHOPとして定義することができます。
SHOPが一番簡単な方法です。
CVEXスクリプトへのバインドは、何のアトリビュートをスクリプトのどのパラメータへ渡すのかを制御します。 デフォルトのAutoBindは、アトリビュートの名前を使用して、それらのアトリビュートが上書きするパラメータを決めます。 そのパラメータがCVEXスクリプトでExportedとしてマークされていた場合は、そのパラメータがそのアトリビュートへ書き込まれます。 そうでない場合は、そのアトリビュートが単に読み込まれて、そのパラメータの値を取得します。
オプションで、読み取り専用のフィールドパラメータをバインドすることもできます。 その読み取り専用のフィールドパラメータは、空間内のアトリビュートの位置でサンプリングされて、CVEXに渡されます。
パラメータ ¶
Vex Setup ¶
Vex Source
CVEXスクリプトの取得先。 Myself は、このノード内部で構築されたVOPネットワークを参照します。 SHOP は Shop Path を使用します。 Script はスクリプトで指定された.vexファイルを読み込みます。
Shop Path
適用するCVEX SHOP。
これはCVEX VOP Networkを含むノードを指すこともできます。
Note
参照されたノードのパラメータが使われます。
Script
適用するCVEXスクリプト。
Re-load VEX Functions
Scriptモードの時、これはHoudini外部で作成されたアップデートを反映するために、.vex
ファイルを再読み込みします。
Compiler
このノードの内部をコンパイルするためにVOPで使用されるコマンドライン。
Force Compile
強制的にVOP Networkを再コンパイルします。
Evaluation Node Path
ch()
などのVEX関数は、通常では、このノードを基準に評価します。
ここでパスを指定すれば、パス検索の開始場所を上書きすることができます。
これは、トップレベルのデジタルアセットが検索ルートになるようにデジタルアセットへ組み込む時に役に立ちます。
Export Parameters
VEXパラメータをエクスポートする時、バインドしたアトリビュートが存在しなければ、そのアトリビュートが作成されます。 このパターンを使ってVEXシェーダのExportオプションを上書きすることで、特定のアトリビュートへの書き込みや作成を回避することができます。 パターンはVEXパラメータに一致しますが、バインドしたアトリビュートには一致しません。 バインドしたアトリビュートは、読み取り専用になります。
Enable Multithreading
VEXによるスレッドの問題はないはずです。 しかし問題があれば、これによって、問題のあるノードがどれなのか判断し、 全体的にスレッド化を無効にせずに回避することができます。
Data Bindings ¶
Geometry
処理するオブジェクト上のジオメトリのリスト。
Group
処理するそのジオメトリのサブセット。グループのタイプは、 Run Over で指定したタイプと同じでなければなりません。
Run Over
このタイプのコンポーネント毎(ポイント、プリミティブ/フェース、頂点)にVEXコードを適用します( Detail を選択した場合はVEXコードは1回のみ実行されます))。
コンポーネント毎に、VEXコードは読み書きできるようにアトリビュートを@
で始まる変数(例えば、@Cd
)にバインドして実行されます。
Numbers
を選択すると、Houdiniはコンポーネント毎ではなく、特定の反復回数だけVEXコードを実行します。
このモードでは、VEXコードは読み取り専用Detailアトリビュートのみを@
変数にバインドします。
Number Count
Run Over が Numbers の時、ここにはVEXコードを実行する反復回数を指定します。
反復の度に、@numelem
はこの反復総回数にバインドされ、@elemnum
は0
から`@numelem - 1までの反復番号にバインドされます。
このモードでは、VEXコードは読み取り専用Detailアトリビュートのみを@
変数にバインドします。
Thread Job Size
Run Over が Numbers の時、ここには別々のスレッドで同時に走る最大反復回数を指定します。
この最大反復回数が Number Count 以上の場合、すべての反復はシングルスレッドで順次に実行されます。
これが1
の場合、各反復が別々のスレッドで実行されます。
1
より大きくて Number Count 未満の場合、このノードは、その回数のサイズで反復をバッチに分けて、別々のスレッドで並列で各バッチを実行します。
Autobind by Name
アトリビュートの名前を使用して、どのアトリビュートをどのパラメータにバインドするか決めます。
Integerアトリビュートは、integerパラメータにバインドします。 Floatアトリビュートは、タプルサイズに応じてfloat, vector, point, matrix, matrix4パラメータにバインドします。 Stringアトリビュートは、文字列パラメータにバインドします。
Attribute Name, VEX Parameter
手動で各アトリビュートのバインドを指定します。
Field Name, VEX Parameter
オプションで、このオブジェクトのScalar, Vector, Matrix, IndexフィールドをCVEX関数にバインドします。
それらのフィールドは、各エレメントの現行P
位置でサンプリングされます。
Autobind Groups by Name
自動的に任意のグループを、名前の頭がgroup_
で始まるIntegerパラメータにバインドします。
Group Name, VEX Parameter
手動で各グループのバインドを指定します。
Update Normals If Displaced
ポイントが繰り越されてしまい、P
アトリビュートが書き込まれ、N
アトリビュートが書き込まれていない場合、入力の法線が古くなります。
このオプションを設定すると、ポイントの繰り越しが起きた時に頂点とポイントの法線が更新されます。
VEX Precision
VEXは、32ビットまたは64ビットの精度で評価することができます。 64ビットの方が特にトランスフォームでは精度が高いです。
Note
入力のアトリビュートは、元の精度を維持するので、32ビットのポジションに対して64ビットVEXを使用すると、まず最初にそれらの位置が64ビットに変換されてから、処理が適用され、書き出し時に32ビットに変換して戻されます。
Autoモードは、入力ジオメトリの優先精度に基づいて32ビットと64ビットを切り替えます。 64ビット精度で実行すると、作成されたアトリビュートがどれも64ビットになります。 32ビット精度で実行すると、作成されたアトリビュートがどれも32ビットになります。 Attribute Castを使用することで、この優先精度を変更することができます。
Inputs ¶
Input 1, 2, 3, 4
これらの入力は、VOP内部にアクセス可能な4つの仮想入力を制御します。
VEXpressionを使用する時は、VOPのOpInput1-4ワイヤーまたは@OpInput1-4
文字列パラメータを使うことで、それらの仮想入力にアクセスすることができます。
また、入力番号を受け取るVEX関数に数値で0-3を使うことで、それらの仮想入力にアクセスすることもできます。
None
この入力にジオメトリが接続されません。
SOP
VEXを実行する前に、このSOPジオメトリがクックされて、その結果がこの入力に接続されます。
DOP Data
参照する現行シミュレーション内のデータ。
ここには、オブジェクト/データ(例えば、pyro1/vel
)として指定して、pyro1
オブジェクト(これは3つのボリュームプリミティブとして表示します)のVelocityフィールドを参照します。
Myself
現在処理されているジオメトリを参照するのは、VEX関数が元の形式を参照できるようにコピーを必ず作成しなければならない特別な時です。 これを使うことで、それを処理することができます。
Nth Context Geometry
これらのジオメトリは、親のDOP Network自体に接続されたSOPを参照します。
Myself (No Reads from Outputs)
現在処理されているジオメトリを参照します。コピーを作成しないので、バインドされたアトリビュートから読み込みを作成しないようにするのはユーザ次第です。
SOP Path
接続するSOPのパス。
DOP Data
このシミュレーションのDOPデータに接続するObject/Dataパス。 Use This Object’s Data が有効な場合、ここには、現在計算されているオブジェクトに追加するデータのデータパスを指定します。
Use This Object’s Data
有効にしたら、 現在計算されているオブジェクトに追加するデータの名前を DOP Data で指定します。
通常では、これは$OBJID/DataName
と同等ですが、$OBJID
を使用する場合には、相互アフェクターがRBDなどのソルバに作用しないように Solver Per Object トグルを設定する必要があります。
参照データが現在処理されているジオメトリの場合、( Myself バインドオプションと同様に)コピーが作られます。
Solver ¶
Use Timestep
このノードを適用するために、現行のソルバタイムステップを使用するかどうか決めます。
設定した場合、現行のタイムステップサイズがスケールで乗算されて、このノードの時間の増分値に使用されます。 設定しなかった場合、 Time Scale には積分する絶対仮想時間を指定します。
実際のリアルタイムとマイクロソルバ時間とのリンクを無効にすることで、別々の仮想時間でオペレーションを実行することができます。
Time Scale
このマイクロソルバに使用するタイムステップをこの値でスケールします。 これにより、他とは異なる速度で動作するシミュレーションなどの非現実的な効果を表現することができます。
同様に、ソルバをメインのタイムステップとは関係なく評価する必要がある場合に役に立ちます。
Parameter Operations
各データオプションパラメータには、それに関連するそのパラメータの動作方法を指定するメニューがあります。
Use Default
Default Operationメニューの値を使用します。
Set Initial
このデータを作成した時だけ、このパラメータの値を設定します。 それ以降のすべてのタイムステップ上では、このパラメータの値は変更されません。 これは、ポジションやVelocityのような初期状態のセットアップに役に立ちます。
Set Always
このパラメータの値を常に設定します。これは、特定のキーフレーム値が時間にわたって必要な時に役に立ちます。 これは、時間にわたってオブジェクトの位置をキーフレームしたり、ジオメトリが変形する場合にタイムステップ毎に SOPのジオメトリを取得するのに役に立ちます。
この設定をパラメータ値に対してローカル変数と合わせて使用することで、時間にわたって値を修正することもできます。
例えば、X Positionでは、$tx + 0.1
のようなエクスプレッションがタイムステップ毎にオブジェクトを右に0.1ユニットずつ動かします。
Set Never
このパラメータの値をまったく設定しません。 このオプションは、このノードを使って1番目の入力に接続された既存のデータを修正する時に非常に役に立ちます。
例えば、RBD State DOPでオブジェクトの質量しかアニメーションさせたくない場合、 Set Never オプションを Mass 以外のすべてのパラメータで使用し、 Mass パラメータには Set Always を使用します。
Default Operation
Use Default に設定した Operation メニューのパラメータに対して、このパラメータが、使用するオペレーションを制御します。
このパラメータは、 Parameter Operations メニューと同じメニューオプションと意味を持ちますが、 Use Default の選択がありません。
Make Objects Mutual Affectors
このノードの1番目の入力に接続されたすべてのオブジェクトが、相互アフェクターになります。
これは、それらのオブジェクトをこのノードに接続する前にAffector DOPを使用して、*
と*
の間にアフェクターリレーションシップを作成する事と同じです。
このオプションは、すべてのオブジェクトをソルバに送って、お互いに影響し合うようにするのに便利です。
Group
オブジェクトコネクタをこのノードの1番目の入力に接続した時、このパラメータを使って、 このノードから影響を受けるそれらのオブジェクトのサブセットを選択することができます。
Data Name
オブジェクトまたは他のデータにデータを追加するために使用する名前を意味します。 Data Name に“/”(または複数)を含めれば、それはサブデータ内側に移動することを意味します。
例えば、Fan Force DOPのデフォルトの Data Name は“Forces/Fan”です。 これは、“Forces”という既存のデータに“Fan”という名前のデータを追加します。 “Forces”というデータが存在しなければ、単なるコンテナデータが作成されて、そこに“Fan”サブデータが追加されます。
異なるデータは、それらを使用する名前に対して異なる要件を持ちます。 非常に稀な場合を除いて、デフォルト値を使用してください。 いくつかの例外は、特定のデータまたは特定のタイプのデータを利用するソルバで説明します。
Unique Data Name
このパラメータを有効にすると、このノードで作成されるデータが既存データを上書きしないように 固有な名前で Data Name パラメータの値を修正します。
このパラメータをオフにすると、同じ名前の2つのデータを追加すると、2番目のデータが1番目のデータを置換します。 各タイプの挙動が必要な場合があります。
オブジェクトにいくつかのFan Forcesを吹き付けたい時に、各ファンが前のファンを上書きしないように、 個々のファンの Data Name を変更して名前の衝突を回避するよりも、 Unique Data Name の機能を使用する方が簡単です。
一方で、オブジェクトに既にRBD Stateデータが追加されていることを知っていれば、このオプションをオフにすることで、 新しいRBD Stateデータが既存データを上書きすることができます。
Solver Per Object
ソルバのデフォルトの挙動は、まったく同じソルバをグループで指定したすべてのオブジェクトに取り付けます。 これにより、パラメータが各オブジェクトに対して同一になるので、それらのオブジェクトをソルバによって1個のパスで処理することができます。
とはいえ、いくつかのオブジェクトは、同時に単一オブジェクトに対してより論理的に作用します。
それらの場合では、$OBJID
エクスプレッションを使用して、オブジェクト毎にソルバのパラメータを変化させたいことがあります。
このトグルを設定すれば、オブジェクト毎に別々のソルバが作成されて、$OBJID
が期待通りに変化します。
Copy Data DOPを使用してパラメータをスタンプする場合にも、この設定が必須です。
入力 ¶
First Input
このオプションの入力を使えば、このノードで修正するシミュレーションオブジェクトを制御することができます。 この入力に接続されていて Group パラメータフィールドに一致するオブジェクトが修正されます。
この入力を接続しなかった場合、このノードを Apply Data ノードと併用して使用するか、または他のデータノードの入力として使用することができます。
All Other Inputs
このノードに複数の入力コネクタがあれば、他のデータノードを取り付けて、このノードで作成されるデータのモディファイアとして動作させることができます。
意味のあるサブデータの特定のタイプは、ノードからノードへ変化します。 意味があるように取り付け可能な利用可能なデータノードのリストを確認するには、入力コネクタをクリックします。
出力 ¶
First Output
この出力のオペレーションは、このノードに接続している入力に依存します。 オブジェクトストリームがこのノードの入力であれば、その出力も入力と同じオブジェクトを含んだオブジェクトストリーム(しかし、取り付けられたこのノードのデータを持ちます)です。
オブジェクトストリームをこのノードに接続しなかった場合、その出力はデータ出力になります。 このデータ出力をApply Data DOPに接続したり、他のデータノードのデータ入力に直接接続することで、 このノードのデータをオブジェクトや他のデータに取り付けることができます。