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を選択します。 |
変形した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を押します。