On this page |
結果は、Crowd Solverにより、すぐに使用できます。
パラメータ
Creation Frame Specifies Simulation Frame
作成フレームが、グローバルなHoudiniのフレーム($F
)またはシミュレーション固有のフレーム($SF
)を参照するかどうかを決定します。
後者は、DOPネットワークレベルでオフセット時間とスケール時間の影響を受けます。
Creation Frame
オブジェクトが作成されるフレーム番号。オブジェクトは、現行フレーム番号がこのパラメータ値と等しい場合のみ作成されます。つまり、DOP Networkは、指定されたフレームのタイムステップを評価する必要があり、それが行なわれないとオブジェクトは作成されません。
Enable Ragdoll Data
Bullet Solverを使ってエージェントを解決するのに必要なPointアトリビュートを作成するかどうか指定します。
Crowd
Source
Initial Geometry のソースを指定します。 ここには、SOPのパス、DOPネットワークの入力のどれかに接続されたSOPを指定することができます。
Initial Geometry
Crowd Objectの初期ジオメトリを含んだSOPのパス。
Use Object Transform
Initial Geometry を含んだオブジェクトのトランスフォームをジオメトリに適用するかどうかを指定します。
Add ID Attributes
エージェント毎にid
Pointアトリビュートの値を割り当て、nextid
Detailアトリビュートを更新します。
Life Expectancy
Source
Clip Transition Graph ジオメトリのソースを指定します。 ここには、SOPのパス、DOPネットワークの入力のどれかに接続されたSOPを指定することができます。
Clip Transition Graph
クリップがお互いにトランジション(遷移)できる方法を示したジオメトリを含んだSOPのパス。
Source
Clip Properties ジオメトリのソースを指定します。 ここには、SOPのパス、DOPネットワークの入力のどれかに接続されたSOPを指定することができます。
Clip Properties
クリップをループさせる方法に関する高度なオプションを示したジオメトリを含んだSOPのパス。
Source
Target Geometry のソースを指定します。 ここには、SOPのパス、DOPネットワークの入力のどれかに接続されたSOPを指定することができます。
Target Geometry
crowdanimated
Pointアトリビュートが0以外のエージェントのターゲットジオメトリを含んだSOPのパス。
Use Object Transform
Target Geometry を含んだオブジェクトのトランスフォームをジオメトリに適用するかどうかを指定します。
Bullet Data
Show Guide Geometry
Collision Padding を含むオブジェクトの衝突形状の可視化を表示します。これは衝突検出の問題をデバッグするのに役に立ちますが、通常ではオブジェクトのジオメトリの表示よりも遅いです。
Color
ガイドジオメトリのカラーを指定します。
Deactivated Color
オブジェクトが移動せず、Bullet Solverによって非活動化された時のガイドジオメトリのカラーを指定します。
Geometry Representation
オブジェクトを表現するためにBulletエンジンで使用される形状。 Show Guide Geometry オプションを使えば、この衝突形状を可視化することができます。
Convex Hull
オブジェクトのデフォルトの形状。Bullet SolverはジオメトリポイントのConvex(凸)ハルから衝突形状を作成します。
Concave
Bullet Solverは、ジオメトリをポリゴンに変換し、それらの三角形からConcave(凹)衝突形状を作成します。 この形状は、トーラスや中空管などのConcave(凹)オブジェクトをシミュレーションする時に役に立ちます。 しかし、必要な時にだけConcave(凹)表現を使用するようにしてください。その理由は、 Convex Hull 表現の方が通常ではパフォーマンスが良いからです。
Box
オブジェクトの境界ボックス。
Capsule
オブジェクトの境界カプセル。
Cylinder
オブジェクトの境界円柱。
Compound
Bulletプリミティブ(ボックス、球、円柱を含む)で構成された複雑な形状を作成します。Bake ODE SOPを使用する必要があります。
Sphere
オブジェクトの境界球。
Plane
静的グランド平面。
Create Convex Hull Per Set Of Connected Primitives
Geometry Representation が Convex Hull の時、Bullet Solverは、ジオメトリ内の繋がったプリミティブのセット毎に 別々のConvex Hull衝突形状を含んだ複合形状を作成します。
AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry
有効にすると、Position, Rotation, Box Size, Radius, Lengthの値の代わりに、オブジェクトのGeometryサブデータが解析されます。
Geometry Representation が Box, Capsule, Cylinder, Sphere, Plane の時、ジオメトリ境界を使用して、形状を作成します。
Position
Bullet空間でのオブジェクト形状の位置。 Geometry Representation が Box, Sphere, Capsule, Cylinder, Plane の時に利用可能です。
Rotation
Bullet空間でのオブジェクト形状の向き。 Geometry Representation が Box, Capsule, Cylinder, Plane の時に利用可能です。
Box Size
オブジェクト形状の半分の大きさ。 Geometry Representation が Box の時に利用可能です。
Radius
球形状の半径。 Geometry Representation が Sphere, Capsule, Cylinder の時に利用可能です。
Length
Y方向でのカプセルまたは円柱の長さ。 Geometry Representation が Capsule または Cylinder の時に利用可能です。
Collision Padding
形状間の隙間埋め距離。このパラメータは、衝突検出の信頼性とパフォーマンスを改善するためにBulletエンジンで使用されます。 シーンのスケールに応じて、この値をスケールする必要があります。このパラメータは、衝突形状のサイズを大きくするので、衝突形状が大きくならないように Shrink Collision Geometry を有効にすることを推奨します。
このオプションは、 Plane のジオメトリ表現では利用不可です。
Shrink Collision Geometry
Collision Padding がオブジェクトの有効サイズを大きくしないように、衝突ジオメトリを収縮させます。
このパラメータは、初期の段階で密接に詰め込まれた衝突形状がお互いに貫通しないようにシミュレーションのパフォーマンスを改善することができます。 また、 Collision Padding で引き起こされたオブジェクト間の隙間を除去します。
Geometry Representation が Box, Capsule, Cylinder, Compound, Sphere の時、各プリミティブの半径/長さが、 Shrink Amount によって小さくなります。
Geometry Representation が Convex Hull の時、ジオメトリ表現の各ポリゴンが、 Shrink Amount によって内側に収縮します。
このオプションは、 Concave または Plane のジオメトリ表現では利用不可です。
Shrink Amount
Shrink Collision Geometry によるサイズ変更の度合いを指定します。デフォルトでは、この値は、 Collision Padding と同じなので、 衝突形状を収縮したサイズ( Collision Padding を含む)は、オブジェクトのジオメトリと同じサイズになります。
このオプションは、 Concave や Plane のジオメトリ表現では利用不可です。
Add Impact Data
有効な時、シミュレーション時に発生するImpactが Impacts または Feedback のデータ内で並べ替えられます。このオプションを有効にすると、シミュレーション時間とメモリ使用量が増える場合があります。
Enable Sleeping
オブジェクトが再び動くまで、移動しないオブジェクトのシミュレーションを無効にします。 オブジェクトが移動していないかどうか判断するには、線形速度と回転速度の閾値が使われます。 Display Geometry チェックボックスをオフにすれば、Guide Geometryのカラーが Color から Deactivated Color に変化することが確認できます。
Linear Threshold
オブジェクトの線形速度の停止と見なす閾値。オブジェクトの線形速度が、時間周期に対して、この閾値よりも小さければ、オブジェクトが停止していると見なされます。
Angular Threshold
オブジェクトの回転速度の停止と見なす閾値。オブジェクトの回転速度が、時間周期に対して、この閾値よりも小さければ、オブジェクトが停止していると見なされます。
Physical
Density
オブジェクトの質量は、この密度とそのボリュームの積です。
Rotational Stiffness
オブジェクトは、かすめるような打撃を受けると、スピンすることがよくあります。 与えられる回転の量は、オブジェクトの形状と質量の配分により決まります。 これは、 慣性テンソル として知られています。
Rotational Stiffnessは、これに適用されるスケール係数です。 このStiffnessが大きくなるとオブジェクトはスピンしにくくなり、 Stiffnessの値が小さくなると、スピンしやすくなります。
Bounce
オブジェクトの弾力性。 Bounceが1.0である2つのオブジェクトが衝突すると、エネルギーを損失することなくリバウンドします。 Bounceが0.0である2つのオブジェクトが衝突すると、動きが停止します。
Friction
オブジェクトの摩擦係数。 0の値は、オブジェクトに摩擦がないという意味です。
出力
First
このノードにより作成されたシミュレーションオブジェクトは、単一の出力を介して送られます。
ローカル変数
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
The following examples include this node.
ClipLayerTrigger Example for Agent Clip Layer dynamics node
このサンプルでは、Agent Clip Layer DOPを使って、エージェントの上半身にクリップを適用する方法を説明しています。 このクリップは、そのエージェントが境界ボックス内にある時にアクティブになります。
AnimatedStaticAgents Example for Crowd Solver dynamics node
このサンプルでは、Crowd Solver向けに"アニメーションする静的な"エージェントをセットアップする方法を説明しています。 このようなエージェントは、SOPレベルのアニメーションに追従し、これを障害物として使用したり、ラグドールに変換することができます。
CrowdHeightField Example for Crowd Solver dynamics node
このサンプルでは、Crowd SolverのTerrain AdaptationとBullet SolverのラグドールのコリジョンにHeight Fieldを使用する方法について説明しています。
FollowTerrain Example for Crowd Solver dynamics node
このサンプルでは、地形の法線方向にエージェントが向く群衆シミュレーションのセットアップの方法について説明しています。
FootLocking Example for Crowd Solver dynamics node
このサンプルでは、エージェントの足をロックさせる方法について説明しています。
PartialRagdolls Example for Crowd Solver dynamics node
このサンプルでは、部分ラグドールのセットアップ方法について説明しています。エージェントのジョイントのサブセットがBullet Solverによってアクティブオブジェクトとしてシミュレーションされ、残りのジョイントがアニメーションします。
PinnedRagdolls Example for Crowd Solver dynamics node
このサンプルでは、ラグドールを外部オブジェクトに取り付ける拘束のセットアップ方法と、モーターを使ってアニメーションクリップを持つアクティブラグドールを駆動させる方法について説明しています。
Formation Crowd Example Example for Crowd Solver dynamics node
変化する編成のセットアップを説明した群衆サンプル
このセットアップではエージェントの部隊を作成しています。ここでは2つのパスが作成されています。 部隊の中央部分から動き始め、2つの編成に分かれます。 1つが左側に、もう1つが前方に行進して、ゆっくりとその編成が、くさび形に変わります。
エージェントを編成内に維持させるために、独自のジオメトリ形状を使用しています。 その形状は、個々のエージェントに対してゴールとして使用されるポイントです。 その形状をブレンドシェイプさせることで、別の編成に変化させることが可能です。 crowdsourceオブジェクトの中に入って、その構造を確認してください。
Note
アニメーションクリップは、シーンを再生する前にベイクするのに必要です。これは、サンプルをCrowdsシェルフから作成した場合に自動的に行なわれます。 そうでない場合は、シーンファイルを希望の場所に保存し、'/obj/bake_cycles' ROP NetworkのRenderをクリックして、ファイルを書き出します。 それらのファイルのデフォルトのパスは、${HIP}/agentsです。
Stadium Crowd Example Example for Crowd Solver dynamics node
スタジアムのセットアップを説明した群衆サンプル。
このセットアップは、スタジアムの群衆を作成します。 回転するcheer_bboxオブジェクトをエージェントの境界ボックスとして使用しています。 エージェントがそのオブジェクトの中に入ると、座っている状態から応援している状態へ推移します。 数秒後には、応援している群衆がまた座っている状態に戻ります。
Note
アニメーションクリップは、シーンを再生する前にベイクするのに必要です。これは、サンプルをCrowdsシェルフから作成した場合に自動的に行なわれます。 そうでない場合は、シーンファイルを希望の場所に保存し、'/obj/bake_cycles' ROP NetworkのRenderをクリックして、ファイルを書き出します。 それらのファイルのデフォルトのパスは、${HIP}/agentsです。
Tip
群衆の一部だけをもっと高速にプレビューしたいのであれば、/obj/crowdsource/switch_all_subsectionにSwitchノードがあります。 そのスイッチを0に設定すると、すべてのエージェントが表示され、1に設定すると、一部のみが表示されます。
Street Crowd Example Example for Crowd Solver dynamics node
2つのエージェントグループによるストリートのセットアップを説明した群衆サンプル。
このセットアップは、2つのエージェントグループを作成します。 黄色のエージェントがゾンビで、ストリートのパスに沿います。青色のエージェントがぶらついている歩行者で、ゾンビが近づくと走ります。
エージェントの状態を変更するトリガーは、crowd_sim DOPNETでセットアップします。 ゾンビのグループは、信号との距離と信号の色を使用し、信号が赤になると停止状態に変わります。 生存者のグループは、ゾンビが近づくと走行状態に変わります。
Note
アニメーションクリップは、シーンを再生する前にベイクするのに必要です。これは、サンプルをCrowdsシェルフから作成した場合に自動的に行なわれます。 そうでない場合は、シーンファイルを希望の場所に保存し、'/obj/bake_cycles' ROP NetworkのRenderをクリックして、ファイルを書き出します。 それらのファイルのデフォルトのパスは、${HIP}/agentsです。
ClipTransitionGraph Example for Crowd Transition dynamics node
このサンプルでは、クリップトランジショングラフを使用することで、ステートのトランジションに対してトランジションクリップを用意する方法を説明しています。
CrowdTriggers Example for Crowd Trigger dynamics node
このサンプルでは、Crowd Trigger DOP用のビルトインのトリガータイプの使い方を説明しています。
CrowdPov Example for Agent Cam object node
このサンプルでは、agent camを群衆エージェントに割り当てて、群衆シミュレーションで、ある人からの視点を取得する方法を説明しています。
AgentRelationshipBasic Example for Agent Relationship geometry node
このサンプルでは、単純な親子エージェントのセットアップ方法について説明しています。
SimpleCrowdCloth Example for Agent Vellum Unpack geometry node
このサンプルでは、Vellum Solverを使って、群衆キャラクタの布をシミュレーションする単純なワークフローを説明しています。
Fuzzy Logic Obstacle Avoidance Example Example for Fuzzy Defuzz VOP node
このサンプルでは、Fuzzy Logicコントローラを使用して実装されたエージェントの障害物回避とパスへの追従を説明しています。
Fuzzy Logic State Transition Example Example for Fuzzy Defuzz VOP node
このサンプルでは、Fuzzyネットワークセットアップに対してState Transitionがトリガーされる箇所への群衆セットアップを説明しています。
See also |