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.