| On this page | |
| Since | 18.0 |
Solarisの拘束 ¶
現在のところ、USDは拘束に対応していません。 パラメータ拘束は、説明的、不変、常に同じ結果を返すというUSDの設計思想におそらく反します。
USDを生成するUSD上のレイヤとして、LOPネットワークは動的拘束を計算して、そのUSDをディスクに書き出す度にそのタイムサンプルでその結果を“ベイク”することができます。
Tipsとメモ ¶
-
デフォルトでは、SOPs(
SOP Import LOPや
SOP Create LOPを介して)から取り込まれたジオメトリのPointアトリビュートはUSDに取り込まれます。 そのため、SOPsでアトリビュート(例えば、Upベクトルアトリビュート)をセットアップすることで、それらのアトリビュートをこのノードで使用することができます。
-
拘束系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
位置パラメータをサーフェス上にマッピングする方法。
UV (Sticky)
( UV Attribute パラメータで指定した)Primvarのテクスチャ座標系を使って、サーフェス上で UV パラメータの座標を照会します。
Primitive + UV
UV パラメータの座標を、特定のポリゴンフェース上の組み込みローカルUV座標として扱います。 最初の2つのコンポーネントがUとVの座標で、3番目のコンポーネント(W)がポリゴンフェースのインデックスです。 これは、テクスチャ座標を含んだアトリビュートが不要です。
Point Group
特定のジオメトリサブセット内のポイントの重心に一番近いサーフェスポイント上にソースオブジェクトを配置します。
Primitive Group
特定のジオメトリサブセット内のポリゴンフェースの重心に一番近いサーフェスポイント上にソースオブジェクトを配置します。
Closest Distance
Position パラメータのワールド空間位置に一番近いサーフェスポイント上にソースオブジェクトを配置します。
UV Attribute
Mode が UV (Sticky) の時、テクスチャ座標を含んだPrimvarの名前を指定します。
SOPsから取り込まれたジオメトリに関しては、これはuvですが、USDでは通常ではstです。
テクスチャ座標は必ず重ならないようにしてください。
UV
Mode が UV (Sticky) の時、ソースオブジェクトを配置するテクスチャ座標を指定します。
Group
Mode が Point Group または Primitive Group の時、一番近いサーフェスポイントを検索するジオメトリサブセットの名前を指定します。
Position Attribute
Mode が Closest Distance の時、ポイントポジションを含んだPrimvarの名前を指定します。
SOPsから取り込まれたジオメトリに関しては、これはPですが、USDでは通常ではpositionsアトリビュートです。
Position
Mode が Closest Distance の時、一番近いサーフェスポイントを検索するワールド空間位置を指定します。
Use Snippet
Mode が UV (Sticky) 、 Primitive + UV 、 Closest Distance の時、VEXスニペットを使ってポジション/UVを設定することができます。
@ptnumは、拘束されている現行Primのインデックスです。
npoints(0)を使用することで、拘束されているPrimsの総数を取得することができます。
@Frameや@Timeを使用することで、スニペットを時間依存にすることができます。
(このスニペットの頭にある)posの初期値は、( Mode に応じて) Position パラメータまたは UV パラメータから評価された値です。
そのため、そのパラメータにエクスプレッションを使用して“ベース”値を計算し、このスニペットを使ってその値を修正することができます。
Look At Mode
ソースオブジェクトの向きを決める方法。
None
ソースオブジェクトを回転させません。
U Direction
サーフェスのU方向をLook At方向として使用します。 これはNURBSサーフェスで非常に上手く動作します。
V Direction
サーフェスのV方向をLook At方向として使用します。 これはNURBSサーフェスで非常に上手く動作します。
Direction Attribute from Geometry
サーフェス上のベクトルPrimvarの値をLook Atベクトルとして使用します。
From Primitive
ソースオブジェクトが常に特定のPrimの方へ向くように回転させます。
Look At Source
Look At Mode が From Primitive の時、視線先となるPrimの取得先(1番目の入力または2番目の入力)。
Look At Xform
Look At Mode が From Primitive の時、視線先となるPrimのシーングラフパス(これは、ポイントインスタンスを視線先にすることはできません)。
Direction Attribute
Look At Mode が Direction Attribute from Geometry の時、Look Atベクトルとして使用するサーフェス上のベクトルPrimvarの名前(primvar:接頭辞なし)を指定します。
Look Up Mode
Upベクトルを計算する方法。
Up Vector Attribute from Geometry
サーフェス上のvector3fPrimvarを使用して各ポイントのUpベクトルを指定します。
U Direction
サーフェスのU方向をUpベクトルとして使用します。 これはNURBSサーフェスで非常に上手く動作します。
V Direction
サーフェスのV方向をUpベクトルとして使用します。 これはNURBSサーフェスで非常に上手く動作します。
X Axis
ワールドの+X方向をUpベクトルとして使用します。
Y Axis
ワールドの+Y方向をUpベクトルとして使用します。
Z Axis
ワールドの+Z方向をUpベクトルとして使用します。
From Primitive
ソースPrimがサーフェスに沿って移動する時に、そのUpベクトルが、指定したPrimに向くようにソースPrimを回転させます。
Custom
Up Vector Attribute from Geometry パラメータのベクトルを使用します。
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 と同じ軸を指定することはできません。
Up Attribute
Look Up Mode が Up Vector Attribute from Geometry の時、Look Atベクトルとして使用するサーフェス上のvector3fPrimvar(primvar:接頭辞なし)の名前を指定します。
Roll
Look At方向を基準としたロール角度(単位は度)。
Use Snippet
VEXスニペットを使ってロールを設定します。
このスニペットでは、ロール角度をroll変数に書き込んでください。
典型的にはAttribute Wrangle SOPで利用可能な変数を使用することができます。
@ptnumは、拘束されている現行Primのインデックスです。
npoints(0)を使用することで、拘束されているPrimsの総数を取得することができます。
@Frameや@Timeを使用することで、スニペットを時間依存にすることができます。
(スニペットの最初の時点での)rollの初期値は、 Roll パラメータが評価された値になります。
そのため、そのパラメータでエクスプレッションを使って“ベース”値を計算し、スニペットを使ってその値を修正することができます。
Examples ¶
SurfaceConstraint Example for Surface Constraint
このサンプルでは、Surface Constraint LOPの様々な使い方について説明しています。
| See also |