Upload
nvidia-japan
View
977
Download
2
Embed Size (px)
Citation preview
DECEMBER 2016
SENIOR DEVELOPER TECHNOLOGY ENGINEER
MASAYA TAKESHIGE
FLOWIN 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 EMITTERSphereの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 PARAMETERSTORIAEZU MOETA KEDO..
OVERVIEWGridベースの流体シミュレーションが基礎になっています。
FlowのGridは有限の立方体で、シミュレーションが行われている間は、基本的に動かすことができません。
事前にシミュレーションを行いたい範囲をGridで包含する必要があります。
OVERVIEWEmitterは、Grid内に複数配置することができます。
Grid内は、メモリ(後述)の許す限りEmitterから発生した流体で満たすことができます。
パラメーター設定には燃焼モデルを採用しているので、TemperatureやFuelといったパラメーターを用いて設定します。
Emitterは、色を持っていません
Emitterが持っているのは、温度と燃料です。
レンダリングの制御は、Grid側のプロパティで行われます。違う色のFlowが必要な場合は、別のGridを用意する必要があります。
PARAMETERS - GRIDGridのパラメーターについて
Grid Cell Size
Gridの1セルあたりの大きさです。これを大きくすると、シーンにおけるGridの大きさが大きくなりますが、シミュレーションも大まかなものになります。
Virtual Grid Dimension
Gridの解像度です。大きな解像度を用いれば、より精細なシミュレーションが可能になります。
ただし、Grid解像度を2倍にすれば、同じ大きさのEmitterを表現するために必要な処理とメモリが8倍になります。
PARAMETERS - GRIDGridのパラメーターについて
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!