流体サーフェス完全解説
概要
流体サーフェス (Fluid Surface) とは、頂点の上下移動や、マテリアルに使用可能な法線マップ テクスチャのアニメーション化によって波を可視化する平坦なオブジェクトです。
これらの機能は、流体全体の一部である小型の四角形部分のみに作用します。
これらの四角形は通常メインプレーヤーを中心としてその周りで動き、残りの流体は平坦のままで力の影響を受けません。
デザイナーとしては、これらの四角形をできるだけ大きく薄くテッセレーション (分割) しながら、メモリとパフォーマンスが適切に維持されるように注意を払います。
流体サーフェスは、通常、水をシミュレートするために使用されます。
流体サーフェスには FluidSurfaceActor (流体サーフェス アクタ) と FluidSurfaceActorMovable (移動可能な流体サーフェス アクタ) の 2 種類があります。
シミュレーションとディテールのサブグリッド
前述したように、ディテールが存在するのは FluidSurfaceActor の一部分だけで、残りはだたの平坦なクワッドです。シミュレーションとディテールのサブグリッドは、
FluidSurfaceActor の内部でそれぞれの「ターゲット」が中心となるように動き回り、 TargetSimulation と TargetDetail プロパティが空の場合は、プレーヤーを中心として動きます。
bShowSimulationPosition または bShowDetailPosition をオンにすると、シミュレーションまたはディテール サブグリッドが FluidSurfaceActor 内に位置することがわかります。これらはいずれも四角形として表示されます。ターゲットの動きに合わせてその周囲で動くものなので、ゲーム中、または PIE でのテストをお勧めします。
ゲーム中には "set" 実行コマンドを使ってこれらをオンにすることができます (例: set fluidsurfacecomponent bShowSimulationPosition 1
)。
シミュレーション グリッドは頂点アニメーションを使って波やさざ波 (ripple) を可視化するため、サブグリッドのテッセレーション率が高くなり、含まれる頂点数も多いですが、
ディテール グリッドは法線マップ テクスチャ周辺で運動するだけなので、追加の頂点はありません。
シミュレーション グリッドのシミュレーションは CPU 上で個別のスレッドで処理され、ディテール グリッドのシミュレーションは、法線マップ テクスチャのアニメーションとして純粋に GPU 上で処理されます。
有効化と無効化
流体を有効または無効ステートにすることができます。有効ステートでは波やさざ波がシミュレーションされ、流体は所要のメモリとパフォーマンスを消費します。
無効ステートの流体は最初のメモリ量のみ使用し、指定マテリアルによる平坦な静的クワッドのレンダリング以外には、パフォーマンスの追加はありません。
開始時には流体は無効ステートですが、プレーヤーの位置が (シミュレーションまたはディテール グリッドのエッジではなく、最も近い位置にある FluidSurfaceActor のエッジから測定して) DeactivationDistance (無効化発生距離) 内にある間は自動的に有効になり、シミュレーションまたはディテール グリッド内の 1 点に力が適用されます。
これらのサブグリッドの外側に適用される力は単純に無視され、流体は無効ステートの状態のままです。
有効ステートに入った流体は、プレーヤーが DeactivationDistance の外側に移動してから 10 秒後に自動的に無効ステートに変わり、その時点でシミュレーションまたはディテール グリッドへの力の適用は停止し、流体も静止します。
波の生成
流体における波の生成には、手動の FluidSurfaceInfluenceActors? と、自動の物理的相互作用の 2 つの方法があります。
自動相互作用は通常の Touch イベントとして処理されます (これを Kismet 関連付けることもできます)。
アクタが流体面に接触すると、衝撃力が適用されます。
その強度は、ForceImpact (衝撃力) プロパティと、接触するアクタのサイズと速度から得られます。
接触アクタが流体面の周囲を移動するに伴い、異なる (連続的な) 力が適用されます。
このタイプの相互作用では、FluidContinuous (連続的流体) プロパティを使って連続力の強度を決定します。
テスト リップル (TestRipple) の衝撃には (TestRippleFrequency がゼロより大きい場合) FluidImpact プロパティが使用される点に注意してください。
TestRippleFrequency がゼロの場合は ForceContinuous を使用して連続力を適用します。
シミュレーションまたはディテールの四角形の外部位置に適用される力は無視されます。
見栄えをよくするための一般的なヒントとして、衝撃半径が大きいほど、形よく滑らかな波が生成されます。
半径を大きく取ることで力の作用を受けるセルが増え、シミュレーションに安定効果をもたらします。
作成
汎用ブラウザで、"Actor Classes" (アクタ クラス) タブにある FluidSurfaceActor を選択します。ビューポートでワールドの任意の位置を右クリックし、"Add FluidSurfaceActor Here" (ここに FluidSurfaceActor を追加) 選択します。
ウィジットを使用して適切なサイズおよび位置に調整し、F4 を押します (または、アクタをダブルクリックするか、右クリックして "FluidSurfaceActor Properties" (FluidSurfaceActor のプロパティ) を選択します)。
FluidSurfaceActors には、Fluid、FluidDebug、FluidDetail および FluidSurfaceComponent (流体サーフェス コンポーネント) の 4 つのプロパティ カテゴリーがあります。
プロパティ設定を確認する際は、流体には 2 つのアニメーション方法 (頂点の上下移動、法線マップ テクスチャのアニメーション) がある点に留意してください。
通常は前者を「シミュレーション」、後者を「ディテール」と呼びます。シミュレーションは CPU で (別のスレッドで) 処理され、ディテールは GPU で処理されます。
プロパティ: FluidSurfaceComponent (流体サーフェス コンポーネント)
このカテゴリーには流体マテリアル プロパティが含まれます。流体を完全に機能させるために設定するプロパティはこれだけです。
- FluidMaterial
- 流体のレンダリングに使用するマテリアル。
これには、周囲の乱流に関するスクロール ディストーション マップに加えて、ディテール テクスチャにアクセスするための特別な FluidNormal (流体法線) ノードを含めることができます。
マテリアルの bUsedWithFluidSurfaces チェックボックスを有効に設定する必要があります。
|
|  |
プロパティ: Fluid (流体)
これらのプロパティではシミュレーション (頂点アニメーション) と流体全体を制御します。
- DeactivationDistance
- プレーヤーから最短位置にある流体エッジまでの距離がこの値を越えると、流体は無効ステートに入り、ただの平坦なクワッドとしてのレンダリングを開始します。
- EnableDetail
- 法線マップの ディテール テクスチャのアニメーションを有効または無効にします。
- EnableSimulation
- シミュレーション (頂点アニメーション) を有効または無効にします。
- FluidDamping
- 流体シミュレーションにおける波の振幅抑制の度合い (0.0-30.0)。
- FluidHeightScale
- 波の高さスケール - 値が大きくなるほどシミュレーションで高い頂点の波が生成されます。
- FluidTravelSpeed
- シミュレーションでの波の移動速度係数 (0.0-1.0)。波の速度を下げるのに使用できます。
- FluidUpdateRate
- 1 秒あたりの更新回数で、シミュレーションの更新の割合を表します。この値を上げると波が広がる速度も上昇しますが、パフォーマンスは低下します。
- ForceContinuous
- 連続的な相互作用の (突発的な衝撃と異なる) 力係数。
- ForceImpact
- 瞬間的な相互作用の力係数。
- GPUTessellationFactor
- GPU による流体グリッドのテッセレーション率 (GPU テッセレーションの完全サポートを提供するプラットフォームで使用します。現在は Xbox360 のみ)。
- GridSpacing
- シミュレーション グリッドセルのサイズ (ワールド空間の単位を使用)。
- GridSpacingLowRes
- 流体は無効ステートに入ると、自動的に低解像度のグリッドをレンダリングします。流体が半透明の場合、頂点をフォギング (噴霧式に散らせる) ために適切な値が必要です。この値が低すぎると、GridSpacingLowRes は押さえ付けられます (結果として頂点数が 65000 以上になります)。
- LightingContrast
- この値を増やすと、流体頂点の法線の曲率を誇張して、ライティングにコントラストを追加します。
- SimulationQuadsX
- シミュレーション グリッド内の (X 軸に沿った) 頂点クワッドの数。
- SimulationQuadsY
- シミュレーション グリッド内の (Y 軸に沿った) 頂点クワッドの数。
- TargetDetail
- ディテール テクスチャの中心となるターゲット アクタ。設定されていない場合、ディテール テクスチャはプレーヤーを中心として動きます。
- TargetSimulation
- シミュレーション グリッドの中心となるターゲット アクタ。設定されていない場合、シミュレーション グリッドはプレーヤーを中心として動きます。
|
|  |
プロパティ: FluidDetail (流体のディテール)
これらのプロパティは、ディテールの法線マップ テクスチャにのみ作用します。
- DetailDamping
- FluidDamping と同じですが、ディテール テクスチャが作用の対象です。
- DetailHeightScale
- FluidHeightScale と同じですが、ディテール テクスチャが作用の対象です。
この値を増やすと、FluidNormal はより大きな「コントラスト」を示します。
- DetailResolution
- ディテール テクスチャの解像度。テクスチャは四角形です。
- DetailSize
- 流体内部のディテール グリッドのサイズ、ワールド空間単位で指定します。ディテール グリッドは四角形です。
- DetailTransfer
- ディテール テクスチャに適用 (伝達) される力の変調係数。FluidSurfaceActor でシミュレーションとディテールの両方の機能を使用する場合のみ有用です。
- DetailTravelSpeed
- FluidTravelSpeed と同じですが、ディテール テクスチャが作用の対象です。
- DetailUpdateRate
- FluidUpdateRate と同じですが、ディテール テクスチャが作用の対象です。
|
|  |
プロパティ: FluidDebug (流体のデバッグ)
これらのプロパティは、FluidSurfaceActor の設定および調整中に使用することができます。FINAL_RELEASE (ファイナル リリース) ビルドでは機能しません。
- bPause
- これをオンにすると、シミュレーションをその場で停止します。
- bShowDetailNormals
- 画面上にディテール テクスチャを示すオーバーレイを描きます。
- bShowDetailPosition
- 流体内に、ディテール グリッドの位置を四角形で示します。
- bShowFluidDetail
- ディテール テクスチャは平坦に表示されますが、背景で動き続けます。
- bShowFluidSimulation
- シミュレーションは平坦なジオメトリとして表示されますが、背景で動き続けます。
- bShowSimulationNormals
- シミュレーションのグリッドラインと一緒に法線を可視化します
- bShowSimulationPosition
- 流体内に、シミュレーション グリッドの位置を四角形で示します。
- bTestRipple
- テストリップル (テスト用のさざ波) のオン/オフを切り替えます。
- bTestRippleCenterOnDetail
- ディテール グリッド上でテスト リップルを中央に合わせるかどうかを指定します。
- NormalLength
- 可視化状態にあるシミュレーションの法線の長さ。
- TestRippleFrequency
- テスト リップルの波寄せの間隔。0 に設定すると連続動作になります。
- TestRippleRadius
- ワールド空間単位によるテスト リップルの半径。
- TestRippleSpeed
- テスト リップルの角速度。
|
|  |
ヒントとベストプラクティス
当社からのアドバイスとしては、頂点アニメーションは大きなサーフェスのみに使用し、法線マップのアニメーションは水たまりのような小さなサーフェスにのみ使用することをお勧めします。
機能を同時に使用すると調整に手間取ることがあり、それでは利得なしでメモリとパフォーマンスを無駄にするだけです。
FluidSurfaceActor は任意の大きさに設定できますが、シミュレーションまたはディテール サブグリッドの使用は多量のメモリを要し、パフォーマンスにも影響します。
ポイントは、滑らかさをあまり損なわないようにしながら、GridSpacing をできるだけ大きくすることです。
高い数値 (50 など) から始めて、満足する品質が得られるまで徐々に小さくしていきます。
次に SimulationQuadsX と SimulationQuadsY を使って、必要な大きさのアクティブな四角形が得られるまでシミュレーション グリッドのサイズを調整します。
さらに、グリッドの大きさが 300x300 になると多量のメモリを消費する点にも注意してください。
エディタで、"Test Rippple" (テストリップル) をオンにして流体プロパティを調整し、Realtime Udate (リアルタイム更新) を使用します。テスト リップルにより流体がアクティブになり、設定の効果を評価確認することができます。
メモリとパフォーマンス コストを抑えるために、アニメーションの質を損なわない程度に維持しながら設定値を可能な範囲で低く設定するようにしてください。
波の移動速度は、解像度 (GridSpacing/SimulationQuadsX/SimulationQuadsX または DetailSize/DetailResolution)、FluidUpdateRate/DetailUpdateRate (更新の割合) および FluidTravelSpeed/DetailTravelSpeed (移動速度) 設定の影響を受けます。
適度に滑らかな波になるように解像度を設定してから、FluidTravelSpeed/DetailTravelSpeed で波の速度を調整します。
更新間隔は 30 前後を維持するようにします (これより低くなるとアニメーションがぎこちなくなり、高くするとパフォーマンスコストが上がります)。
流体に適用する力の半径は、いずれもあまり小さくしないでください。半径が大きいほど波が滑らかになります。
コンソール コマンド
- togglefluids - すべての流体シミュレーションのオン/オフを切り替え、シミュレーションで使用されていたメモリをほぼすべて解放します。これは、メモリ使用やパフォーマンス上の影響を比較する場合に使用できます。
- stat fluids メモリおよびパフォーマンスの統計を表示します。プラットフォームによって統計データが非常に異なる点に注意してください。
Important!
You are viewing documentation for the Unreal Development Kit (UDK).
If you are looking for the Unreal Engine 4 documentation, please visit the Unreal Engine 4 Documentation site.