比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

In this section we add some behaviours using some behaviours module to some agents group.こちらのセクションでは、いくつかのBehaviourモジュールを確認していきます。


Animation

modules

These behaviour modules handle and interact with the animation clip

Clip reader behaviour module

This module attach a clip reader node to each agent, so every agent will play in loop a specific clip

  • Create an agent group
  • Add a grid layout module and set the size attribute to (3,0,3)
  • Add a clip reader module
  • Set a compatible clip in the clipName attribute of the clip reader module
  • If you want set a different clip for some agents press the Image Removed icon next to the clipName field. Select the agent you want from the list inside the agents override dialog or use the "Agent selection tool" (you can activate the seleciton tool using the button in the settings panel of the agent group aetemplate) and set a clip name there.
  • Rewind your scene and the press play

Image Removed

State machine behaviour module
This module creates all the

モジュール

これらのBehaviourモジュールは、アニメーションクリップをインタラクトに処理します。

Clip Reader Behaviourモジュール

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、Sizeアトリビュートを(3,0,3)に設定します。
  • Clip Readerモジュールを追加します。
  • Clip ReaderモジュールのclipNameアトリビュートにCompatible Clipを設定してください。
  • 一部のエージェントに対して、別のクリップを設定したい場合は、ClipNameフィールドの横にあるImage Addedアイコンを押します。agents override dialog内のリストから必要なエージェントを選択して、クリップ名を設定します。Agent Layout Toolを使用してエージェントを選択することもできます。
  • ユーザーのシーンとプレスプレイを巻き戻します。


Image Added



State Machine Behaviour モジュール

このモジュールは、各エージェントのDG Network内にステートマシン(clip reader, merge, state machine nodes inside the DG network of each agent, then the "state" metadata is used to play the right animation clip based on the data from the state machine.
  • Create an agent group
  • Add a grid layout module and set the size attribute to (3,0,3)
  • Add a state machine module
  • Set a valid id number in the state attribute of the state machine module (if you are using the atomsRobot agen type, use 1 for the walk state)
  • Rewind your scene and the press play
  • The state attribute can be animated, so put a keyframe at frame 20 with value 1 and one at frame 21 with value 2
  • Rewind your scene and the press play
  • You can override the state of some agent using agents override dialog

Image Removed

Sync behaviour module

The sync module is used to syncronize agents and create a parent/child or constraint relation between agents of different agent group, please look at the sync module section for more information.

Directional modules

To drive your agents you can use different behaviour modules, these modules change the "direction" metadata of the agents.

Follow curve behaviour module

Let's start with the follow curve module.

  • Create a agent group
  •  Add a grid layout module
  •  Add state machine module. Set the "state" attribute of the stateMachine module to 1
  • Create a curve in your scene
  • Add a follow curve module
  • in the curve attribute of the follow curve module drag and drop form the outliner the curve or enter the curve name inside the attribute field
  • Rewind your scene and the press play. The agent will follow the curve you created

Image Removed

Curve field behaviour module

The curve field generate a vector field using multiple effects so the agent are affeted by the direciton of multiple curves

  • Create a agent group
  •  Add a grid layout module, Set the size to (3,0,3)
  •  Add state machine module. Set the "state" attribute of the stateMachine module to 1
  • Create some curves in your scene
  • Add a curve field module
  • in the curves attribute of the curve field module, expand the panel and press the add button to add input curves and then drag and drop from the outliner the curves or enter the names inside each field
  • Set max distance attribute to 500
  • Rewind your scene and the press play. The agents will follow the curves you created

Image Removed

Mesh avoidance behaviour module

With this module you can avoid the intersection between agents and geometries in your scene

  • Create a agent group
  • Add a grid layout module
  • Add state machine module. Set the "state" attribute of the stateMachine module to 1
  • Create a curve in your scene
  • Add a follow curve module
  • In the curve attribute of the follow curve module drag and drop form the outliner the curve or enter the curve name inside the attribute field
  • Create a cube or some geo in your scene. If you are going to create multiple geos, please remenber to combine all together
  • Add a mesh avoidance module
  • In the mesh attribute of the mesh avoidance module drag and drop form the outliner the geo or enter his name inside the attribute field
  • Rewind your scene and the press play. The agent will follow the curve you created avoiding the geos

Please remember that the module are evaluated from top to down. In this case the mesh avoidance shoudl be at the bottom because it shoudl override the direction that comes from the follow curve module. If you put the mesh avoidance module before the follow curve you will have a wrong behaviour because the follow curve will override the directions formt he mseh avoidance module

Image Removed

There are others directional modules, please have a look to the behaviour modules reference section

Area trigger behaviour module

With this module you can change a metadata value when the agents enter inside a mesh area

  • Create a agent group
  • Add a grid layout module and set the size to (5,0,5)
  • Add state machine module. Set the "state" attribute of the stateMachine module to 1
  • Create a curve in your scene
  • Add a follow curve module
  • In the curve attribute of the follow curve module drag and drop form the outliner the curve or enter the curve name inside the attribute field
  • Create a plane, scale it and put it in front of the agents
  • Add a area trigger module
  • Connect the plane to the mesh attribute of the area trigger, you can drag&drop from the outliner or write the plane name in the mesh field
  • Connect the plane translate,scale,rotate to the agentGroupShapeNode1.atoms_areaTrigger_meshTranslation/Rotation/Scale
  • Set the metadata attribute in the area trigger module to state
  • Set the intValue attribute in the area trigger module to 2 in this way the agents will change the state to 2
  • Set the keepValue on so the agents will keep the new state value
  • Add another area trigger module and create and attach a new plane
  • Inside the new area trigger module, set the metadata to frameRate and the doubleValue to 0.5, the keepValue to off
  • Set the Blend In Frame and Blend Out Frame attribute of the new trigger module to 10
  • To add more variation to your simulation set the Reandom In and Random Out to 5
  • Rewind your scene and the press play. Now when the agents enter inside the first plane they'll start to run because the state metadata is changed to 2, then when they enters in the second plane they slow down but only inside the plane.

Image Removed

Network editor behaviour module

With this module you can edit the dependency graph of the agents, let's create a follow target behaviour with this module

  • Create a agent group
  • Add a grid layout module
  • Add state machine module. Set the "state" attribute of the stateMachine module to 1
  • Create a locator and then at frame 0 move to (0,0,400) and add a keyframe, then at frame 50 move to (400,0,400) and add a keyframe, at frame 100 move to (400,0,0) and add a keyframe
  • Select the agent group and add a network editor module
  • Press the "Open Network Editor" button sinde the module options
  • Now press tab and enter "ExposeVector3", select it form the list and press enter. This node expose an attribute to maya.
  • Double click on the new node created to expand it and on the inspector widget on the right change the name of the node to targetPosition
  • Now create a "getAgentVectorMetadata" node and connect the globalTime.out port to the time input of the new node, in the inspector set the name attribute to "position". This node read the position metadata fo the agent
  • Create a "SubtractVector" node and on the first input conenct the output of the targetPosition node and on the second input connect the output of the getAgentVectorMetadata
  • Create a NormalizeVector node and connect the output of the SubtractVector node
  • Create a setAgentVectorMetadata, set the name attribute to "direction" and then connect the output fo the normalizeVector node to the in port.
  • Connect the out port of the setAgentVectorMetadata node the the first input of the preBuildPoseNode.
  • Form the File menu press on Register to save our network, or press ctrl+s
  • Rewind the scene and then connect the locator.translate to tcAgentGroupNodeShape1.atoms_networkEditor_targetPosition
  • Rewind the scene and press play

For more information about the network editor module please look at this section.

Image Removed

Pose modules

The pose modules affect the joints transformation

Agent scale behaviour module

This module can change the scale of each agent

  • Create a agent group
  • Add a grid layout module and set the size attribute to (5,0,5)
  • Add state machine module
  • Add an agent scale module and set the scale attribute of the module to 2
  • Rewind the scene
  • To add more variation open the override dialog Image Removedof the scale attribute, select some agents form the list, then press the "Value:" button and enter a range of 0.5-2.5, then press randomize.
  • Rewind the scene

Image Removed

Joint transfrorm behaviour module

This module override or add an offset transformation to a joint

  • Create a agent group
  • Add a grid layout module and set the size attribute to (5,0,5)
  • Add state machine module
  • Add a joint transform module
  • Set the jointName attribute to "Head"
  • Set rotate to (0,90,0)
  • Set offset to on
  • Rewind the scene
  • You can also change the weight or add some keyframe to it

Image Removed

Parent constraint behaviour module

This module create a constraint between the agents and an object in your scene

  • Create a agent group
  • Add a grid layout module and set the size attribute to (5,0,5)
  • Add state machine module
  • Add a parent constraint module
  • Create a locator add a keyframe at frame 0, then at frame 50 move to (500,0,500) add some rotation and scale and add another keyframe
  • Connect locator1.worldMatrix to tcAgentGroupNodeShape1.atoms_parentConstraint_parentMatrix
  • Rewind the scene and press play

Image Removed

Joint aim behaviour module

This module change the orientation of one joint in order to aim a point. It can also propagate the transofrmation to hi parents

  • Create a agent group
  • Add a grid layout module
  • Add state machine module
  • Create a locator and move to (400,0,400)
  • Add a joint aim module
  • Set the joint to "Head"
  • Set the aim axis to Z
  • Set hierarchy propagation to 5
  • Rewind the scene and press play

Image Removed

Joint constraint behaviour module
Tilt behaviour module)が必要とするすべてのノードを作成し、state machineからのデータに基づいて「State」メタデータを使用して適切なアニメーションクリップを再生します。
  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、Sizeアトリビュートを(3,0,3)に設定します。
  • State Machineモジュールを追加します。
  • State MachineモジュールのStateアトリビュートに有効なID番号を設定します(AtomsRobotエージェントタイプを使用している場合は、ウォークステートに1を使用します)。
  • ユーザーのシーンとプレスプレイを巻き戻します。
  • Stateアトリビュートは、アニメートすることができるので、値1のフレーム20と値2のフレーム21にキーフレームを配置します。Mayaでは、フィールドを右クリックして「Set key」を選択することで、これを実行できます。
  • ユーザーのシーンとプレスプレイを巻き戻します。
  • agents override dialogを使用して、一部のエージェントのステートを上書きすることができます。

Image Added


Sync Behaviour モジュール

Syncモジュールは、エージェントを同期させ、異なるエージェントグループのエージェント間に親子関係またはコンストレイント関係を作成するために使用されます。詳細については、Syncモジュールのセクションを参照してください。



Directional モジュール

ユーザーのエージェントを動作するために、ユーザーは異なるBehaviourモジュールを使用することができます、これらのモジュールは、エージェントの「Direction」メタデータを変更します。

Follow Curve Behaviour モジュール

Follow Curveモジュールから始めましょう。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加します。
  • State Machineモジュールを追加します。StateMachineモジュールの "State"アトリビュートを1に設定します。
  • シーンにカーブを描きます。
  • Follow Curveモジュールを追加します。
  • Follow CurveモジュールのCurveアトリビュートで、Outliner(マウスの中央ボタン)からカーブをドラッグアンドドロップするか、アトリビュートフィールド内にカーブ名を入力します。
  • ユーザーのシーンとプレスプレイを巻き戻します。エージェントは、ユーザーのCurveに追従します。

Image Added


Curve Field Behaviour モジュール

Curveフィールドは、複数のカーブを使用してベクトルフィールドを生成するため、エージェントは複数のカーブの方向に影響されます。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、サイズを(3,0,3)に設定します。
  • State Machineモジュールを追加します。 StateMachineモジュールの "State"アトリビュートを1に設定します。
  • シーンにカーブをいくつか作成します。
  • Curve Fieldモジュールを追加します。
  • Curve FieldモジュールのCurveアトリビュートで、パネルを展開し、Addボタンを押します。入力のカーブを追加した後、OutlinerからCurveをドラッグアンドドロップするか(マウスの中央ボタン)、または各フィールド内に名前を入力します。
  • Max Distanceアトリビュートを500に設定します。シーンとプレスプレイを巻き戻します。エージェントは、作成したカーブに追従します。

Image Added



Mesh Avoidance Behaviour モジュール

このモジュールを使用すると、シーン内のエージェントとジオメトリの間の交差を回避することができます。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加します。
  • State Machineモジュールを追加します。 StateMachineモジュールの "State"アトリビュートを1に設定します。
  • シーンにカーブを作成します。
  • Follow Curveモジュールを追加します。
  • Maya:Follow CurveモジュールのCurveアトリビュートで、Outliner(マウスの中央ボタン)からカーブをドラッグアンドドロップするか、Attribute Field内にカーブ名を入力します。
    Dini:カーブをCurve Parameterに割り当てます。シーンにキューブまたはジオを作成します。ユーザーが複数のジオを作成しようとしている場合は、すべてを一緒に組み合わせることに注意して下さい。
  • Mesh Avoidanceモジュールを追加してください。
  • Mesh AvoidanceモジュールのMeshアトリビュートで、Outliner(マウスの中央ボタン)からジオをドラッグアンドドロップするか、Attribute Field内に該当する名前を入力します。
  • ユーザーのシーンとプレスプレイを巻き戻します。エージェントは、ジオを回避して作成したカーブに従います。

モジュールは、上から下に向かって評価されることに注意してください。
この場合、Mesh Avoidanceは、Follow Curveモジュールから受ける方向をオーバーライドする必要があるため、一番下にする必要があります。
Follow Curveの前にMesh Aviodanceモジュールを配置すると、Follow CurveがMesh Aviodanceモジュールからの方向をオーバーライドするため、誤った動作になります。

Image Added


他にもDirectionalモジュールがあります。BehaviourモジュールのReferenceセクションをご覧ください。



Area Trigger Behaviour モジュール

このモジュールを使用すると、エージェントがメッシュ領域内に入ったときに、メタデータ値を変更することができます。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、サイズを(5,0,5)に設定します。
  • State Machineモジュールを追加します。 StateMachineモジュールの "State"アトリビュートを1に設定します。
  • シーンにカーブを作成します。
  • Follow Curveモジュールを追加します。
  • Follow CurveモジュールのCurveアトリビュートで、Outliner(マウスの中央ボタン)からカーブをドラッグアンドドロップするか、Attribute Field内にカーブ名を入力します。
  • 平面を作成し、それを拡大縮小して、エージェントの前に配置します。
  • Area Triggerモジュールを追加します。
  • 平面をArea TriggerのMeshアトリビュートに接続します。Outliner(マウスの中央ボタン)からドラッグアンドドロップするか、Mesh Fieldに平面の名前を書き込むことができます。
  • 平面のTranslate、Scale、RotateをAgentGroupShapeNode1に接続します。atat_areTrigger_meshTranslation / Rotation / Scale
  • Area TriggerモジュールのMetadataアトリビュートをStateに設定します。
  • このようにして、エージェントのStateを2に変更するように、Area TriggerモジュールのintValueアトリビュートを2に設定します。
  • エージェントが新しいState値を保持するように、KeepValueをonに設定します。
  • 別のArea Triggerモジュールを追加して、新しい平面を作成し、アタッチします。
  • 新しいArea Triggerモジュール内で、メタデータをFrameRateに、DoubleValueを0.5に、KeepValueをoffに設定します。
  • 新しいTriggerモジュールのBlend In FrameおよびBlend Out Frameアトリビュートを10に設定します。
  • シミュレーションに対してバリエーションを追加するには、Random InとRandom Out Delayを5に設定します。
  • ユーザーのシーンとプレスプレイを巻き戻します。Stateメタデータが2に変更されたため、エージェントが最初の平面の内側に入ると実行が開始されます。次に、2番目の平面に入ると遅くなりますが、平面の内側のみとなります。

Image Added



Network Editor Behaviour モジュール

このモジュールからユーザーは、エージェントのDependency グラフを編集することができます、このモジュールでFollow Target Behaviourを作成しましょう。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加します。
  • State Machineモジュールを追加します。 StateMachineモジュールの "State"アトリビュートを1に設定します。
  • locator/ nullを作成した後、フレーム0で(0,0,400)に移動して、キーフレームを追加します。次にフレーム50で(400,0,400)に、移動してキーフレームを追加します。 フレーム100は(400,0,0)に移動してキーフレームを追加します。
  • エージェントグループを選択して、Network Editorモジュールを追加します。
  • Module Optionsの中にある "Open Network Editor"ボタンを押してください。
  • ネットワークエディタで、PreBuildPoseノードの近くまでズームインします。
  • Tabキーを押して「ExposeVector3」と入力し、リストから選択した後、Enterキーを押します。このノードは、Houdiniのmayaとパラメータにアトリビュートを公開します。
  • 新しいノードをダブルクリックして展開し、Inspector Widgetでノードの名前をTargetPositionに変更します。Exposeノードの名前は、アトリビュート/パラメータの名前になります。
  • では、 "getAgentVectorMetadata"ノードを作成し、GlobalTime.outポートを新しいノードのTime Inputに接続します。Inspectorで、 "name"ポートを "Position"に設定します。このノードは、エージェントのPositionメタデータを読み取ります。
  • 「SubtractVector」ノードを作成します。最初の入力で、TargetPosition Outputノードを接続し、2番目の入力でgetAgentVectorMetadata出力を接続します。
  • NormalizeVectorノードを作成し、SubtractVectorノードの出力を接続します。
  • setAgentVectorMetadataを作成し、nameアトリビュートを "Direction"に設定してから、normalizeVectorノードの出力をinポートに接続します。
  • setAgentVectorMetadataノードのoutポートをpreBuildPoseNodeの最初の入力に接続します。
  • 「File」メニューから「Register」をクリックして、ネットワークを保存するか、Ctrl + Sを押します。
  • シーンを巻き戻します。
  • locator.translateをtcAgentGroupNodeShape1.atoms_ne workEditor_targetPositionに接続します。
  • シーンを巻き戻して、Playを押します。

Network Editorモジュールの詳細については、こちらのセクションをご覧ください。


Image Added



Pose モジュール

Poseモジュールはジョイントの変換に影響します。



Agent Scale Behaviour モジュール

このモジュールは、各エージェントのスケールを変更できます。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、Sizeアトリビュートを(5,0,5)に設定します。
  • State Machineモジュールを追加します。
  • Agent Scaleモジュールを追加し、そのモジュールのScaleアトリビュートを2に設定します。
  • シーンを巻き戻します。
  • さらにバリエーションを追加するには、ScaleアトリビュートのOverride DialogImage Addedを開き、リストからエージェントを選択して「Value:」ボタンを押し、0.5〜2.5の範囲を入力した後、Randamizeを押します。
  • シーンを巻き戻します。


Image Added



Joint Transform Behaviour モジュール

このモジュールは、ジョイントのオフセットの変換をオーバーライドまたは追加します。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、Sizeアトリビュートを(5,0,5)に設定します。
  • State Machineモジュールを追加します。
  • Joint Transformモジュールを追加します。
  • JointNameアトリビュートを "Head"に設定します。
  • Rotateを(0,90,0)に設定します。
  • Offsetをオンに設定します。
  • シーンを巻き戻します。
  • ウェイトを変更したり、キーフレームを追加することもできます。


エージェントのジョイントを編集するには、Joint Transform Toolを使用することもできます。


Image Added



Parent Constraint Behaviour モジュール

このモジュールは、エージェントとシーン内のオブジェクトとの間にコンストレイントを作成します。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、Sizeアトリビュートを(5,0,5)に設定します。
  • State Machineモジュールを追加します。
  • Parent Constraintモジュールを追加します。
  • ロケータを作成するフレーム0に、キーフレームを追加して、次にフレーム50で(500,0,500)に移動します。回転、拡大縮小して別のキーフレームを追加します。
  • locator1.worldMatrixをtcAgentGroupNodeShape1.atoms_pa entConstraint_parentMatrixに接続します。
  • シーンを巻き戻して、Playを押します。


Image Added




Joint Aim Behaviour モジュール

このモジュールは、ポイントを向けるために1つのジョイントの方向を変更します。これは、ペアレントに変換を伝播することができます。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加します。
  • State Machineモジュールを追加します。
  • ロケーターを作成して(400,0,400)に移動します。
  • joint Aimモジュールを追加します。
  • ジョイントを「Head」に設定してください。
  • Aim axisをZに設定します。
  • Hierarchy Propagationを5に設定します。
  • シーンを巻き戻して、Playを押します。

Image Added


Joint Constraint Behaviour モジュール

このモジュールは、同一のエージェントの2つのジョイント間にペアレントコンストレイントを作成します。これは、コンストレイントプロップジョイントがアニメートされておらず、それをハンドジョイントにアタッチする場合に役立ちます。


Tilt Behaviour モジュール

このモジュールは、グループの勾配に基づいてエージェントにチルトの変換を追加します。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加します。
  • State Machineモジュールを追加し、 "State"アトリビュートを1に設定します。
  • いくつかの坂でGround Meshを作成します。
  • AtomsメニューのAtomsHeight Field ManagerからHeight Field Managerを開きます。
  • グラウンドを選択し、Height Field Managerで「Add」ボタンを押します。
  • Height Field名を "hf"に設定し、selectボタンを押してメッシュを設定し、「OK」を押します。
  • State Machineモジュールで、Height Fieldとして "hf"を設定し、シーンを巻き戻します。
  • Tiltモジュールを追加してください。
  • TiltモジュールのHeight Fieldアトリビュートを "hf"に設定します。
  • エージェントの上下の角度を5、グラウンドの上下の角度を10に設定します。
  • maxTiltAngleRateを0.5に設定します。
  • シーンを巻き戻して、Playを押します。
  • module名のRewindの近くにあるチェックボックスを使用して、Tiltモジュールを無効にし、Playを押して違いを確認してください。

Image Added




利用可能なモジュールの完全なリストについては、BehaviourモジュールのReferenceページをチェックしてください。