24
DECEMBER 2016 SENIOR DEVELOPER TECHNOLOGY ENGINEER MASAYA TAKESHIGE FLOW IN VR FUNHOUSE MOD KIT

Flow in VR Funhouse MOD Kit

Embed Size (px)

Citation preview

Page 1: Flow in VR Funhouse MOD Kit

DECEMBER 2016

SENIOR DEVELOPER TECHNOLOGY ENGINEER

MASAYA TAKESHIGE

FLOWIN VR FUNHOUSE MOD KIT

Page 2: Flow in VR Funhouse MOD Kit

RESOURCES

実は今回ご紹介することはWebPageに掲載されています

http://docs.nvidia.com/gameworks/content/gamemods/vrfunhousemodkit/index.html

Page 3: Flow in VR Funhouse MOD Kit

PREREQUISITE

動作環境

Kepler世代以上(GTX680とか)

NVIDIAのドライバーは最新にして下さい。

FlowはGPUメモリを大きく消費します。VRAMが沢山搭載されていると安心です。(Grid一つで数百MB)

Page 4: Flow in VR Funhouse MOD Kit

ACTORS

今回Flowを使うにあたり、以下が実際に使用するActor, Component, Assetになります。これらがContent Browserで検索して出てこない場合は、UE4にFlowがIntegrateされていません

Page 5: Flow in VR Funhouse MOD Kit

ANYWAY, BURN ANYTHING-TORIAEZU MOYASITEMIRU-

Page 6: Flow in VR Funhouse MOD Kit

CREATING A FLOW GRID ASSETまずはFlow Grid Asset を作成します。

Content Browser内で右クリックして、コンテキストメニューからPhysics->Flow Grid Assetを選択。これでGridのアセットが作られます。

Page 7: Flow in VR Funhouse MOD Kit

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を参照するように変更してください。

これでセーブできるようになると思います。

Page 8: Flow in VR Funhouse MOD Kit

CREATING AN ACTOR

次にFlow Grid Actorを作成します

先ほど作成したFlow Grid AssetをViewportにドラッグアンドドロップしてください右のようなオブジェクトがシーンに配置されます。

これは、Flow Grid ActorでFlow Grid Componentを継承しています。Flow Grid ComponentはドラッグアンドドロップしたFlow Grid Assetを参照しています。

Page 9: Flow in VR Funhouse MOD Kit

CREATING AN EMITTER再びContent Browserを右クリックしてBlueprint Actorを作ります。

作成したActorに、Blue Print Editor上でAdd Component ->Shape Sphereを実行し、Shapeを追加します

Page 10: Flow in VR Funhouse MOD Kit

CREATING AN EMITTERSphereのCollision PresetsをCustomに設定し、Obejct TypeをFlowに設定します。加えてFlowのChannelをOverlapに設定します。

Page 11: Flow in VR Funhouse MOD Kit

CREATING AN EMITTER最後に、Add ComponentでFlow Emitterを追加します。

これでFlowで使用するEmitterの準備が出来ました!

Page 12: Flow in VR Funhouse MOD Kit

NOW YOU GOT A FRAME作成したEmitterをシーンに配置して、Editor内で実行してみましょう!

Page 13: Flow in VR Funhouse MOD Kit

DESCRIPTION OF THE PARAMETERSTORIAEZU MOETA KEDO..

Page 14: Flow in VR Funhouse MOD Kit

OVERVIEWGridベースの流体シミュレーションが基礎になっています。

FlowのGridは有限の立方体で、シミュレーションが行われている間は、基本的に動かすことができません。

事前にシミュレーションを行いたい範囲をGridで包含する必要があります。

Page 15: Flow in VR Funhouse MOD Kit

OVERVIEWEmitterは、Grid内に複数配置することができます。

Grid内は、メモリ(後述)の許す限りEmitterから発生した流体で満たすことができます。

パラメーター設定には燃焼モデルを採用しているので、TemperatureやFuelといったパラメーターを用いて設定します。

Emitterは、色を持っていません

Emitterが持っているのは、温度と燃料です。

レンダリングの制御は、Grid側のプロパティで行われます。違う色のFlowが必要な場合は、別のGridを用意する必要があります。

Page 16: Flow in VR Funhouse MOD Kit

PARAMETERS - GRIDGridのパラメーターについて

Grid Cell Size

Gridの1セルあたりの大きさです。これを大きくすると、シーンにおけるGridの大きさが大きくなりますが、シミュレーションも大まかなものになります。

Virtual Grid Dimension

Gridの解像度です。大きな解像度を用いれば、より精細なシミュレーションが可能になります。

ただし、Grid解像度を2倍にすれば、同じ大きさのEmitterを表現するために必要な処理とメモリが8倍になります。

Page 17: Flow in VR Funhouse MOD Kit

PARAMETERS - GRIDGridのパラメーターについて

Memory Limit Scale

この値を大きくすると、Grid内でより大規模なシミュレーションが実行可能になります。言い換えれば、数多くのEmitterや大きなEmitterを用いることができるようになります。

この値を2倍に設定すると、確保されるVRAMも2倍になります。

Page 18: Flow in VR Funhouse MOD Kit

MEMORY MANAGEMENTシミュレーションに使うGrid用のメモリは、すべて間接的なバッファにプールされています。

Emitterの配置とともに、実際にGridの該当空間にメモリが割り当てられます。それまではGridは仮想的なもので、実際にメモリは割り当てられていません。シミュレーションの進展とともに実メモリが割り当てられる空間が広がっていきます。Emitterの消失や燃焼の終了とともに、メモリの割り当てられていたGridより、メモリが回収され、プールに戻されます。Memory Limit Scaleはこのプールの大きさを制御するためのパラメーターです。

プールのメモリが枯渇すると、シミュレーションが行われているにも関わらず、温度の低いGridから強制的にメモリが回収されるため、シミュレーションが不自然になります。この場合は、Emitterの大きさや設定を見直すか、Memory Limit Scaleを大きくする必要があります。

Gridの確保の様子は、Flow Grid AssetのRendering->Debug Wireframeで可視化することができます。

Page 19: Flow in VR Funhouse MOD Kit

PARAMETERS - GRIDその他のGridのパラメーターについて

Gravity

重力ベクトルを定義しています。見た目が大きく変わる面白いパラメーターです。ベクトルを弱くしたり、逆向きにすると、漂う煙のような動きも作れます。

Damping/Fade

燃焼の減衰を制御するパラメーターです

MacCormack Correction

炎の細かい乱流の発生具合を調整します。これも変更すると面白いパラメーターです。

Page 20: Flow in VR Funhouse MOD Kit

その他のGridのパラメーターについて

ColorMap

シミュレーション結果の色を決める大事なパラメーターです。RGBAのアニメーションカーブを使って色を表現しています。シミュレーションの温度(実際はDensity)によって、X軸の1.0~0.0の値が使用されます。燃焼の始まりが1.0で、終わりの方が0.0となっています。したがって、エディター上でが逆方向に見えます。燃焼の終わりの部分では、Gridのブロックが回収される可能性が高いので、Alphaの値は0もしくは、きわめて0に近い値にしておく必要があります。それ以外は特に制限が無いので、自由に色を設定することができます。

RenderingAlphaScale

上記のColorMapのAlpha値に乗算されます。大きい値ならより不透明になり、小さい値ならより透明になります。

PARAMETERS - GRID

Page 21: Flow in VR Funhouse MOD Kit

Emitter のパラメーターについて

Linear Velocity

放出する燃料と温度の初速になります。この値がゼロでも、温度と重力の関係で、デフォルト設定の場合は自然と上向きに炎が上昇しますが、特に力を与えたい場合にこのパラメーターを使用します。

Angular Velocity

このパラメーターで指定されたベクトルを中心に渦巻き状の初速を与えます。初速の大きさは、ベクトルの長さに比例します。

Blend in Physical Velocity

Emitterの動きに合わせてVelocityを設定する際のBlend比率になります。

PARAMETERS - EMITTER

Page 22: Flow in VR Funhouse MOD Kit

Emitter のパラメーターについて

Fuel

放出する燃料の量になります。この値を大きくすると、より大きな炎となります。

Temperature

放出する温度になります。この値が大きくなるとより燃料が燃えるようになります。

Couple Rate

Emitterが速いスピードで移動している時に、燃料や温度が不足して燃焼が起きない場合があります。その際はこのパラメーターをBlueprintで速度に応じて大きくすることで、解決する場合があります。

PARAMETERS - EMITTER

Page 23: Flow in VR Funhouse MOD Kit

Emitter のパラメーターについて

Allocation Scale

Emitterが配置された際に、燃焼の有無にかかわらず確保されるGridの大きさは、Emitterのサイズとほぼ同じですが、この値を大きくすることで、確保される領域を大きくすることが出来ます。

Allocation Predict

Emitterが移動する際に、速度ベクトルから、移動先になると思われるGridを事前に確保するようにします。

PARAMETERS - EMITTER

Page 24: Flow in VR Funhouse MOD Kit

HAVE FUN!