Mantis_Volume_Simulatorで遊ぼう

**Mantis_Volume_Simulator1.0**

![praying-mantis (1).png](https://qiita-image-store.s3.amazonaws.com/0/179218/d4d75b14-0eea-0953-a07a-df996f43d8d3.png)

---
情報共有もろもろ含め
β版として...1.0verをリリースしました。

Uiも雑だし
Cache_CTRL&Render_Pipelineも考慮してないですけど...


とりあえずパフォーマンスから...
`Mantis_Sim_Performance Shape`
https://youtu.be/k4kXgieko8A
:右がSmoke_Solver 左がMantis
`Mantis_Sim_ Turbulence_Flow`
https://youtu.be/sIuOo28nzk8

`Performance Surface_Based_Turburance`
https://youtu.be/t-EFE49FMzA

---

**`Common Setting`**

`Grid_Size` {5,15,5}
`Grid Res` {0.1}
`Voxels` {[50,150,50]} 
`Voxel_TotalCounts` {375,000}
`Sim_time` 200f


---
**`Simple_SmokeSolver`**

![Screenshot from 2017-12-17 21-35-37.png](https://qiita-image-store.s3.amazonaws.com/0/179218/e6718c03-2eaa-1c15-b1d4-10bb37abf374.png)

**Sim_Time  31.424s**
**Total_Time 51.408s**



**`Simple_SmokeSolver OpenCL`**

![Screenshot from 2017-12-17 21-53-59.png](https://qiita-image-store.s3.amazonaws.com/0/179218/6bf76180-d869-5bc8-ca19-e2a19aa0f553.png)

**Sim_Time  14.669s**
**Total_Time 29.561s**




**`Mantis_Volume_Simulator`**

![Screenshot from 2017-12-17 21-45-33.png](https://qiita-image-store.s3.amazonaws.com/0/179218/05546e41-4258-fc01-170d-984363ded2cc.png)

**Total_Time 27.196s**



**`研究中Mantis_Volume_Simulator2.0`**
![Screenshot from 2017-12-17 22-05-48.png](https://qiita-image-store.s3.amazonaws.com/0/179218/f3b9493d-6979-0598-433f-e572e465b3f4.png)

**Sim_Time  11.649s**
**Total_Time 21.417s**

---

`How to Use`
1:Download HDA_file for DropBox 
https://www.dropbox.com/s/0vicodoaxh77pba/Mantis_Volume_Simulator1.0_blackbox.hdanc?dl=0

2:Seting HDA File (Non-Commercial Edition(BlackBOX)で作成しています)
HDAはHelpを参照することをおすすめします。

3:Build確認
![Screenshot from 2017-12-17 22-16-38.png](https://qiita-image-store.s3.amazonaws.com/0/179218/c7d64977-98f4-b35b-0a4c-cb89c1cc0aaa.png)
OpenCLがうまく動作していれば普通に使えます。



4:Setting Parms&edit Volume_Shapes
![Screenshot from 2017-12-17 22-28-48.png](https://qiita-image-store.s3.amazonaws.com/0/179218/cf116153-1d96-8f83-cb97-500b3867734e.png)

5:ひたすら遊ぶ...

---

学習出来るジャンル
Parameter_CTRLでの
Grid Control
Volume Velosity
Viscosity Sim
Turbulence_Flow

マイクロソルバーのウンタラカンタラやる前に
まずは触ってみるのが一番です。

複雑なSimulationを構築する前にまずは全体像をガッチリと掴みましょう。



---

`Tec Tips`
OpenCL Based Simulator 
Divergenceを見直しています。
Dissipationを見直しています。

使用FieldはDensity,Vel
その他はtemporary_Fieldとして扱っています。

---

`DissipateはH_OpenCL&VEXで記述してみました`

以下Source_Code
`GAS_OPENCL`

```
#include "interpolate.h" 
float lerpConstant( constant float * in, int size, float pos);

kernel void dissipate( 
                 int stride_x, 
                 int stride_y, 
                 int stride_z, 
                 int stride_offset, 
                 float timeinc, 
                 float time, 
                 float  eva_parm ,
                 global float * density 
)
{
 int idx = stride_offset +
            get_global_id(0) * stride_x +
            get_global_id(1) * stride_y +
            get_global_id(2) * stride_z;
          
            //Create Evapolate 
            float Invert_eva = -eva_parm;
                  Invert_eva +=1;
            float clp_min = 0;
            float clp_max =1;
            
            float evaporate = pow(clamp(Invert_eva,clp_min,clp_max),timeinc);
            
          density[idx] *=evaporate;
          


}
```


`GAS Field Wrangle`

```
float parm_eva = chf("parm_eva");


float Invert_eva =-parm_eva;
      Invert_eva +=1;
    
float evaporate = pow(clamp(Invert_eva,0,1),@TimeInc);

@density *=evaporate;
```

**`Setting_Sample`**

`test_01`
![Screenshot from 2017-12-17 22-54-23.png](https://qiita-image-store.s3.amazonaws.com/0/179218/504d7a3d-2682-712b-2de9-7beaffa1394c.png)

`test_02`
![Screenshot from 2017-12-17 22-56-10.png](https://qiita-image-store.s3.amazonaws.com/0/179218/5934afed-1e9d-d78e-ac99-1aa122ef910e.png)




---

気づいている人はお分かりだと思うんですけど...
名前はManta_Flowのパクリです笑
自分は
もっとアーティスティックに表現したいんですけど
難しい....

DOPアセットの作成練習も兼ねたり
Openclコーディングに計算の一部分を落としこんでみたり
色々してみました。
F○MEとかP○○enixのような操作性をHoudiniにも落とし込めたら...

アルゴリズムの簡単なTec Reportは勉強会とかセミナーとかで共有できたらいいですね。


学習のリソースにお役立てくださいませ。
学習用ですよ...笑

Let`s Thinking(^ _ ^)

追伸
HDKむずかしい...