Terrainを追加する

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を押します。


Copyright © 2017, Toolchefs LTD.