On this page |
このノードは、RBD Object上のある位置を、他のシミュレーションオブジェクトから派生した“goal”の位置またはワールド空間の位置に拘束します。
RBD Pin Constraintは、デジタルアセットです。
RBD Pin Constraintの使い方 ¶
-
Rigid Bodies タブのRBD Pin Constraintツールをクリックします。
-
拘束するオブジェクトを選択して、Enterを押して選択を確定します。
-
Pin Constraintの位置を選択します。
Note
⇧ Shiftを押しながらカーソルを動かすと、基準平面から拘束を離すことができます。
パラメータ ¶
Constraint ¶
Constrained Object
拘束されるRBD Objectを指定します。
Goal Object
goalの位置を決めるために使用するRBD Objectを指定します。 このパラメータが空っぽのままであれば、オブジェクトがワールド空間の位置に拘束されます。
Constrained Location
拘束のローカルオブジェクト空間位置の値の計算に使用するワールド空間の位置を指定します。
Goal Location
ゴールオブジェクト内の拘束のローカルオブジェクト空間位置の初期化に使用するワールド空間の位置を指定します。
Mirror Constraint
有効にすると、その拘束に関係のあるオブジェクトすべてが相互アフェクターになります。
Bullet Data ¶
以下のパラメータは、Bullet Solverで使用されます。
Constraint Force Mixing
この値を上げると、拘束の弾力性が大きくなり、シミュレーションの安定性が高まることがあります。 拘束は、このパラメータに比例した量と、拘束の実行に必要なフォースを乗算した値によって、不安定になることがあります。
Error Reduction Parameter
拘束エラーが次のシミュレーションステップの間で修復される割合を指定します。 ERPを0に設定すると、拘束されたオブジェクトは、シミュレーションが進行するにつれ、除々に離れていきます。 ERPを1に設定すると、ソルバは、次のシミュレーションステップの間、すべての拘束エラーを修復しようとします (しかし、シミュレーションによっては不安定になることがあります)。 ほとんどのシミュレーションでは、0.1から0.8までの値を推奨します。
Angular Motor ¶
Number of Motors
Angular Motorで有効な軸の数を指定します。
Axis 1
オブジェクトのローカル空間での1番目の回転軸の方向。
Axis 2
2番目の回転軸の方向。この方向は、 Axis 1 に対して直交するようにしてください。3番目の軸は、 Axis 1 と Axis 2 の外積で計算されます。
Relative Angular Velocity
有効な各回転軸を基準としたターゲット相対角速度。
Max Impulse
ターゲット角速度の実行を適用するためにソルバに許容される最大Impulse。これは、モーターの強度を制御します。
Constraint Iterations
0より大きい場合、この拘束用の拘束ソルバによって実行される反復回数を上書きします。 拘束のいくつかのグループが他のグループよりも多くの反復回数を必要とする場合には、 ソルバの反復回数を全体的に上げるのではなく、このパラメータを使用します。
Disable Collisions
拘束されたオブジェクトのペア間の衝突検出を無効にします。
Guide Options ¶
Show Guide Geometry
このオプションをオンにすると、この拘束を意味するガイドジオメトリがビューポートに表示されます。
Radius
この拘束のガイドジオメトリとしてビューポートに描画される球の半径を制御します。
Color
このパラメータは、ガイドジオメトリのカラーを制御します。
Show Object Link
このパラメータは、拘束されたオブジェクトに拘束を接続しているガイドジオメトリの表示を制御します。
Activation
このノードが、指定したタイムステップで特定のオブジェクトに対して何でもするべきか決めます。 このパラメータがエクスプレッションであれば、(たとえデータ共有が有効でも)オブジェクト毎にパラメータが評価されます。
パラメータがゼロ以外の値に評価されれば、データがそのオブジェクトに追加されます。 パラメータがゼロに評価されれば、データが追加されず、このノードで以前追加されたデータが削除されます。
入力 ¶
First Input
このオプションの入力を使えば、このノードで修正するシミュレーションオブジェクトを制御することができます。 この入力に接続されていて Group パラメータフィールドに一致するオブジェクトが修正されます。
この入力を接続しなかった場合、このノードを Apply Data ノードと併用して使用するか、または他のデータノードの入力として使用することができます。
All Other Inputs
このノードに複数の入力コネクタがあれば、他のデータノードを取り付けて、このノードで作成されるデータのモディファイアとして動作させることができます。
意味のあるサブデータの特定のタイプは、ノードからノードへ変化します。 意味があるように取り付け可能な利用可能なデータノードのリストを確認するには、入力コネクタをクリックします。
出力 ¶
First Output
この出力のオペレーションは、このノードに接続している入力に依存します。 オブジェクトストリームがこのノードの入力であれば、その出力も入力と同じオブジェクトを含んだオブジェクトストリーム(しかし、取り付けられたこのノードのデータを持ちます)です。
オブジェクトストリームをこのノードに接続しなかった場合、その出力はデータ出力になります。 このデータ出力をApply Data DOPに接続したり、他のデータノードのデータ入力に直接接続することで、 このノードのデータをオブジェクトや他のデータに取り付けることができます。
ローカル変数 ¶
ST
ノードが評価されるシミュレーション時間です。
この値は、変数Tで表現される現在のHoudiniの時間と同じではなく、DOP Networkの Offset Time と Scale Time のパラメータの設定に依存しています。
STは、シミュレーションの開始時間がゼロになるようになっています。
つまり、シミュレーションの最初のタイムステップをテストする時は、$T == 0
や$FF == 1
を使うのではなくて、$ST == 0
のようなテストを使うのがベストです。
SF
ノードが評価されるシミュレーションフレーム(正確には、シミュレーションタイムステップ番号)。
この値は、変数Fで表現される現在のHoudiniのフレーム番号と同じではなく、DOP Networkパラメータの設定に依存しています。 代わりに、この値は、シミュレーション時間(ST)をシミュレーションタイムステップサイズ(TIMESTEP)で割算した値と同じです。
TIMESTEP
シミュレーションタイムステップのサイズ。 この値は、1秒あたりのユニットで表現した値をスケールするのに役に立ちますが、タイムステップ毎に適用されます。
SFPS
TIMESTEPの逆数。 シミュレーション時間の1秒あたりのタイムステップ数です。
SNOBJ
シミュレーション内のオブジェクトの数。 Empty Object DOPなどのオブジェクトを作成するノードでは、SNOBJは、オブジェクトが評価される度に値が増えます。
固有のオブジェクト名を確保する良い方法は、object_$SNOBJ
のようなエクスプレッションを使うことです。
NOBJ
このタイムステップ間で現行ノードで評価されるオブジェクトの数。 この値は、多くのノードがシミュレーション内のオブジェクトすべてを処理しないので、SNOBJとは異なります。
NOBJは、ノードが各オブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJ
ノードで処理される特定のオブジェクトのインデックス。 この値は、指定したタイムステップで常にゼロからNOBJ-1まで実行されます。 この値は、OBJIDやOBJNAMEなどのシミュレーション内の現行オブジェクトを識別せず、現在の処理順でのオブジェクトの順番を識別します。
この値は、オブジェクト毎に乱数を生成するのに役に立ちます。他には、処理別にオブジェクトを2,3のグループに分けるのに役に立ちます。 この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら-1を返します。
OBJID
処理されているオブジェクトの固有ID。 すべてのオブジェクトは、すべての時間のシミュレーション内のオブジェクトすべてで固有な整数値が割り当てられています。たとえオブジェクトが削除されても、そのIDは決して再利用されません。 オブジェクトIDは、オブジェクト毎に別々の処理をさせたい場面(例えば、オブジェクト毎に固有の乱数を生成したい)で非常に役に立ちます。
この値は、dopfieldエクスプレッション関数を使って、オブジェクトの情報を検索するのにベストな方法です。
OBJIDは、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら-1を返します。
ALLOBJIDS
この文字列には、現行ノードで処理されているオブジェクトすべての固有のオブジェクトIDをスペース区切りにしたリストが含まれています。
ALLOBJNAMES
この文字列には、現行ノードで処理されているオブジェクトすべての名前をスペース区切りにしたリストが含まれています。
OBJCT
現行オブジェクトが作成された時のシミュレーション時間(変数STを参照)。
そのため、オブジェクトが現在のタイムステップで作成されたかどうかチェックするには、$ST == $OBJCT
のエクスプレッションが常に使われます。
この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJCF
現行オブジェクトが作成された時のシミュレーションフレーム(変数SFを参照)。
この値は、OBJCT変数にdopsttoframeエクスプレッションを使ったものと等価です。この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJNAME
処理されているオブジェクトの名前を含んだ文字列値。
オブジェクト名は、シミュレーション内で固有であることが保証されていません。 しかし、オブジェクト名が固有になるように注意して名前を付けていれば、オブジェクトの識別は、オブジェクトIDよりも、オブジェクト名を指定するほうが簡単です。
オブジェクト名は、同じ名前を持つオブジェクトの数を仮想グループとして扱うこともできます。
“myobject”という名前のオブジェクトが20個あれば、DOPのActivationフィールドにstrcmp($OBJNAME, "myobject") == 0
を指定すると、DOPがその20個のオブジェクトのみを操作します。
この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら空っぽの文字列を返します。
DOPNET
現在のDOP Networkのフルパスを含んだ文字列値。 この値は、ノードを含むDOP Networkのパスを知りたりDOPサブネットのデジタルアセットで非常に役に立ちます。
Note
ほとんどのダイナミクスノードには、そのノードのパラメータと同じ名前のローカル変数があります。 例えば、Position DOPでは、以下のエクスプレッションを記述することができます:
$tx + 0.1
これはオブジェクトをタイムステップ毎にX軸方向に0.1単位分移動させます。
Examples ¶
Chain Example for RBD Pin Constraint dynamics node
このサンプルでは、お互いにチェーン状に拘束したRBDオブジェクトを作成する方法を説明しています。
Chainlinks Example for RBD Pin Constraint dynamics node
このチェーンシミュレーションでは、個々のチェーンリンクが、RBDシミュレーションでお互いに反応しています。
Pendulum Example for RBD Pin Constraint dynamics node
このサンプルでは、RBD Pin Constraintを使って、RBDオブジェクトをワールド空間位置または他のRBDオブジェクトにピン留めする方法を説明しています。