Terrainを追加する - Houdini

Atomsは、組み込まれたHeightフィールドとGravityフィールドを使用して、様々な種類の地形にエージェントを配置できます。


基本の地形
  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、Sizeアトリビュートを(5、0、5)に設定します。
  • State Machineモジュールを追加して、Stateアトリビュートを1に設定します。
  • 凹凸のある地形を作成しましょう。
  • AtomsメニューのAtoms Height Field ManagerからHeight Field Managerを開きます。
  • Terrain Meshを選択します。
  • 「Add」ボタンを押して、ダイアログのnameフィールドに名前(すなわち "ground")を入力してください。
  • Selectボタンを押すと、Meshフィールドが自動的にグラウンドパスで埋められます。
  • 「OK」を押して、Height Field Managerを閉じ、シーンを巻き戻します。
  • エージェントグループを選択します。
  • State Machineモジュールのオプションで、Heightフィールドとして "ground"を設定します。
  • シーンを巻き戻して、Playを押します。Atomsは、エージェントをメッシュに配置します。

Heightフィールドは、変更されるたびにリロードする必要があります。Height Field Managerを開き、ユーザーのHeightフィールドの項目を選択してリロードを押します。



変形した地形
  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、Sizeアトリビュートを(5、0、5)に設定します。
  • State Machineモジュールを追加して、Stateアトリビュートを1に設定します。
  • 平面を作成し、Subdivisionを50、50に増やし、3000,3000,3000にスケールを調整します。
  • Mountain Deformerを追加し、Amplitudeを500に設定し、変形をアニメートするために、いくつかのキーフレームをTimeパラメータに配置します。
  • AtomsメニューのAtoms Heigh Field ManagerからHeight Field Managerを開きます。
  • Terrain Meshを選択します。
  • 「Add」ボタンを押して、ダイアログのnameフィールドに名前を設定します。
    "ground")。
  • 「Select」ボタンを押すと、Meshフィールドが自動的にグラウンドパスで埋められます。
  • アニメ化されたチェックボックスをチェックしてください。
  • 「OK」を押して、Height Field Managerを閉じ、シーンを巻き戻します。
  • エージェントグループを選択します。
  • State Machineモジュールのオプションで、Heightフィールドとして "ground"を設定します。
  • シーンを巻き戻して、Playを押します。Atomsは、変形したメッシュ上にエージェントを配置します。


Atomsは、アニメーション化されたHeightフィールドの内部構造をフレームごとに再構築します。綿密なメッシュの場合、これによりパフォーマンスが低下する可能性があります。ユーザーのグラウンドがスペースを動作するスタティックメッシュの場合は、次のセクションをご覧ください。



アニメーション時に変形しない地形

グラウンドの変換がアニメートされている場合(ただし、メッシュ自体はスタティックです)、アニメートされたHeightフィールドを使用せずに、Parent Constraintモジュールを使用してグラウンドの計算を高速化できます。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、Sizeアトリビュートを(5、0、5)に設定します。
  • State Machineモジュールを追加して、Stateアトリビュートを1に設定します。
  • 平面を作成し、Subdivisionを50、50に増やし、Scaleを3000,3000,3000に調整します。
  • プレーンをNullの子として設定し、いくつかのキーフレームを追加して、Nullの変換をアニメートします。
  • Height Field ManagerのAtomsメニューを開きます。Atoms > Height Field Manager
  • Terrain Meshを選択します。
  • 「Add」ボタンを押して、ダイアログのNameフィールドに名前(例: "ground")を設定します。
  • 「Select」ボタンを押すと、Meshフィールドが自動的にグラウンドパスで埋められます。
  • アニメ化されたチェックボックスをチェックしてください。
  • 「OK」を押して、Height Field Managerを閉じ、シーンを巻き戻します。
  • エージェントグループを選択します。
  • State Machineモジュールのオプションから、Heightフィールドとして "ground"を設定します。
  • Parent Constraint Behaviourモジュールを追加してシーンを巻き戻します。
  • planeworldMatrixをparentConstraint parentMatrixに接続します。
  • シーンを巻き戻して、Playを押します。





Gravityフィールドと3次元の地形

Gravityフィールドは、標準のHeightフィールドですが、エージェントの重力とアップベクトルメタデータを変更するために使用されます。Gravityフィールドを使用して多数の効果を作成できます。以下が2つの例です。

  • エージェントグループを作成します。
  • Grid Layoutモジュールを追加し、Sizeアトリビュートを(5、0、5)に設定します。
  • State Machineモジュールを追加して、Stateアトリビュートを1に設定します。
  • スフィアを作成し、それを(1000,1000,1000)にScaleを調整して(0、-1000、0)に移動します。
  • このスフィアを使用して、Heightフィールドを作成し、その名前を "gravityMesh"に設定します。
  • スフィアを複製し、新しいスフィアに対していくつかのバンプをモデル化します。
  • このスフィアを使用して、新しいHeightフィールドを作成し、名前を "groundMesh"に設定します。
  • エージェントグループを選択します。
  • State Machineモジュールのオプションで、 "groundMesh"をHeightフィールドとして、 "gravityMesh"をGravityフィールドとして設定します。
  • スフィアの周りにカーブを作成し、そのカーブを使用して、Follow Curveモジュールを追加します。カーブを使用しない場合、デフォルトではすべてのエージェントがDirectionメタデータとして、1,0,0になるため、エージェントはスフィアの適切な位置に固定されます。
  • シーンを巻き戻して、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.