| On this page | |
| Since | 18.0 |
概要 ¶
このノードは、オブジェクトを一連のポイントの重心にリベット留めします。
他にもオプションで、このノードは、リベット留めされたオブジェクトにLook At拘束を追加することができます。
Solarisの拘束 ¶
現在のところ、USDは拘束に対応していません。 パラメータ拘束は、説明的、不変、常に同じ結果を返すというUSDの設計思想におそらく反します。
USDを生成するUSD上のレイヤとして、LOPネットワークは動的拘束を計算して、そのUSDをディスクに書き出す度にそのタイムサンプルでその結果を“ベイク”することができます。
Tips ¶
-
拘束系LOPノードは、USDジオメトリをSOPsに変換してから、拘束系CHOPノードをSOPジオメトリに適用し、その変化をUSD Prim上にオーバーライドとして適用することで動作しています。 そういった理由で、拘束系LOPノードでは、USDデータを扱っている場合でも時折SOP用語(例えば、“ポイントグループ”や“プリミティブフループ”)を使用します。 将来のバージョンのHoudiniでは、これをもっとわかりやすく変更する予定です。
-
VEXスニペットでは、コロン(
:)を含んだ@変数名を使用することができます。これによって、特定のUSDアトリビュート名(例えば、i@primvars:foo)を自動的にバインドするのが簡単になります(通常、このような名前はVEXソースコード内では有効ではありません。このような名前がスニペット内で使用されると、このノードが自動的にその名前をエンコードします)。
パラメータ ¶
Sampling Behavior
このノードがクックされると、現行時間にただ1個のUSDタイムサンプルを生成するのではなく、たくさんのUSDタイムサンプルを生成することができます。
これは、このノードの後にCache LOPを接続することと同様ですが、こちらの方が非常に高速に評価され、他のノードからのデータをキャッシュ化しません。
これによって、以降のすべてのノードも時間依存にしてしまうノード時間依存を導入することなく、アニメーションデータをUSDで作成することができます。
その結果、一部のLOPネットワークの再生パフォーマンスを大幅に向上させることができます。
どのサンプリングモードでも、このノードのパラメータが時間と共に可変しない、且つ、ステージ上の他のタイムサンプルデータに依存していない場合、 呼応するアトリビュートに対して単一デフォルト値のみがUSD内で生成されます。 時間と共に可変するパラメータに対してのみUSDタイムサンプルが生成されます。
Sample Current Frame
現行時間に対して単一タイムサンプルが作成されます。
Sample Frame Range If Input Is Not Time Dependent
このノードの入力が時間依存の場合、このノードは、 Sample Current Frame モードと同様の挙動をします。 そうでない場合、このノードは、 Sample Frame Range モードと同様の挙動をします。
Sample Frame Range
Start/End/Inc パラメータを使用して、このノードのパラメータが評価される時間に対して複数の時間を生成し、それらの各時間においてアトリビュート毎にUSDタイムサンプルが作成されます。
Start/End/Inc
Sampling Behavior が Sample Frame Range の場合、このパラメータは、このノードで生成されるベースタイムサンプルの数と間隔を制御します。
このパラメータのデフォルト値は、@fstart、@fend、@fincです。
これらの値は、Houdiniを操作する時のグローバルHoudiniアニメーション設定の開始フレーム、終了フレーム、ステップサイズに相当します。
ROPノードを使用してフレーム範囲を生成した場合、これらの値は、実行したそのROPノードで指定された開始フレーム、終了フレーム、ステップサイズに相当します。
このデフォルトは、ディスクに書き出されるUSDファイルに、(Houdiniアニメーション設定に関係なく)ROPで指定されたフレーム範囲ちょうどのタイムサンプルを含めます。
Subframe Sampling
このノードで生成されたプライマリサンプル毎に、これらのパラメータは、そのプライマリサンプル時間付近に追加でサンプルを生成させることができます。 これは、プライマリサンプル時間だけでなく、カメラシャッターの開閉時間ちょうどにも正確なデータが存在することを保証するために非常によく使用します。
Shutter
プライマリサンプル時間を基準にシャッターの開閉時間を指定するのに使用されるメソッドを制御します。
Specify Manually
Shutter Open/Close パラメータの値で、プライマリサンプル時間を基準とした正確なオフセット値を指定します。
Use Camera Prim
Camera Prim パラメータで、シャッターの開閉時間が抽出されるカメラPrimのシーングラフパスを指定することで、プライマリサンプル時間を基準としたオフセット値を指定します。
Shutter Open/Close
Shutter モードが Specify Manually の場合、ここの2つのオフセット値がプライマリサンプル時間に追加され、シャッターの開閉時間が指定されます。 シャッターの開時間は0以下に、閉時間は0以上に設定してください。
Camera Prim
Shutter モードが Use Camera Prim の場合、ここには、入力ノードのステージ上のカメラPrimのシーングラフパスを指定します。 このPrimからShutter Open/Closeのアトリビュート値が読み込まれます。
Samples
プライマリサンプル毎に作成するサブフレームサンプルの数。 これらのサンプルは、シャッターの開時間から閉時間の間で均等に分布します。 このような均等な分布は、ちょうどプライマリサンプル時間にサンプルが作成される場合と作成されない場合があることに注意してください。
Always Include Frame Sample
有効にすると、ちょうどプライマリサンプル時間にサンプルを作成させることができます。 シャッター開時間とシャッター閉時間のどちらの Samples 値も既にプライマリサンプル時間でサンプルが配置されている場合、このオプションを有効にしても何の効果もありません。 そうでない場合、このオプションによって、追加でサンプルが作成されます。 つまり、プライマリサンプルあたりの実際のサンプル数は、 Samples で指定されたサンプル数よりも多くなる可能性があります。
Type
ソース(拘束される側)が通常のPrimまたはポイントインスタンスのどちらなのかを指定します。
Source
Source Type が Primitive の時に使用するPrimのシーングラフパス。
Source Instances
Source Type が Point Intance の時に使用するポイントインスタンスを/‹path›[‹instance_index›]構文で指定します(例えば、/geometry/instancer[1])。
Target Source
拘束先となるポイントの取得先。1番目の入力または2番目の入力のどちらなのかを指定します。
Type
ポイントが通常のPrimまたはポイントインスタンスのどちらなのかを指定します。
Target
Target Type が Primitive の時に使用するPrimのシーングラフパス。
Target Instance
Target Type が Point Intance の時に使用するポイントインスタンスを/‹path›[‹instance_index›]構文で指定します(例えば、/geometry/instancer[1])。
Hide Target
Target Source が First Input 、 Type が Primitive の時、そのパスの可視性を“hidden”に設定します。
Import Time
ソース/ターゲットのジオメトリを埋め込みSOPネットワーク内に取り込んで拘束を構築する際のフレームを指定します。
デフォルトの$FFエクスプレッションは、ソースまたはターゲットのPrimsを駆動させるタイムサンプルを持った時間依存ではないネットワーク上で拘束LOPを動作させるため、その拘束LOPを強制的に時間依存にします。
しかし、タイムサンプルを持たない時間依存ではないネットワークでパフォーマンスを良くするには、代わりに静的な値を使用することを推奨します。
Maintain Local Offset
これが無効(デフォルト)な時、ソースオブジェクトが拘束位置にスナップします。 これが有効な時、ソースオブジェクトは、そのソースオブジェクト自身と拘束位置の間で同じ相対距離を維持します。
Mode
ポイントジオメトリサブセット、または、ポリゴンフェースサブセットのポイントのどちらからポイントを取得するのか指定します。
Group
拘束先となるポイントを含んだジオメトリサブセットの名前。
Weights
グループ内の最初の3つのポイントに割り当てられるウェイト。
これによって、最初の3つのポイントから構築される平面上のリベット原点の正確な位置を微調整することができます。
例えば、0.5, 0.5, 0のウェイトは、1番目のポイントと2番目のポイントの間の中間位置に原点を配置します。
これらのウェイトの合計が0にならないようにしてください。 4番目以降のすべてのポイントのウェイトは常に1になります。
Use Snippet
VEXスニペットを使って Group と Weights を設定します。
VEXスニペットでは、グループをgroup文字列変数に書き出し、ウェイトをweightsベクトル変数に書き出してください。
VEXスニペットはソースPrim毎に評価されます。
@ptnumは、拘束されている現行Primのインデックスです。
npoints(0)を使用することで、拘束されているPrimsの総数を取得することができます。
@Frameや@Timeを使用することで、スニペットを時間依存にすることができます。
Look At Mode
リベット留めされるオブジェクトのLook At方向の計算方法。
None
ソースオブジェクトがどの方向にも向かないように回転させません。
Direction Attribute from Points
ポイント上のベクトルアトリビュートの平均を使用します。
Direction Vector from P0 to P1
グループ内の1番目のポイントから2番目のポイントまでの方向を使用します。
Normal Vector from P0,P1,P2 Plane
グループ内の最初の3つのポイントで形成された三角形の平面に垂直な方向を使用します。
From Primitive
ソースオブジェクトを、指定したPrimに向くように回転させます。
Look At Source
Look At Mode が From Primitive の時、視線先となるPrimの取得先(1番目の入力または2番目の入力)。
Look At Xform
Look At Mode が From Primitive の時、視線先となるPrimのシーングラフパス(これは、ポイントインスタンスを視線先にすることはできません)。
Look Up Mode
Upベクトルの計算方法。
Up Vector Attribute from Points
ポイント上のベクトルアトリビュートの平均を使用します。
Direction Vector from P0 to P1
グループ内の1番目のポイントから2番目のポイントまでの方向を使用します。
Normal Vector from P0,P1,P2 Plane
グループ内の最初の3つのポイントで形成された三角形の平面に垂直な方向を使用します。
X Axis
ワールドの+X方向をUpベクトルとして使用します。
Y Axis
ワールドの+Y方向をUpベクトルとして使用します。
Z Axis
ワールドの+Z方向をUpベクトルとして使用します。
From Primitive
ソースPrimがカーブに沿って移動する時に、そのUpベクトルが、指定したPrimに向くようにソースPrimを回転させます。
Custom
Up Vector Attribute from Points パラメータのベクトルを使用します。
Up Vector Source
Look Up Mode が From Primitive の時、Upベクトルを向けるPrimの取得先(1番目の入力または2番目の入力)。
Up Vector Xform
Look At Mode が From Primitive の時、Upベクトルを向けるPrimのシーングラフパス(これはポイントインスタンスに対応していません)。
Look At Axis
Look Atベクトルに合わせるソースオブジェクトの軸。 これを使用することで、ソースオブジェクトが作成された向きを補正することができます。 ここには、 Look Up Axis と同じ軸を指定することはできません。
Look Up Axis
Upベクトルに合わせるソースオブジェクトの軸。 これを使用することで、ソースオブジェクトが作成された向きを補正することができます。 ここには、 Look At Axis と同じ軸を指定することはできません。
Direction Attribute
Look At Mode が Direction Attribute from Points の時、平均からLook At方向を求めるためのポイント上のベクトルアトリビュートの名前。
Up Attribute
Look Up Mode が Up Vector Attribute from Points の時、平均からUpベクトルを求めるためのポイント上のベクトルアトリビュートの名前。
Roll
Look At方向を基準としたロール角度(単位は度)。
Use Snippet
VEXスニペットを使ってロールを設定します。
このスニペットでは、ロール角度をroll変数に書き込んでください。
典型的にはAttribute Wrangle SOPで利用可能な変数を使用することができます。
@ptnumは、拘束されている現行Primのインデックスです。
npoints(0)を使用することで、拘束されているPrimsの総数を取得することができます。
@Frameや@Timeを使用することで、スニペットを時間依存にすることができます。
(スニペットの最初の時点での)rollの初期値は、 Roll パラメータが評価された値になります。
そのため、そのパラメータでエクスプレッションを使って“ベース”値を計算し、スニペットを使ってその値を修正することができます。
Examples ¶
PointsConstraint Example for Points Constraint
このサンプルには、Points Constraint LOPの色々な使い方が含まれています。
| See also |