Atoms can place agents on different terrains using height field and gravity field.
Basic terrain
- Create and agent group
- Add a grid layout module and set the size attribute to (5, 0, 5 )
- Add a state machine module and set the state attribute to 1
- Create a simple ground with some hills
- Open the height field manager formt he Atoms menu Atoms → Heigh field manager
- Select the terrain mesh
- Press the Add button, in the name field of the dialog set a name, for example put "ground"
- Press the select button to automatically fill the mesh field with the ground path
- Press Ok, close the height field manager and rewind your scene
- Select the agent group
- In the state machine module options, set ground has height field
- Rewind your scene and press play. Atoms will place the agents on the mesh
Atomsは、組み込まれたHeightフィールドとGravityフィールドを使用して、さまざまな種類の地形にエージェントを配置できます。
基本のTerrain
- エージェントグループを作成します。
- Grid Layoutモジュールを追加して、Sizeアトリビュートを(5、0、5)に設定します。
- State Machineモジュールを追加して、Stateアトリビュートを1に設定します。
- 凹凸のある地形を作成しましょう。
- AtomsメニューのAtoms Height Field ManagerからHeight Field managerを開きます。
- Terrain Meshを選択します。
- Addボタンを押して、Dialog Name Fieldに名前(すなわち "Ground")を入力してください。
- Selectボタンを押すと、Meshフィールドが自動的にグラウンドパスで埋められます。
- OKを押して、Height Field Managerを閉じ、シーンを巻き戻します。
- エージェントグループを選択します。
- State Machineモジュールのオプションで、Heightフィールドとして "Ground"を設定します。
- シーンを巻き戻して、Playを押します。Atomsは、エージェントをメッシュに配置します。
注意 |
---|
Heightフィールドは、変更されるたびにReloadする必要があります。Height Field Managerを開き、ユーザーのHeightフィールドの項目を右クリックして、Reloadを選択します。 |
Deformed terrain
- Create and agent group
- Add a grid layout module and set the size attribute to (5, 0, 5 )
- Add a state machine module and set the state attribute to 1
- Create a plane and increase the subdivision to 50 50 and scale to 3000,3000,3000
- Add a wave deformer, set the amplitude to 0.1 and put some keyframe to the offset to animate the deformation
- Open the height field manager formt he Atoms menu Atoms → Heigh field manager
- Select the terrain mesh
- Press the Add button, in the name field of the dialog set a name, for example put "ground"
- Press the select button to automatically fill the mesh field with the ground path
- Check the animated checkbox
- Press Ok, close the height field manager and rewind your scene
- Select the agent group
- In the state machine module options, set ground has height field
- Rewind your scene and press play. Atoms will place the agents on the deformed mesh
注意 |
---|
When the animated option is on atoms rebuild the height field at every frame and for dense mesh this could be expensive. If you ground has only the transform animated please have a look the the next section |
Transformed terrain
If your ground has the transform animated without any deformer you can use the parent constriant module to speed up the ground computation without using an animated height field.
- Create and agent group
- Add a grid layout module and set the size attribute to (5, 0, 5 )
- Add a state machine module and set the state attribute to 1
- Create a plane and increase the subdivision to 50 50 and scale to 3000,3000,3000
- Put the plane inside a group and animate the transform of the group adding some keyframes
- Open the height field manager formt he Atoms menu Atoms → Heigh field manager
- Select the terrain mesh
- Press the Add button, in the name field of the dialog set a name, for example put "ground"
- Press the select button to automatically fill the mesh field with the ground path
- Check the animated checkbox
- Press Ok, close the height field manager and rewind your scene
- Select the agent group
- In the state machine module options, set ground has height field
- Add a parent constraint behaviour module and rewind the scene
- Connect group1.worldMatrix to tcAgentGroupNodeShape1.atoms_parentConstraint_parentMatrix
- Rewind the scene and press play
変形したTerrain
- エージェントグループを作成します。
- Grid Layoutモジュールを追加し、Sizeアトリビュートを(5、0、5)に設定します
- State Machineモジュールを追加して、Stateアトリビュートを1に設定します。
- 平面を作成し、Subdivisionを50、50に増やし、3000,3000,3000にスケールを調整します。
- Wave Deformerを追加し、Amplitudeを0.1に設定して、Offsetアトリビュートにキーフレームを配置して変形をアニメートします。
- AtomsメニューのAtoms Heigh Field ManagerからHeight Field Managerを開きます。
- Terrain Meshを選択します。
- Addボタンを押して、Dialog Name Fieldに名前(例: "Ground")を設定します。
- Selectボタンを押すと、Meshフィールドが自動的にグラウンドパスで埋められます。
- アニメ化されたチェックボックスにチェックを入れてください。
- OKを押して、Height Field Managerを閉じ、シーンを巻き戻します。
- エージェントグループを選択します。
- State Machineモジュールのオプションで、Heightフィールドとして "Ground"を設定します。
- シーンを巻き戻して、Playを押します。Atomsは、変形したメッシュ上にエージェントを配置します。
注意 |
---|
Atomsは、アニメーション化されたHeightフィールドの内部構造をフレームごとに再構築します。綿密なメッシュの場合、これによりパフォーマンスが低下する可能性があります。ユーザーのグラウンドが空間を動くスタティックメッシュの場合は、次のセクションをご覧ください。 |
アニメーションによって変形しないTerrain
グラウンドの変換がアニメートされている場合(ただし、メッシュ自体はスタティックです)、アニメートされたHeightフィールドを使用せずに、Parent Constraintモジュールを使用してグラウンドの計算を高速化することができます。
- エージェントグループを作成します。
- Grid Layoutモジュールを追加し、Sizeアトリビュートを(5、0、5)に設定します。
- State Machineモジュールを追加して、Stateアトリビュートを1に設定します。
- 平面を作成し、Subdivisionを50、50に増やし、3000,3000,3000にスケールを調整します。
- 平面をグループ内に配置し、キーフレームを追加して、グループの変形をアニメートします。
- AtomsメニューAtoms Height Field Managerから、Height Field Managerを開きます。
- Terrain Meshを選択します。
- Addボタンを押して、Dialog Name Fieldに名前(例: "Ground")を設定します。
- Selectボタンを押すと、Meshフィールドが自動的にグラウンドパスで埋められます。
- アニメ化されたチェックボックスをチェックを入れてください。
- OKを押して、Height Field Managerを閉じ、シーンを巻き戻します。
- エージェントグループを選択します。
State Machineモジュールのオプションから、Heightフィールドとして "Ground"を設定します。 - Parent Constraint Behaviourモジュールを追加してシーンを巻き戻します。
- group1.worldMatrixをtcAgentGroupNodeShape1.atoms_pa entConstraint_parentMatrixに接続します。
- シーンを巻き戻して、Playを押します。
Gravityフィールドと3次元の地形
Gravityフィールドは、標準のHeightフィールドですが、エージェントのGravityとUpvectorメタデータを変更するために使用されます。Gravityフィールドを使用して、多数の効果を作成することができます。こちらが2つの例です。
- エージェントグループを作成します。
- Grid Layoutモジュールを追加し、Sizeアトリビュートを(5、0、5)に設定します。
- State Machineモジュールを追加して、Stateアトリビュートを1に設定します。
- スフィアを作成し、それを(1000,1000,1000)にスケールを調整して(0、-1000、0)に移動します。
- このスフィアを使用して、Heightフィールドを作成し、その名前を "gravityMesh"に設定します。
- スフィアを複製し、新しいスフィアにいくつかのバンプをモデル化します。
- このスフィアを使用して、新しいHeightフィールドを作成し、名前を "groundMesh"に設定します。
- エージェントグループを選択します。
- State Machineモジュールのオプションで、 "groundMesh"をHeightフィールドとして、 "gravityMesh"をGravityフィールドとして設定します。
- シーンを巻き戻して、Playを押します。
- エージェントグループを作成します。
- Grid Layoutモジュールを追加し、Sizeアトリビュートを(5、0、5)に設定します。
- State Machineモジュールを追加して、Stateアトリビュートを1に設定します。
- シンプルな平面を作成し、それを(1000,1000,1000)に縮尺します。
- この平面を使用してHeightフィールドを作成し、名前を "groundMesh"に設定します。
- 平面を複製して(30、0、0)に回転させます。
- この平面を使用して、新しいHeightフィールドを作成し、名前を "gravityMesh"に設定します。
- エージェントグループを選択します。
- State Machineモジュールのオプションで、 "groundMesh"をHeightフィールドとして、 "gravityMesh"をGravityフィールドとして設定します。
- シーンを巻き戻して、Playを押します。