DECEMBER 2016
SENIOR DEVELOPER TECHNOLOGY ENGINEER
MASAYA TAKESHIGE
FLOW
IN VR FUNHOUSE MOD KIT
RESOURCES
実は今回ご紹介することは
WebPageに掲載されています
http://docs.nvidia.com/gameworks/content/gamemods/vrfunhousemodkit/index.html
PREREQUISITE
動作環境
Kepler世代以上(GTX680とか)
NVIDIAのドライバーは最新にして下さい。
FlowはGPUメモリを大きく消費します。
VRAMが沢山搭載されていると安心です。(Grid一つで数百MB)
ACTORS
今回Flowを使うにあたり、以下が実際に使用するActor, Component, Assetになります。
これらがContent Browserで検索して出てこない場合は、UE4にFlowがIntegrateされて
いません
ANYWAY, BURN ANYTHING
-TORIAEZU MOYASITEMIRU-
CREATING A FLOW GRID ASSET
まずはFlow Grid Asset を作成します。
Content Browser内で右クリックして、コンテキストメニューから
Physics->Flow Grid Assetを選択。
これでGridのアセットが作られます。
BEFORE USING THE ASSET
Flow Grid Assetには、Color Mapというプロパティがあり、これがプライベートなア
セットを参照しているため、このままではこのアセットをセーブすることができませ
ん。
Content Browser内で、VRDemo_Assets/Flow/以下にある、適当なColor Map(例え
ば:Fire_Map_C2とか)を複製して、Modフォルダ以下に移動してください。
その後、Flow Grid AssetのColor Mapプロパティが参照しているアセットを、コピーし
てきたColor Mapを参照するように変更してください。
これでセーブできるようになると思います。
CREATING AN ACTOR
次にFlow Grid Actorを作成します
先ほど作成したFlow Grid AssetをViewportに
ドラッグアンドドロップしてください
右のようなオブジェクトがシーンに配置されます。
これは、Flow Grid ActorでFlow Grid Componentを
継承しています。
Flow Grid Componentはドラッグアンドドロップした
Flow Grid Assetを参照しています。
CREATING AN EMITTER
再びContent Browserを右クリックして
Blueprint Actorを作ります。
作成したActorに、Blue Print Editor上で
Add Component ->Shape Sphereを実行し、Shapeを追加します
CREATING AN EMITTER
SphereのCollision PresetsをCustomに設定し、
Obejct TypeをFlowに設定します。
加えてFlowのChannelをOverlapに設定します。
CREATING AN EMITTER
最後に、Add ComponentでFlow Emitterを追加します。
これでFlowで使用するEmitterの準備が出来ました!
NOW YOU GOT A FRAME
作成したEmitterをシーンに配置して、Editor内で実行してみましょう!
DESCRIPTION OF THE PARAMETERS
TORIAEZU MOETA KEDO..
OVERVIEW
Gridベースの流体シミュレーションが基礎になっています。
FlowのGridは有限の立方体で、
シミュレーションが行われている間は、
基本的に動かすことができません。
事前にシミュレーションを行いたい範囲を
Gridで包含する必要があります。
OVERVIEW
Emitterは、Grid内に複数配置することができます。
Grid内は、メモリ(後述)の許す限りEmitterから発生した流体で満たすことができます。
パラメーター設定には燃焼モデルを採用しているので、
TemperatureやFuelといったパラメーターを用いて設定します。
Emitterは、色を持っていません
Emitterが持っているのは、温度と燃料です。
レンダリングの制御は、Grid側のプロパティで行われます。
違う色のFlowが必要な場合は、別のGridを用意する必要があります。
PARAMETERS - GRID
Gridのパラメーターについて
Grid Cell Size
Gridの1セルあたりの大きさです。
これを大きくすると、シーンにおけるGridの大きさが大きくなりますが、
シミュレーションも大まかなものになります。
Virtual Grid Dimension
Gridの解像度です。
大きな解像度を用いれば、より精細なシミュレーションが可能になります。
ただし、Grid解像度を2倍にすれば、
同じ大きさのEmitterを表現するために必要な処理とメモリが8倍になります。
PARAMETERS - GRID
Gridのパラメーターについて
Memory Limit Scale
この値を大きくすると、Grid内でより大規模なシミュレーションが実行可能になります。
言い換えれば、数多くのEmitterや大きなEmitterを用いることができるようになります。
この値を2倍に設定すると、確保されるVRAMも2倍になります。
MEMORY MANAGEMENT
シミュレーションに使うGrid用のメモリは、
すべて間接的なバッファにプールされています。
Emitterの配置とともに、実際にGridの該当空間にメモリが割り当てられます。
それまではGridは仮想的なもので、実際にメモリは割り当てられていません。
シミュレーションの進展とともに実メモリが割り当てられる空間が広がっていきます。
Emitterの消失や燃焼の終了とともに、メモリの割り当てられていたGridより、
メモリが回収され、プールに戻されます。
Memory Limit Scaleはこのプールの大きさを制御するためのパラメーターです。
プールのメモリが枯渇すると、シミュレーションが行われているにも関わらず、温度の低
いGridから強制的にメモリが回収されるため、シミュレーションが不自然になります。
この場合は、Emitterの大きさや設定を見直すか、Memory Limit Scaleを大きくする必要が
あります。
Gridの確保の様子は、Flow Grid AssetのRendering->Debug Wireframeで可視化することが
できます。
PARAMETERS - GRID
その他のGridのパラメーターについて
Gravity
重力ベクトルを定義しています。見た目が大きく変わる面白いパラメーターです。
ベクトルを弱くしたり、逆向きにすると、漂う煙のような動きも作れます。
Damping/Fade
燃焼の減衰を制御するパラメーターです
MacCormack Correction
炎の細かい乱流の発生具合を調整します。これも変更すると面白いパラメーターです。
その他のGridのパラメーターについて
ColorMap
シミュレーション結果の色を決める大事なパラメーターです。RGBAのアニメーション
カーブを使って色を表現しています。
シミュレーションの温度(実際はDensity)によって、X軸の1.0~0.0の値が使用されます。
燃焼の始まりが1.0で、終わりの方が0.0となっています。したがって、エディター上でが
逆方向に見えます。
燃焼の終わりの部分では、Gridのブロックが回収される可能性が高いので、Alphaの値は0
もしくは、きわめて0に近い値にしておく必要があります。それ以外は特に制限が無いの
で、自由に色を設定することができます。
RenderingAlphaScale
上記のColorMapのAlpha値に乗算されます。大きい値ならより不透明になり、小さい値な
らより透明になります。
PARAMETERS - GRID
Emitter のパラメーターについて
Linear Velocity
放出する燃料と温度の初速になります。
この値がゼロでも、温度と重力の関係で、デフォルト設定の場合は自然と上向きに炎が上
昇しますが、特に力を与えたい場合にこのパラメーターを使用します。
Angular Velocity
このパラメーターで指定されたベクトルを中心に渦巻き状の初速を与えます。初速の大き
さは、ベクトルの長さに比例します。
Blend in Physical Velocity
Emitterの動きに合わせてVelocityを設定する際のBlend比率になります。
PARAMETERS - EMITTER
Emitter のパラメーターについて
Fuel
放出する燃料の量になります。この値を大きくすると、より大きな炎となります。
Temperature
放出する温度になります。この値が大きくなるとより燃料が燃えるようになります。
Couple Rate
Emitterが速いスピードで移動している時に、燃料や温度が不足して燃焼が起きない場合
があります。その際はこのパラメーターをBlueprintで速度に応じて大きくすることで、
解決する場合があります。
PARAMETERS - EMITTER
Emitter のパラメーターについて
Allocation Scale
Emitterが配置された際に、燃焼の有無にかかわらず確保されるGridの大きさは、Emitter
のサイズとほぼ同じですが、この値を大きくすることで、確保される領域を大きくするこ
とが出来ます。
Allocation Predict
Emitterが移動する際に、速度ベクトルから、移動先になると思われるGridを事前に確保
するようにします。
PARAMETERS - EMITTER
HAVE FUN!

Flow in VR Funhouse MOD Kit