4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Control_Dynamics Houdini 02

Posted at

Control_Dynamics Houdini 02

前回記事はコチラです。
Control_Dynamics Houdini 01
http://qiita.com/ts_bros/items/c8c9ace7863e8b93df4c

今回作っていくのは....
Advect_Solverとでも命名しますか。
移流に関して色々アプローチしていきます。


Lesson01
Advect?ってなんじゃワレェ!!!

超簡単でいいんでサラッと以下のコラム見ておくといいかもです。
パラパラな感じで本当に大丈夫です。
イメージしながら作っていくと理解度が全然違うので、お勧めします。

ソフトウェアクレイドル
流体解析の基礎講座 第1回
http://www.cradle.co.jp/tec/column01/index.html

流体を動かすためには流体の動きを数字やら文字やらで
記述した式が必要です。

はぁ...なんのことやらサッパリすわ

A= B+C*tみたいなノリで
自分がわかりやすい解釈で構いません。

何かしらの答えを求める時は
簡単な式をたてますよね?
コンビニでコーラとポテチを買う時だって計算式を立てています。
お会計 = コーラの値段+ポテチの値段となりますよね?

数学物理の世界でもたくさんの学者さんがあらゆる
日常の現象を数字で表せれないか解明し続けています。

CG/VFXの流体の動きも式で管理されています。
流体の動き=????
ってな感じです。

shelfをポチッと押してSimulationが働き流体が動くのは
Houdiniがこれらの式を計算しているから動くのです。

Advectってのはこの式の一部になります。
移流項ってやつですね。
流体の速度に沿って移動するっていうDataを記述しています。

Advectがないと流体が動いてくれません。`
(圧力で密度変化するとか抜きで)

人間が歩くって動作も
方向とスピードがきまってるから動けるわけで
これらが定まっていないと静止したままですよね。

とりあえず流体を動かしたい場合...
以下の様に簡単な式を立ててみましょう。

流体の動き = 流体の速度+進行方向
と記述する事ができます。


Lesson02
Houdiniで実装してみよう

Hip_Fileは以下の置いておきます。
https://www.dropbox.com/s/5fq23867ea1vgkw/ControlFluid.hipnc?dl=0

startup_fluid.png

簡単に作ったモノが用意されていると思います。

移流項は
流体の速度に沿って移動するDataなので
流体がVolumeDataならば...
速度、方向もVolumeDataでなくてはなりません。

え?どうしてって思った方
イメージしてください。

場所で選択しているモノは空間定義になります。
あの場所はDensity=1です。と一緒です。
あの場所が持つ速度は?
あの場所が持つ方向は?

こういう風に考えると分かりやすいですよね。

さて方向や速度を数字で定義するのに
使うのが...
vector Analysisです。(ベクトル解析)

でできましたね笑
書籍を読んでる人はここで知識のPieceが繋がり始めます。

簡単に式にしてみます。

速度= v
とした場合

速度は定義する事が出来るが...進行方向が分かりません。
そこで3次元空間のデカルト座標を加えて位置情報を作ります。

方向= x+y+z
とします。

なので
方向をさだめた速度 = vel

vel = xv +xy + xz
と定める事ができます。

Houdini的に記述すると

vector vel = set(0,0,0);

となります。
ベクトルの総和や逆ベクトルも簡単に作る事ができますよね。

このベクトルを仮に流速と呼ぶ事にしましょう。

さてあとは動かすだけです。

Screenshot 2017-05-06_17-43-54.png

AdvectのMicroSolverを一つ使います。

:Gas Advectってやつです。

:AdvectさせたいVolume_Fieldは?
:流速のFieldは?(vel)
聞かれているんで
それぞれ指定してあげましょう!
Dopに読み込まれているFieldを参照してください

Simulationを実行してみましょう。
Densityに変化がありましたか?
それなら
おめでとうございます!

変化がないぞ!!
って人は
:参照しているField_Name
:Simulation_Process
を見直してみてください。

これがSolver実装の入門ですね。

ここでおさらいです。
:流体を動かすには、流速が必要。
:動きを表すDataはベクトルを用いて表現される。

:Fieldは空間定義
:Simulationは式で動く

さらに...
気づいた人もいるんじゃないかと思いますが
Field_Nameって別になんでもいいんですよ。
DensityはDensityじゃなきゃダメってゆうのはないす。
StartとGoalさえあっていればOK!
僕なんか、Advectionを更新する時は、Flow,Curl,Grad,Div,Build_Curl
てな具合でガンガン作ってベクトルをカスタマイズしています。

今は、物理モデルを無視した状態でFluid_Solverを実装しています。
これに圧力、摩擦、外力なんか考慮すると
もう立派なSmoke_Solverになっていきます。


これらをBaseに少し複雑なAdvection_Modelを作成していきます。
次号に続く

重要topic
:Advect
:vector Analysis(ベクトル解析)
:流体を動かすには、流速(ベクトル)が必要。

ここ間違っているよぉ等ございましたら、ご連絡頂けると嬉しいです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?