On this page |
このノードは、キャラクタの群衆向けのエージェントプリミティブを作成するために使います。 エージェントの定義は、Agent出力ノードから以前にベイクされたファイルから取得するか、 シーン内のキャラクタリグから直接取得することができます。
エージェントプリミティブには、以下の参照が含まれています:
-
Rig – エージェントのトランスフォーム階層。
-
Shape Library – エージェント用のジオメトリ。
-
Layers – Shape Libraryからリグにおけるトランスフォームへのジオメトリの割り当て。
-
Clips – エージェントが使用するアニメーション。
Tip
群衆内の境界ボックスが原因でレンダリングがクリップされてしまう場合、 Generate Collision Layer パラメータを有効にして、Collisionレイヤーの作成を試みてください。
パラメータ
Group
エージェントの位置として使用する入力ジオメトリのポイント。
Agent Name
エージェントの基本名。
作成した各エージェントに対して、その名前に_数
の接尾辞がついたname
Primitiveアトリビュートが設定されます。
Allow Attributes to Override が有効な時、これが、入力ポイント上のagentname
文字列アトリビュートで置換されます。
このパラメータの値は、$AGENT
ローカル変数によって参照することができます。
Current Layer
使用するレイヤの名前。
Allow Attributes to Override が有効な時、これが、入力ポイント上のcurrentlayer
文字列アトリビュートで置換されます。
デフォルトでは、このパラメータは空っぽです。これは Layer Name パラメータの値を使用することを意味します。
ディスクからエージェントを読み込む時、default
という名前のレイヤが存在すれば、そのレイヤが使用されます。
存在しなければ、エージェント定義内で利用可能な1番目のレイヤが使用されます。
Collision Layer
使用するコリジョンレイヤの名前。
Allow Attributes to Override が有効な時、入力ポイント上のcollisionlayer
文字列アトリビュートによって、このコリジョンレイヤが置換されます。
デフォルトでは、このパラメータは空っぽです。これは Collision Layer Name パラメータの値を使用することを意味します。
ディスクからエージェントを読み込む時、collision
という名前のレイヤが存在すれば、そのレイヤが使用されます。
存在しなければ、エージェント定義内で利用可能な1番目のレイヤが使用されます。
Current Clip
エージェントが走るアニメーションクリップの名前。
Allow Attributes to Override が有効な時、これが、入力ポイント上のcurrentclip
文字列アトリビュートで置換されます。
デフォルトでは、このパラメータは空っぽです。これは、エージェント定義内で最初に利用可能なクリップを使用することを意味します。
Clip Offset
再生を開始する現行クリップまでの時間(秒)。
Allow Attributes to Override が有効で、且つ入力ポイントにclipoffset
浮動小数点アトリビュートが含まれている時、
各エージェントに対して、これらの値がこのパラメータ値に追加されます。
Apply Clip Locomotion
有効にすると、ロコモーションクリップを簡単に事前確認できるように、エージェントリグから__locomotion__
トランスフォームを適用します。
Allow Attributes to Override
Current Layer 、 Current Clip 、 Clip Offset の値が、同等のPointアトリビュートの値がある場合に、それらと置換されます。
Keep Primitives
通常では、エージェントの作成先となるポイント用にプリミティブが削除されます。 これを有効にすると、それらのプリミティブが削除されません。
Input
エージェントの作成元のソースを指定します。これらの各入力ソースのパラメータの詳細は、以下を参照してください。
Character Rig
シーン内の実際のキャラクタサブネットワーク/アセットから直接情報を取得します。 シーンから情報を取得することで、テストをするのには便利ですが、ベイクしたキャラクタデータを使用するよりも遅いです。 エージェントクリップをベイクする方法を参照してください。
Disk
(Agent ROPを使用して既にベイクしている)ディスクからエージェントのリグ/クリップを読み込みます。
FBX
キャラクタを含んだFBXファイルから情報を取得します。
Reload
エージェント定義を再読み込みします。
Input: Scene
Character Rig
キャラクタリグを含んだオブジェクトサブネットワークへのパス。
Locomotion Node
キャラクタのロコモーション(移動アニメーション)を制御する Character Rig 内部のオブジェクト(キャラクタを空間内で前進させている移動チャンネルを持つキャラクタリグ内のノード)。 Convert to In-Place Animation が有効な時、キャラクタをインプレース(その場歩き)アニメーションさせるために、Houdiniは、これを使ってキャラクタアニメーションから移動量を減算します。 (Crowd Solverノードは、エージェントアニメーションを移動しているパーティクルに適用するので、そのエージェントアニメーションがその場歩きであると仮定します。)
ロコモーションアニメーションは、__locomotion__
という名前のリグの別のトランスフォームで配置されます。
このパラメータが空っぽの場合、 __locomotion__
は Character Rig を使用します。
Locomotion Orient
このパラメータと Locomotion Node を指定した場合、生成される__locomotion__
トランスフォームも、 Locomotion Node から Locomotion Orient ノードへのベクトルを使った回転情報を含むようになります。
Locomotion Node が空っぽの場合は、このパラメータは何の効果もありません。
Project Positions on Dominant Axis
Locomotion Node のアニメーションを作成する時、XZ平面内のモーションのDominant Axis(主軸)に沿って位置を投影します。 Crowd Solverでクリップをインプレース(その場歩き)クリップとして使用する場合は、このオプションを有効にすることで、腰のモーションを前後左右に揺らすことができます。
Use Pivot from First Frame
Locomotion Node のアニメーションを作成した時に、原点を基準にその位置を計算します。 このオプションが無効な時(デフォルト)、その位置は、最初のフレームの時の位置が基準になります。
Convert to Polygon Soups
シェイプライブラリを作成する時にポリゴンプリミティブをPolygon Soupプリミティブに変換します。 これによって、特にMantraによるレンダリングでメモリ使用量を削減することができます。
Layer Name
オブジェクトのディスプレイフラグを使用して作成した、エージェント用のデフォルトレイヤー。 各エージェントには、最低でも1つのレイヤーがなければなりません。
Bounds Scale
デフォルトレイヤー内の各シェイプの境界ボックスのスケールを指定します。 エージェントの境界ボックスの計算方法に関する詳細は、Agent Primitiveのヘルプページを参照してください。
Generate Collision Layer
キャプチャ/変形のウェイトを含んだジオメトリからCollision Layerを生成します。 これは、キャプチャ領域プリミティブを生成し、それに該当するリグのボーンにそのプリミティブを割り当てます。
Collision Layer Name
Generate Collision Layer が有効な時のCollision Layerの名前。
Clip Name
ベイクしたクリップ(エージェントアニメーション)の名前。 アニメーションは現行シーンから取得されます。
Additional Channels
指定したCHOPノードからチャンネルをエージェントのクリップに追加します。
Frame Range
シーンのグローバルフレーム幅か Start/End/Inc パラメータを使うかどうか。
Start/End/Inc
Frame Range が"Specific"の時、ベイクするための開始フレーム、終了フレーム、増加フレーム。
全ての値には浮動小数点を指定することができます(例、フレーム1.5で開始)。
Shift Clip to Frame 1
指定したフレーム範囲の出力クリップがフレーム1から開始するようにずらします。
Convert to In-Place Animation
( Use Pivot from First Frame パラメータに応じて、原点または最初のフレームの位置を基準に) Locomotionノード の位置を減算することで、 動きのあるキャラクタアニメーションをインプレース(その場歩き)クリップに変換します。
Minimal Nodes
ディスプレイフラグが有効なオブジェクトのみをベイクします。これをオフにすると、キャラクタリグ内の すべて のノードがアニメーションクリップにベイクされます。
Keep Transforms for Deforming Shapes
Minimal Nodes が有効な時に、変形ジオメトリを含んだノードをエージェントのリグやクリップに入れるかどうかを指定します。
Input: Disk
Cache Directory
エージェント定義ファイルの親ディレクトリ。
このパラメータは、利便性のために提供されていて、その値は、他のファイル名パラメータに$CACHEDIR
ローカル変数を使用することで参照することができます。
Rig
エージェントのリグファイルのパスを指定します。
Agent Layers
読み込むエージェントレイヤーファイルのファイル名パターン。
ここには、特定のエージェント毎にだけマッチしたすべてのファイルが読み込まれるように、${LAYER}
ローカル変数を*
プレースホルダーとして使用します。
Shape Library
エージェントのシェイプライブラリのパスを指定します。
Clips
読み込むアニメーションクリップのファイル名パターン。
ここには、特定のエージェント毎にだけマッチしたすべてのファイルが読み込まれるように、${CLIP}
ローカル変数を*
プレースホルダーとして使用します。
クリップの実際の名前は、${CLIP}
で合致した文字列、${CLIP}
を使用しなかった場合は拡張子なしのフルファイル名から推測されます。
Transform Groups
読み込むトランスフォームグループファイルのファイル名パターン。
ここには、特定のエージェント毎にだけマッチしたすべてのファイルが読み込まれるように、${TRANSFORM_GROUP}
ローカル変数を*
プレースホルダーとして使用します。
Keep External References
エージェントプリミティブがディスク上のエージェント定義ファイルを参照すべきかどうかを指定します。
有効の場合、エージェントをジオメトリファイルに保存すると、エージェント定義は(自己完結型でも、より大きいジオメトリファイルを
生成する).bgeo
あるいは.geo
ファイルに埋め込むのではなく、エージェント定義ファイルへの参照のみを保存します。
Input: FBX
FBX File
エージェントを生成するFBXファイルのファイル名。
Convert Units
FBXファイルをインポートする時にHoudini単位に変換するかどうかを指定します。
Minimal Nodes
ディスプレイフラグが有効なオブジェクトのみをベイクします。これをオフにすると、キャラクタリグ内の すべて のノードがアニメーションクリップにベイクされます。
Load as Polygon Soups
FBXファイルからジオメトリを読み込む時にポリゴンプリミティブの代わりにPolygon Soupプリミティブを作成します。 これによって、特にMantraによるレンダリングでメモリ使用量を削減することができます。
Layer Name
オブジェクトのディスプレイフラグを使用して作成した、エージェント用のデフォルトレイヤー。 各エージェントには、最低でも1つのレイヤーがなければなりません。
Generate Collision Layer
キャプチャ/変形のウェイトを含んだジオメトリからCollision Layerを生成します。 これは、キャプチャ領域プリミティブを生成し、それに該当するリグのボーンにそのプリミティブを割り当てます。
Collision Layer Name
Generate Collision Layer が有効な時のCollision Layerの名前。
Override Sample Rate
FBXファイルに保存されているサンプルレートの代わりに Sample Rate パラメータの値を使用するかどうかを指定します。 これは、オリジナルのFBXファイルをエクスポートしたアプリケーションが正しくサンプルレートを設定していなかった時に役立ちます。
Sample Rate
Override Sample Rate が有効な時にクリップに使用されるサンプルレート。
Convert to In-Place Animation
( Use Pivot from First Frame パラメータに応じて、原点または最初のフレームの位置を基準に) Locomotionノード の位置を減算することで、 動きのあるキャラクタアニメーションをインプレース(その場歩き)クリップに変換します。
Clip Name
アニメーションクリップの名前を指定します。クリップは、FBXファイル内のテイク毎に作成されます。
${FBX_TAKE_NAME}
と${FBX_TAKE_INDEX}
のローカル変数を使用することで、FBXファイルのテイクの名前とインデックスに基づいたクリップ名を生成することができます。
Locomotion Node
キャラクタのロコモーション(移動アニメーション)を制御する Object Subnet 内部のオブジェクト(キャラクタを空間内で前進させている移動チャンネルを持つキャラクタリグ内のノード)。 Convert to In-Place Animation が有効な時、キャラクタをインプレース(その場歩き)アニメーションさせるために、Houdiniは、これを使ってキャラクタアニメーションから移動量を減算します。 (Crowd Solverノードは、エージェントアニメーションを移動しているパーティクルに適用するので、そのエージェントアニメーションがその場歩きであると仮定します。)
ロコモーションアニメーションは、__locomotion__
という名前のリグの別のトランスフォームで配置されます。
このパラメータが空っぽの場合、 __locomotion__
はObject Subnetを使用します。
Locomotion Orient
このパラメータと Locomotion Node を指定した場合、生成される__locomotion__
トランスフォームも、 Locomotion Node から Locomotion Orient ノードへのベクトルを使った回転情報を含むようになります。
Locomotion Node が空っぽの場合は、このパラメータは何の効果もありません。
入力
Points to spawn agents
指定した場合、入力ポイントを使ってエージェントを大量発生させます。
これらのポイントに特定のアトリビュートを含めて、エージェントのプロパティを制御することができます。
$AGENT
ローカル変数を使用すれば、複数のエージェント定義を使用することができます。
ローカル変数
AGENT
エージェントの名前。
Allow Attributes to Override が有効な時は、これは、その入力ポイント上のagentname
文字列アトリビュートの値、あるいは
Agent Name パラメータの値のどちらかです。
CACHEDIR
利便性のために提供されているローカル変数で、 Cache Directory パラメータの値を容易に参照することができます。
LAYER
読み込むレイヤーファイルを指定するために、 Agent Layers パラメータでワイルドカードとして使用します。
CLIP
読み込むクリップファイルを指定するために、 Clips パラメータでワイルドカードとして使用します。
TRANSFORM_GROUP
読み込むトランスフォームグループファイルを指定するために、 Transform Groups パラメータでワイルドカードとして使用します。
FBX_TAKE_NAME
Clip Name パラメータを評価し、 Input が FBX の時、現行テイクの名前をFBXファイルに格納します。
FBX_TAKE_INDEX
Clip Name パラメータを評価し、 Input が FBX の時、現行テイクのインデックスをFBXファイルに格納します。
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を群衆エージェントに割り当てて、群衆シミュレーションで、ある人からの視点を取得する方法を説明しています。
LayerVariations Example for Agent Layer geometry node
このサンプルは、いろいろなジオメトリのバリエーションを持ついくつかのレイヤーを作成して、 それらのレイヤーをエージェントにランダムに割り当てる方法を説明しています。
AgentRelationshipBasic Example for Agent Relationship geometry node
このサンプルでは、単純な親子エージェントのセットアップ方法について説明しています。
SimpleCrowdCloth Example for Agent Vellum Unpack geometry node
このサンプルでは、Vellum Solverを使って、群衆キャラクタの布をシミュレーションする単純なワークフローを説明しています。
PopulateRandomAgents Example for Crowd Source geometry node
このサンプルは、いくつかの異なったタイプのエージェントを群衆に集める方法を説明しています。
Fuzzy Logic Obstacle Avoidance Example Example for Fuzzy Defuzz VOP node
このサンプルでは、Fuzzy Logicコントローラを使用して実装されたエージェントの障害物回避とパスへの追従を説明しています。
See also |