撮影作業の中でエフェクトを短時間に作成しなくてはならい状況が発生します。そこでR&Dでは、流体エフェクト用のAfter Effectsツールの開発を進めています。現在の開発状況および技術詳細を紹介いたします。(辛口)
プロダクションのための流体シミュレーション伊東 浩太© OLM Digital, Inc. 1
View Slide
OLM Fluid とは• 流体シミュレーションツール• 開発中© OLM Digital, Inc. 2
背景© OLM Digital, Inc. 3
撮影部素材の合成・エフェクトの適用をするチーム© OLM Digital, Inc. 4絵コンテ作画 美術3D撮影
撮影部素材の合成・エフェクトの適用をするチーム© OLM Digital, Inc. 5絵コンテ作画 美術3D撮影大きなリテイクコスト
撮影部素材の合成・エフェクトの適用をするチーム© OLM Digital, Inc. 6絵コンテ作画 美術3D撮影大きなリテイクコスト撮影部で作ります
• 3ds Max・Fume FX を使用簡単なシミュレーションの対応• 撮影部で作成© OLM Digital, Inc. 7
懸念点© OLM Digital, Inc. 8• ソフトウェアへの習熟が必要• ライセンス料• 開発が止まると使用不能に
目的• 簡単に使える© OLM Digital, Inc. 9
目的• 簡単に使える© OLM Digital, Inc. 10• After Effects で完結する
目的• 簡単に使える© OLM Digital, Inc. 11• After Effects で完結する• 知見を積み重ねる(R&D)
目的• 簡単に使える© OLM Digital, Inc. 12• After Effects で完結する• 知見を積み重ねる(R&D) 内製しましょう
本発表の内容© OLM Digital, Inc. 13• 流体シミュレーションの基礎• 右の結果を作るまでにやったこと• 初学者向け
参考資料© OLM Digital, Inc. 14https://github.com/tunabrain/incremental-fluids『github incremental-fluid』で検索• 上記の本の内容に沿った実装https://developer.nvidia.com/gpugems/gpugems3/part-v-physics-simulation/chapter-30-real-time-simulation-and-rendering-3d-fluids『nvidia 3d-fluid simulation』で検索• NVIDIA のページ• Fluid Simulation for Computer Graphics [1]気体から液体まで流体シミュレーションの基礎的な部分の解説2015年に第2版が出版されている[1] Bridson, Robert. Fluid simulation for computer graphics. CRC press, 2008.
CG流体シミュレーションの基礎© OLM Digital, Inc. 15
Navier-Stokes方程式© OLM Digital, Inc. 16• 流体の速度 の方程式• 解析的には解けない= − ∙ ∇ −1∇ + ∇2 +
シミュレーションの流れ© OLM Digital, Inc. 17時間速度場その他物理量(質量・熱 etc)・・・・・・ +1 +2 +1 +2
空間の離散化© OLM Digital, Inc. 18∇+1,− −1,2,,+1− ,−12
Staggered Grid (Marker And Cell Grid)© OLM Digital, Inc. 19• 速度場とその他の物理量でデータの位置をずらす• 相互に微分が必要な時に有効,−12,+12,,+12,−12,,,
Stam [2]の手法• 4ステップに分割して方程式を解く• 最終ステップ以外は速度以外にも適用© OLM Digital, Inc. 20[2] Stam, Jos. "Stable fluids." Proceedings of the 26th annual conference on Computer graphics and interactive techniques. 1999.∇ ∙ = 0= − ∙ ∇ −1∇ + ∇2 +
© OLM Digital, Inc. 21[2] Stam, Jos. "Stable fluids." Proceedings of the 26th annual conference on Computer graphics and interactive techniques. 1999.External Force∇ ∙ = 0= − ∙ ∇ −1∇ + ∇2 + Stam [2]の手法• 4ステップに分割して方程式を解く• 最終ステップ以外は速度以外にも適用
© OLM Digital, Inc. 22[2] Stam, Jos. "Stable fluids." Proceedings of the 26th annual conference on Computer graphics and interactive techniques. 1999.AdvectionExternal Force∇ ∙ = 0= − ∙ ∇ −1∇ + ∇2 + Stam [2]の手法• 4ステップに分割して方程式を解く• 最終ステップ以外は速度以外にも適用
© OLM Digital, Inc. 23[2] Stam, Jos. "Stable fluids." Proceedings of the 26th annual conference on Computer graphics and interactive techniques. 1999.DiffusionAdvectionExternal Force∇ ∙ = 0= − ∙ ∇ −1∇ + ∇2 + Stam [2]の手法• 4ステップに分割して方程式を解く• 最終ステップ以外は速度以外にも適用
© OLM Digital, Inc. 24[2] Stam, Jos. "Stable fluids." Proceedings of the 26th annual conference on Computer graphics and interactive techniques. 1999.Projection∇ ∙ = 0= − ∙ ∇ −1∇ + ∇2 + DiffusionAdvectionExternal ForceStam [2]の手法• 4ステップに分割して方程式を解く• 最終ステップ以外は速度以外にも適用
External Force物理量(質量、温度、速度等)をグリッドに追加する© OLM Digital, Inc. 25= =
External Force物理量(質量、温度、速度等)をグリッドに追加する© OLM Digital, Inc. 26: 物理量: 速度場= =
Advection物理量を速度場に沿って移動させる© OLM Digital, Inc. 27= − ∙ ∇q+1= − ∙ ∇
Forward Euler 法© OLM Digital, Inc. 28= − ∙ ∇q⟹,+1 − ,Δ= − ∙ (+1, − −1,2,,+1 − ,−12)• 解が発散しやすい• 離散値の微分による問題あり
Semi Lagrangian 法© OLM Digital, Inc. 29パーティクルの移動として考える +1前の値を使って補間
Diffusion• 物理量を拡散させる© OLM Digital, Inc. 30• ガウスブラーなどで代用も可= ∇2= ∇2q
Projection© OLM Digital, Inc. 31∇ ∙ = 0= − ∙ ∇ −1∇ + ∇2 + DiffusionAdvectionExternal Force
Projection© OLM Digital, Inc. 32Projection∇ ∙ = 0= − ∙ ∇ −1∇ + ∇2 +
Projection© OLM Digital, Inc. 331. 圧力()の連立一次方程式を解く2. 圧力から速度場を求めるProjection∇ ∙ = 0= − ∙ ∇ −1∇ + ∇2 +
基本の結果© OLM Digital, Inc. 34
Diffusion の影響© OLM Digital, Inc. 35w/diffusion wo/diffusion
Diffusion の影響© OLM Digital, Inc. 36w/diffusion wo/diffusion
問題点1. 解法による誤差の蓄積© OLM Digital, Inc. 372. 計算時間• サブピクセルの補間方法• Advection による誤差
サブピクセルの補間方法Linear 補間 → Cubic 補間© OLM Digital, Inc. 38Linear Cubic
Mac Cormack法[3]Advectionの誤差を補正する© OLM Digital, Inc. 39[3] Selle, Andrew, et al. "An unconditionally stable MacCormack method." Journal of Scientific Computing 35.2-3 (2008): 350-371.真の値+1
Mac Cormack法[3]Advectionの誤差を補正する© OLM Digital, Inc. 40[3] Selle, Andrew, et al. "An unconditionally stable MacCormack method." Journal of Scientific Computing 35.2-3 (2008): 350-371.ෝ+1真の値+1Advectionෝ+1 = (, ∆)
Mac Cormack法[3]Advectionの誤差を補正する© OLM Digital, Inc. 41[3] Selle, Andrew, et al. "An unconditionally stable MacCormack method." Journal of Scientific Computing 35.2-3 (2008): 350-371.ෝ+1真の値+1Advection誤差ෝ+1 = (, ∆)
Mac Cormack法[3]Advectionの誤差を補正する© OLM Digital, Inc. 42[3] Selle, Andrew, et al. "An unconditionally stable MacCormack method." Journal of Scientific Computing 35.2-3 (2008): 350-371.ෝ+1真の値+1誤差ෝ逆向きにAdvectionෝ+1 = (, ∆)ෝ = (ෝ+, −∆)
Mac Cormack法[3]Advectionの誤差を補正する© OLM Digital, Inc. 43[3] Selle, Andrew, et al. "An unconditionally stable MacCormack method." Journal of Scientific Computing 35.2-3 (2008): 350-371.ෝ+1 = (, ∆)ෝ+1真の値+1誤差ෝ = (ෝ+, −∆)ෝAdvection誤差2
Mac Cormack法[3]Advectionの誤差を補正する© OLM Digital, Inc. 44[3] Selle, Andrew, et al. "An unconditionally stable MacCormack method." Journal of Scientific Computing 35.2-3 (2008): 350-371.ෝ+1 = (, ∆)ෝ+1真の値+1 =12( − ෝ)ෝ = (ෝ+, −∆)ෝAdvection誤差2+1 = ෝ+1 +12( − ෝ)
Mac Cormack法[3]Advectionの誤差を補正する© OLM Digital, Inc. 45[3] Selle, Andrew, et al. "An unconditionally stable MacCormack method." Journal of Scientific Computing 35.2-3 (2008): 350-371.• 計算量はSemi Lagrangianの2回分• タイムステップに制約がつくෝ+1 = (, ∆)ෝ = (ෝ+, −∆)+1 = ෝ+1 +12( − ෝ)
Mac Cormack法[3]© OLM Digital, Inc. 46wo/Mac Cormack w/Mac Cormack
比較© OLM Digital, Inc. 47Linear補間 Cubic補間 Linear補間+Mac CormackCubic補間+Mac Cormack
計算速度の向上© OLM Digital, Inc. 48128×128 256×256 512×512 1024×1024Advection 78 311 1244 5081Projection 106 371 1574 7746シングルスレッド単位:ms
計算速度の向上© OLM Digital, Inc. 49128×128 256×256 512×512 1024×1024Advection 78 311 1244 5081Projection 106 371 1574 7746シングルスレッド128×128 256×256 512×512 1024×1024Advection 28 85 320 1263Projection 19 28 102 8554スレッド+SSEサブサンプルが重い単位:ms単位:ms
計算速度の向上速度場のみ解像度を落とす© OLM Digital, Inc. 50煙の解像度512に対して速度場の解像度を変化させたときの違い64×64 128×128 256×256 512×512
煙から炎へ© OLM Digital, Inc. 51
燃料の拡散・燃焼© OLM Digital, Inc. 52- 燃料- 熱- 煙燃料と熱を扱う
燃料の拡散・燃焼© OLM Digital, Inc. 53- 燃料- 熱- 煙燃料と熱を扱う1. エミッターから燃料を追加
燃料の拡散・燃焼© OLM Digital, Inc. 54- 燃料- 熱- 煙燃料と熱を扱う1. エミッターから燃料を追加2. 物理量を Advection
燃料の拡散・燃焼© OLM Digital, Inc. 55- 燃料- 熱- 煙1. エミッターから燃料を追加燃料と熱を扱う2. 物理量を Advection3. 燃料を消費。熱と煙を追加
燃料の拡散・燃焼© OLM Digital, Inc. 56- 燃料- 熱- 煙1. エミッターから燃料を追加燃料と熱を扱う2. 物理量を Advection3. 燃料を消費。熱と煙を追加
燃料の拡散・燃焼© OLM Digital, Inc. 57- 燃料- 熱- 煙1. エミッターから燃料を追加燃料と熱を扱う2. 物理量を Advection3. 燃料を消費。熱と煙を追加
燃料の拡散・燃焼© OLM Digital, Inc. 58- 燃料- 熱- 煙1. エミッターから燃料を追加燃料と熱を扱う2. 物理量を Advection3. 燃料を消費。熱と煙を追加
色© OLM Digital, Inc. 59燃料の残量に応じてマッピングを行う0.60.5 0.6 0.50.5 0.6 0.7 0.6 0.50.6 0.7 0.7 0.7 0.60.6 0.7 0.8 0.8 0.8 0.7 0.60.7 0.8 0.9 0.9 0.9 0.8 0.70.9 1 1 1 0.91 1
浮力燃焼による大きな熱で発生© OLM Digital, Inc. 60浮力なし 浮力あり
ノイズエミッターにノイズを乗せることでより炎らしくする© OLM Digital, Inc. 61ノイズなし ノイズあり
Divergence Term• 可燃性気体の体積の膨張の調整© OLM Digital, Inc. 62• 圧力計算時に影響を加味する燃焼の外向きの速度が増す、はず
Divergence Term• 可燃性気体の体積の膨張の調整© OLM Digital, Inc. 63• 圧力計算時に影響を加味する燃焼の外向きの速度が増す、はず
結果© OLM Digital, Inc. 64煙 燃料
今後© OLM Digital, Inc. 65
今後の方針• Particle 法との併合(FLIP)© OLM Digital, Inc. 66• GPU での実装• アップレゾリューションの手法の実装• 2D 版の AE への実装