On this page |
このノードは、RBD Object上のある位置を、他のシミュレーションオブジェクトから派生した“goal”の位置またはワールド空間の位置に拘束します。
RBD Hinge Constraintは、デジタルアセットです。
RBD Hinge Constraintの使い方
-
Rigid Bodies タブの
RBD Hinge Constraintツールをクリックします。
-
拘束するオブジェクトを選択して、Enterを押して選択を確定します。
-
ヒンジ拘束の位置を選択します。
Note
⇧ Shiftを押しながらカーソルを動かすと、基準平面から拘束を離すことができます。
-
シーンビューのハンドルまたはパラメータエディタの Constraint Direction パラメータを設定することで、ヒンジの方向を設定します。
パラメータ
Constraint
Constrained Object
拘束されるRBD Objectを指定します。
Goal Object
goalの位置を決めるために使用するRBD Objectを指定します。
このパラメータが空っぽのままであれば、オブジェクトがワールド空間の位置に拘束されます。
Constrained Location
拘束のローカルオブジェクト空間位置の値の計算に使用するワールド空間の位置を指定します。
Goal Positionパラメータも、この位置を使用してセットアップされます。
Constraint Direction
ヒンジ拘束の向きの初期化に使用するワールド空間の方向を指定します。
Length
ヒンジの両端間の距離を指定します。
Mirror Constraint
有効にすると、その拘束に関係のあるオブジェクトすべてが相互アフェクターになります。
Bullet Data
以下のパラメータは、Bullet Solverで使用されます。
Constraint Force Mixing
この値を上げると、拘束の弾力性が大きくなり、シミュレーションの安定性が高まることがあります。 拘束は、このパラメータに比例した量と、拘束の実行に必要なフォースを乗算した値によって、不安定になることがあります。
Error Reduction Parameter
拘束エラーが次のシミュレーションステップの間で修復される割合を指定します。 ERPを0に設定すると、拘束されたオブジェクトは、シミュレーションが進行するにつれ、除々に離れていきます。 ERPを1に設定すると、ソルバは、次のシミュレーションステップの間、すべての拘束エラーを修復しようとします (しかし、シミュレーションによっては不安定になることがあります)。 ほとんどのシミュレーションでは、0.1から0.8までの値を推奨します。
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 と Time Scale のパラメータの設定に依存しています。
この値は、シミュレーションの開始時間がゼロになるようになっています。つまり、シミュレーションの最初のタイムステップをテストする時は、$T == 0
や$FF == 1
を使うのではなくて、$ST == 0
のようなテストを使うのがベストです。
SF
この値は、ノードが評価されるシミュレーションフレーム(正確には、シミュレーションタイムステップ番号)です。
この値は、変数Fで表現される現在のHoudiniのフレーム番号と同じではなく、DOP Networkパラメータの設定に依存しています。代わりに、この値は、シミュレーション時間(ST)をシミュレーションタイムステップサイズ(TIMESTEP)で割算した値と同じです。
TIMESTEP
この値は、シミュレーションタイムステップのサイズです。この値は、1秒あたりのユニットで表現した値をスケールするのに役に立ちますが、タイムステップ毎に適用されます。
SFPS
この値は、TIMESTEPの逆数です。シミュレーション時間の1秒あたりのタイムステップ数です。
SNOBJ
これはシミュレーション内のオブジェクトの数です。Empty Objectノードなどのオブジェクトを作成するノードでは、この値は、オブジェクトが評価される度に値が増えます。
固有のオブジェクト名を確保する良い方法は、object_$SNOBJ
のようなエクスプレッションを使うことです。
NOBJ
この値は、このタイムステップ間で現行ノードで評価されるオブジェクトの数です。 この値は、多くのノードがシミュレーション内のオブジェクトすべてを処理しないので、SNOBJとは異なります。
この値は、ノードが各オブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJ
この値は、ノードで処理される特定のオブジェクトのインデックスです。 この値は、指定したタイムステップで常にゼロからNOBJ-1まで実行されます。 この値は、OBJIDやOBJNAMEなどのシミュレーション内の現行オブジェクトを識別せず、現在の処理順でのオブジェクトの順番を識別します。
この値は、オブジェクト毎に乱数を生成するのに役に立ちます。他には、処理別にオブジェクトを2,3のグループに分けるのに役に立ちます。
この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら-1を返します。
OBJID
この値は、処理されているオブジェクトの固有のオブジェクトIDです。 すべてのオブジェクトは、すべての時間のシミュレーション内のオブジェクトすべてで固有な整数値が割り当てられています。たとえオブジェクトが削除されても、そのIDは決して再利用されません。
オブジェクトIDは、指定したオブジェクトを固有なものと識別するために常に使われています。 オブジェクトIDは、オブジェクト毎に別々の処理をさせたいシミュレーションで非常に役に立ちます。 オブジェクト毎に固有の乱数を生成するのにも使われます。
この値は、dopfieldエクスプレッション関数を使って、オブジェクトの情報を検索するのにベストな方法です。
この値は、ノードがオブジェクトを続けて処理(例えば、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ノードでは、以下のエクスプレッションを記述することができます:
$tx + 0.1
これはオブジェクトをタイムステップ毎にX軸方向に0.1単位分移動させます。
Examples
Pendulum Example for RBD Hinge Constraint dynamics node
このサンプルでは、RBD Hinge Constraintを使って、 RBDオブジェクトとワールド空間位置または他のRBDオブジェクトとの間にヒンジのジョイントを設定して振り子を作成する方法を説明しています。