流体の鉄人 ~ゲーム屋さんのための流体入門~ 田村 尚希 株式会社 Pyramid.

Slides:



Advertisements
Similar presentations
1 微分・ベクトル解析 (4) 講師:幹 浩文( A314) TA :西方良太 M 1 ( A305 ) A 1 03 ( 10 : 50~12 : 20 ) 【金】 https://
Advertisements

1 運動方程式の例2:重力. 2 x 軸、 y 軸、 z 軸方向の単位ベクトル(長さ1)。 x y z O 基本ベクトルの復習 もし軸が動かない場合は、座標で書くと、 参考:動く電車の中で基本ベクトルを考える場合は、 基本ベクトルは時間の関数になるので、 時間で微分して0にならない場合がある。
Imagire Day CEDEC 2009続・レンダリスト養成講座 田村 尚希 川瀬 正樹 シリコンスタジオ株式会社.
Determining Optical Flow. はじめに オプティカルフローとは画像内の明る さのパターンの動きの見かけの速さの 分布 オプティカルフローは物体の動きの よって変化するため、オプティカルフ ローより速度に関する情報を得ること ができる.
Computational Fluid Dynamics(CFD) 岡永 博夫
ゲーム開発者向け最新技術論文の解説・実装講座
豊洲 304教室 15 JULY コンピュータグラフィックス 2008年度版.
研究内容の紹介 電磁場の計算機シミュレーション 卒業研究 研究室の紹介
有限差分法による 時間発展問題の解法の基礎
Fill-in LevelつきIC分解による 前処理について
CGアニメーションの原理 基本技術 対象物体の動きや変形の設定方法 レンダリング技術
11章 ボリュームレンダリングを学ぶ 本来は目に見えない内部情報をレンダリングし可視化する技術
・力のモーメント ・角運動量 ・力のモーメントと角運動量の関係
情報工学科 06A2055 平塚 翔太 Hiratsuka Shota
3DCG技法についての 調査報告 ○○県立○○高等学校 1年は組 グループ0.
Finger patternのブロック化による 陰的wavelet近似逆行列前処理の 高速化
2009年8月27日 熱流体力学 第14回 担当教員: 北川輝彦.
剛体の物理シミュレーション は難しい? 佐藤研助手 長谷川晶一.
「Self-Organizing Map 自己組織化マップ」 を説明するスライド
スペクトル法による数値計算の原理 -一次元線形・非線形移流問題の場合-
常微分方程式と偏微分方程式 1.常微分方程式 独立変数が一個のもの 振動の運動方程式 2.偏微分方程式 独立変数が二個以上のもの
4. 双曲型偏微分方程式の数値解法入門 双曲型の偏微分方程式(partial differential equation, PDE)の最も簡単なの例として1変数の線形PDE    を考える; この方程式の意味は大雑把に言って、Δx の セル内に流入流出する f の量がフラックス その結果セル内で f.
大阪工業大学 情報科学部 情報システム学科 宇宙物理研究室 B 木村悠哉
IT入門B2 ー 連立一次方程式 ー.
周期境界条件下に配置されたブラックホールの変形
4.2 連立非線形方程式 (1)繰返し法による方法
反応性流体力学特論  -燃焼流れの力学- 燃焼の流体力学 4/22,13 燃焼の熱力学 5/13.
流体のラグランジアンカオスとカオス混合 1.ラグランジアンカオス 定常流や時間周期流のような層流の下での流体の微小部分のカオス的運動
理学部情報科学科 金田研究室 指導教官 金田 康正 工藤 誠
高山建志 五十嵐健夫 テクスチャ合成の新たな応用と展開 k 情報処理 vol.53 No.6 June 2012 pp
ラグランジュ微分と オイラー微分と 移流項の 三者の関係を直感で理解する方法
2.伝送線路の基礎 2.1 分布定数線路 2.1.1 伝送線路と分布定数線路 集中定数回路:fが低い場合に適用
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
Lorenz modelにおける 挙動とそのカオス性
計算アルゴリズム 計算理工学専攻 張研究室 山本有作.
計算アルゴリズム 計算理工学専攻 張研究室 山本有作.
文献名 “Performance Tuning of a CFD Code on the Earth Simulator”
応用数学 計算理工学専攻 杉原研究室 山本有作.
圧力発展格子ボルツマン法による大規模気液二相流GPUコードの開発 ならびに多孔体浸潤液滴シミュレーション
Bottom-UpとTop-Down アプローチの統合による 単眼画像からの人体3次元姿勢推定
スペクトル法の一部の基礎の初歩への はじめの一歩
画像処理工学 2013年1月23日 担当教員 北川 輝彦.
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(NlogN)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似法
独立成分分析 5 アルゴリズムの安定性と効率 2007/10/24   名雪 勲.
Relativistic Simulations and Numerical Cherenkov
逐次伝達法による 散乱波の解析 G05MM050 本多哲也.
Poisson Image Editing SIGGRAPH 2003
予測に用いる数学 2004/05/07 ide.
(昨年度のオープンコースウェア) 10/17 組み合わせと確率 10/24 確率変数と確率分布 10/31 代表的な確率分布
変換されても変換されない頑固ベクトル どうしたら頑固になれるか 頑固なベクトルは何に使える?
階層的境界ボリュームを用いた 陰関数曲面の高速なレイトレーシング法
速度ポテンシャルと 流線関数を ベクトルで理解する方法
Chapter 26 Steady-State Molecular Diffusion
文化財のデジタル保存のための 偏光を用いた透明物体形状計測手法
岩澤全規 理化学研究所 計算科学研究機構 粒子系シミュレータ研究チーム 2015年7月22日 AICS/FOCUS共催 FDPS講習会
4. システムの安定性.
Bottom-UpとTop-Down アプローチの組み合わせによる 単眼画像からの人体3次元姿勢推定
逆運動学:手首自由度 運動学:速度、ャコビアン 2008.5.27
「マイグレーションを支援する分散集合オブジェクト」
Poisson Image Editing SIGGRAPH 2003
ガウス分布における ベーテ近似の理論解析 東京工業大学総合理工学研究科 知能システム科学専攻 渡辺研究室    西山 悠, 渡辺澄夫.
メモリ使用量の少ないGCR法の提案 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
相の安定性と相転移 ◎ 相図の特徴を熱力学的考察から説明 ◎ 以下の考察
力覚インタラクションのための 物理ベースモデリング
How shall we do “Numerical Simulation”?
応用数学 計算理工学専攻 張研究室 山本有作.
熱伝導方程式の導出 熱伝導:物質の移動を伴わずに高温側から低温側へ熱が伝わる現象 対流、輻射 フーリエの法則Fourier’s law:
Presentation transcript:

流体の鉄人 ~ゲーム屋さんのための流体入門~ 田村 尚希 株式会社 Pyramid

0.会社紹介 <弊社の説明> 設立  2001年9月(5年目) 従業員 34名(内プログラマ19名) コンシューマゲーム機を中心に開発を行っている 

0.会社紹介 <タイトル> DATA CARDDASS DRAGON BALL Z SHINING FORCE NEO DRAGONBALL Z BUDOKAI2(GAMECUBE port) GUNSLINGER GIRL SEVEN SAMURAI 20XX THE WILDRINGS DOUBLE STEAL   ・・その他、自社コンテンツ開発 

0.会社紹介 <開発> XP,SCRUM 等のアジャイル開発プロセスを採用している

0.会社紹介 <運営> 受託業務 ※運転資金の調達 自社コンテンツ開発 ※自社コンテンツの発信 技術研究開発 ※最先端技術の研究・共有・習得、及び発表 

発表の流れ 1.概要 2.微分 3.Stable Fluids 4.応用 5.まとめ

発表の流れ 1.概要 2.微分 3.Stable Fluids 4.応用 5.まとめ

1.概要 ~はじめに~ 本セッションの内容 ゲーム開発者向けの流体力学の解説

1.概要 ~背景~ 本セッションの背景 流体力学を用いて、写実的なCGを作成する技術が発展

1.概要 ~背景~ 「Visual Simulation of Smoke」 [Fedkiw et al. SIGGRAPH2001]

1.概要 ~背景~ 「Animation and Rendering of Complex Water 1.概要 ~背景~ 「Animation and Rendering of Complex Water Surfaces」 [Enright et al. SIGGRAPH2002]

1.概要 ~背景~ 「Rigid Fluid : Animating the Interplay Between Rigid 1.概要 ~背景~ 「Rigid Fluid : Animating the Interplay Between Rigid bodies and Fluid」 [Carlson et al. SIGGRAPH2004]

1.概要 ~背景~ 特徴 既存技術では不可能なリアルな視覚表現・演出が可能 現在は非リアルタイム  (1フレームの計算時間:数秒~数十分)

1.概要 ~概要~ ゲーム利用への課題 1.複雑な数学の理解 帰る頃には、すらすらです!! 2.多大な計算コストの解消 流体理論を丁寧に解説 1.概要 ~概要~ ゲーム利用への課題 1.複雑な数学の理解 帰る頃には、すらすらです!!  帰るころには、ばっちり分かります 流体理論を丁寧に解説 2.多大な計算コストの解消 次世代機の処理能力 (+皆様の処理能力) 

煙ではなく、(空気の)流れそのものを計算 1.概要 ~概要~ 流体シミュレーションの概念 煙ではなく、(空気の)流れそのものを計算

1.概要 ~概要~ 流体計算の解き方 1.ボクセルベース 2.パーティクルベース

1.概要 ~概要~ ボクセルベース

1.概要 ~概要~ パーティクルベース

1.概要 ~概要~ 長所・短所 ボクセルベース パーティクルベース 長所:アルゴリズムの理解・実装が容易 1.概要 ~概要~ 長所・短所 ボクセルベース 長所:アルゴリズムの理解・実装が容易 短所:単位ボクセルよりも小さな流れが欠落 パーティクルベース 長所:局所的な細かな動きに対応できる 短所:パーティクルの数が少ないとノイズが発生

1.概要 ~目的~ 本セッションの目的 ボクセルベースの流体シミュレーションの基礎理論・実装方法の理解 (一部リアルタイム処理) 1.概要 ~目的~ 本セッションの目的 ボクセルベースの流体シミュレーションの基礎理論・実装方法の理解 (一部リアルタイム処理) 皆さんが流体シミュレーションに興味を 持つ機会になれば理想

発表の流れ 1.概要 2.微分 3.Stable Fluids 4.応用 5.まとめ

2.微分 ~スカラー・ベクトル~ スカラー・ベクトル スカラー ベクトル ある位置に対して値が一つ定まる量 (ex.温度) 2.微分 ~スカラー・ベクトル~ スカラー・ベクトル スカラー ある位置に対して値が一つ定まる量 (ex.温度) ベクトル スカラーをいくつか並べたもの (ex.速度)

2.微分 ~スカラー・ベクトル~ スカラー場

2.微分 ~スカラー・ベクトル~ ベクトル場

2.微分 ~微分~ 微分 ・微分 ・偏微分 ・勾配 ・発散 ・ラプラシアン ・微分 ・偏微分 ・勾配 ・発散 ・ラプラシアン ・微分 2.微分 ~微分~ 微分 ・微分 ・偏微分 ・勾配 ・発散 ・ラプラシアン ・微分 ・偏微分 ・勾配 ・発散 ・ラプラシアン ・微分 ・偏微分 ・勾配 ・発散 ・ラプラシアン ・微分 ・偏微分 ・勾配 ・発散 ・ラプラシアン ・微分 ・偏微分 ・勾配 ・発散 ・ラプラシアン 非圧縮性流体のNavier・Stokes方程式

2.微分 ~微分~ 微分

2.微分 ~微分~ 微分の差分近似

2.微分 ~偏微分~ 偏微分 x軸方向 y軸方向

2.微分 ~偏微分~ 偏微分の差分近似

2.微分 ~まとめ~ ・微分  微小区間における傾き ・偏微分  各軸方向の微分

2.微分 ~勾配~ 勾配(グラディエント) スカラーに作用して で計算されるベクトルを「勾配」と呼ぶ

2.微分 ~勾配~ 勾配の概念 勾配は 各位置において、変化が最も大きくなる方向を示すベクトル 変化が大きいほど、ベクトルの絶対値も大きい

2.微分 ~勾配~ 勾配の差分近似

2.微分 ~勾配~ 勾配の差分近似

2.微分 ~発散~ 発散(ダイバージェンス) ベクトルに作用して で計算されるスカラーを「発散」と呼ぶ

2.微分 ~発散~ 発散の概念

2.微分 ~発散~ 発散の概念

2.微分 ~発散~ 発散の概念

2.微分 ~発散~ 発散の概念 微小体積において、流出する量と流入する量との差を表す物理量 正ならば、場が対象領域から外部に流出 2.微分 ~発散~ 発散の概念 微小体積において、流出する量と流入する量との差を表す物理量 正ならば、場が対象領域から外部に流出 負ならば、場が外部から対象領域に流入

2.微分 ~発散~ 発散の差分近似

2.微分 ~発散~ 発散の差分近似

2.微分 ~まとめ~ ・勾配  変化が最も大きい方向を示すベクトル

2.微分 ~まとめ~ 微小空間の流入・流出量の差を表すスカラー ・発散 正ならば、場が対象領域から外部に流出 2.微分 ~まとめ~ ・発散  微小空間の流入・流出量の差を表すスカラー 正ならば、場が対象領域から外部に流出 負ならば、場が外部から対象領域に流入

2.微分 ~ラプラシアン~ ラプラシアン スカラーに作用して で計算されるスカラーを「ラプラシアン」と呼ぶ

2.微分 ~ラプラシアン~ ラプラシアンの概念

2.微分 ~ラプラシアン~ ラプラシアンの概念

2.微分 ~ラプラシアン~ ラプラシアンの概念

2.微分 ~ラプラシアン~ ラプラシアンの概念

2.微分 ~ラプラシアン~ ラプラシアンの概念

2.微分 ~ラプラシアン~ ラプラシアンの概念 ラプラシアンとは、周囲との相対的な差を表す物理量 周りと比べて小さければプラス 2.微分 ~ラプラシアン~ ラプラシアンの概念 ラプラシアンとは、周囲との相対的な差を表す物理量  自分が周りと比べて大きければマイナス 周りと比べて小さければプラス

2.微分 ~ラプラシアン~ ラプラシアンの概念 三次元スカラー場のラプラシアン

2.微分 ~まとめ~ ・微分  微小区間における傾き ・偏微分  各軸方向の微分

2.微分 ~まとめ~ ・勾配  変化が最も大きい方向を示すベクトル

2.微分 ~まとめ~ 微小空間の流入・流出量の差を表すスカラー ・発散 正ならば、場が対象領域から外部に流出 2.微分 ~まとめ~ ・発散  微小空間の流入・流出量の差を表すスカラー 正ならば、場が対象領域から外部に流出 負ならば、場が外部から対象領域に流入

2.微分 ~まとめ~ 周りとの相対的な差を表すスカラー ・ラプラシアン 大きければマイナス 小さければプラス 自分が周りと比べて 2.微分 ~まとめ~ ・ラプラシアン  周りとの相対的な差を表すスカラー   自分が周りと比べて   大きければマイナス   自分が周りと比べて   小さければプラス

発表の流れ 1.概要 2.微分 3.Stable Fluids 4.応用 5.まとめ

3.Stable Fluids ~概要~ 「Stable Fluids」 [Stam, SIGGRAPH 1999] ボクセルベースの手法 非圧縮流体を対象 近年の流体計算を使った論文で広く利用される手法 Navier-Stokes方程式を4Stepに分けて計算

3.Stable Fluids ~概要~ Navier-Stokes方程式の概念 速度場 速度場の時間変化を表す式 表3-1参照

3.Stable Fluids ~概要~ Navier-Stokes方程式の概念 非圧縮条件 表3-1参照

3.Stable Fluids ~外力~ 外力:風、重力などの外からの力 表3-1参照

3.Stable Fluids ~移流~ 移流 : 流れに沿って移動する効果 表3-1参照

3.Stable Fluids ~拡散~ 拡散 : 速度場を均一化しようとする効果 表3-1参照

3.Stable Fluids ~圧力~ 圧力 : 非圧縮条件を満たすように働く力 表3-1参照

3.Stable Fluids ~概要~ Navier-Stokes方程式の概念 表3-1参照

3.Stable Fluids ~概要~ Stable Fluidsの概念 微小時間 を考え、離散的に 速度場の時間変化を計算 全ての要因を一度に考えるのは難しい 表2参照

3.Stable Fluids ~概要~ Stable Fluidsの概念 step4 step2 step3 step1 step4 表2参照

3.Stable Fluids ~外力~ Stable Fluids : step1 外力 step1 表3-2参照

3.Stable Fluids ~外力~ 外力:風、重力などの外からの力 表3-2参照

3.Stable Fluids ~外力~ 外力の計算方法 表3-2参照

3.Stable Fluids ~外力~ step1の擬似コード 表3-2参照 step1(u{x,y,z}, u{x,y,z}_force, u{x,y,z}_step1 ) { for(i=0; i<(Xvoxel_num);++i) { for(j=0; j<(Yvoxel_num);++j) { for(k=0; k<(Zvoxel_num);++k) { ux_step1[i][j][k] = ux[i][j][k] + dt * ux_force[i][j][k]; uy_step1[i][j][k] = uy[i][j][k] + dt * uy_force[i][j][k]; uz_step1[i][j][k] = uz[i][j][k] + dt * uz_force[i][j][k]; } } } } 表3-2参照

3.Stable Fluids ~移流~ Stable Fluids : step2 移流 step2 表3-3参照

3.Stable Fluids ~移流~ 移流 : 流れに沿って移動する効果 表3-3参照

3.Stable Fluids ~移流~ 一次元の移流 表3-3参照

3.Stable Fluids ~移流~ 一次元の移流 表3-3参照

3.Stable Fluids ~移流~ 一次元の移流 f が速度uで移動する様子を表す 表3-3参照

3.Stable Fluids ~移流~ 多次元の移流 (一次元) (二次元) (三次元) 表3-3参照

3.Stable Fluids ~移流~ 三次元の移流 表3-3参照

3.Stable Fluids ~移流~ 多次元の移流 →スカラー  が速度場 によって移動 表3-3参照

3.Stable Fluids ~移流~ 多次元の移流 →スカラー  が速度場 によって移動 →     が速度場 によって移動 表3-3参照

3.Stable Fluids ~移流~ 多次元の移流 表3-3参照

3.Stable Fluids ~移流~ semi-Lagrange法(Stable Fluidsの移流解法) 前後からlinear補間 表3-3参照

3.Stable Fluids ~移流~ 三次元のsemi-Lagrange法 trilinear補間 表3-3参照

3.Stable Fluids ~移流~ 三次元のsemi-Lagrange法 表3-3参照

3.Stable Fluids ~移流~ step2の擬似コード 表3-3参照 step2( u{x,y,z}_step1, u{x,y,z}_step2 ) { for( i, j, k=0; i, j, k < (X,Y,Zvoxel_num); ++i, j, k) { x = i - dt * ux_step1[i][j][k]; y = j - dt * uy_step1[i][j][k]; z = k - dt * uz_step1[i][j][k]; ux_step2[i][j][k] = trilinear( ux_step1, x, y, z ); uy_step2[i][j][k] = trilinear( uy_step1, x, y, z ); uz_step2[i][j][k] = trilinear( uz_step1, x, y, z ); } } 表3-3参照

3.Stable Fluids ~拡散~ Stable Fluids : step3 拡散 step3 表3-4参照

3.Stable Fluids ~拡散~ 拡散 : 速度場を均一化しようとする効果 表3-4参照

3.Stable Fluids ~拡散~ 拡散方程式の概念 (拡散方程式) 場が均一化していく 表3-4参照

3.Stable Fluids ~拡散~ 拡散の計算方法 (拡散方程式) 表3-4参照

3.Stable Fluids ~拡散~ 拡散の計算方法 表3-4参照

3.Stable Fluids ~拡散~ 拡散の計算方法 ラプラシアン  は前頁のような行列 で記述可能 表3-4参照

3.Stable Fluids ~拡散~ 連立方程式 拡散の計算方法 は と同じ形 要素数nは、非常に大きい (i.e. 三次元の場合n3) は     と同じ形 連立方程式 要素数nは、非常に大きい (i.e. 三次元の場合n3) 表3-4参照

3.Stable Fluids ~拡散~ ガウス・ザイデル法 表3-4参照

3.Stable Fluids ~拡散~ ガウス・ザイデル法 表3-4参照

3.Stable Fluids ~拡散~ ガウス・ザイデル法 右辺 に適当な初期値を設定し、反復計算 右辺   に適当な初期値を設定し、反復計算 収束条件:行列Aの対角成分が0ではない。        行列Aの対角成分が他の成分より大きい 表3-4参照

3.Stable Fluids ~拡散~ step3の擬似コード(1/2) 表3-4参照 Gauss-Seidel( float* in, float*out ) { a = dt * ν / ( Δx*Δx ); for ( iter=0; iter < (iter_num(i.e. 20)); ++iter) { for ( i, j, k=0; i, j, k < (X,Y,Zvoxel_num); ++i, j, k) { out[i][j][k] = ( in[i][j][k] + a * ( out[i+1][j][k] + out[i-1][j][k] + out[i][j+1][k] + out[i][j-1][k] + out[i][j][k+1] + out[i][j][k-1] )) / ( 1+ 6*a ) } } } 表3-4参照

3.Stable Fluids ~拡散~ step3の擬似コード(2/2) 表3-4参照 step3( u{x,y,z}_step2, u{x,y,z}_spte3 ) { Gauss-Seidel( ux_step2, ux_step3 ); Gauss-Seidel( uy_step2, uy_step3 ); Gauss-Seidel( uz_step2, uz_step3 ); } 表3-4参照

3.Stable Fluids ~拡散~ Stable Fluids : step4 圧力 step4 step4 表3-5参照

3.Stable Fluids ~圧力~ 圧力 : 非圧縮条件を満たすように働く力 表3-5参照

3.Stable Fluids ~圧力~ 圧力 : 非圧縮条件を満たすように働く力 表3-5参照

3.Stable Fluids ~圧力~ 圧力の計算方法 両辺、発散を計算 表3-5参照

3.Stable Fluids ~圧力~ 圧力の計算方法 非圧縮条件より 表3-5参照

3.Stable Fluids ~圧力~ 圧力の計算方法 圧力のスカラー場  を計算 の勾配を計算し、   から減算 表3-5参照

3.Stable Fluids ~圧力~ 圧力の計算方法 拡散と同じく、ラプラシアン は行列 で記述可能 は と同じ形 →ガウス・ザイデル法 拡散と同じく、ラプラシアン  は行列 で記述可能 は     と同じ形 →ガウス・ザイデル法 表3-5参照

3.Stable Fluids ~圧力~ step4の擬似コード(1/3) 表3-5参照 step4( u{x,y,z}_step3, u{x,y,z}_step4 ) { for( i, j, k=0; i, j, k < (X,Y,Zvoxel_num); ++i, j, k) { div[i][j][k] = ( ) / ( 2*Δx ); ux_step3[i+1][j][k] - ux_step3[i-1][j][k] + uy_step3[i][j+1][k] - uy_step3[i][j-1][k] + uz_step3[i][j][k+1] - uz_step3[i][j][k-1] } 表3-5参照

3.Stable Fluids ~圧力~ step4の擬似コード(2/3) 表3-5参照 a = (Δx*Δx ); for ( iter=0; iter < (iter_num(i.e. 20)); ++iter) { for ( i, j, k=0; i, j, k < (X,Y,Zvoxel_num); ++i, j, k) { p[i][j][k] = ( -a*div[i][j][k] + ( p[i+1][j][k] + p[i-1][j][k] + p[i][j+1][k] + p[i][j-1][k] + p[i][j][k+1] + p[i][j][k-1] )) / 6; } } 表3-5参照

3.Stable Fluids ~圧力~ step4の擬似コード(3/3) 表3-5参照 for( i, j, k=0; i, j, k < (X,Y,Zvoxel_num); ++i, j, k) { ux_step4[i][j][k] = ux_step3[i][j][k] - (p[i+1][j][k] – p[i-1][j][k]) / ( 2*Δx ); uy_step4[i][j][k] = uy_step3[i][j][k] - (p[i][j+1][k] – p[i][j-1][k]) / ( 2*Δy ); uz_step4[i][j][k] = uz_step3[i][j][k] - (p[i][j][k+1] – p[i][j][k-1]) / ( 2*Δz ); } } 表3-5参照

3.Stable Fluids ~境界~ 境界の扱い 速度:   境界で速度0 シミュレーションボクセル 圧力:  微分値が0 境界ボクセル

3.Stable Fluids ~まとめ~ Navier-Stokes方程式 表3-1参照

発表の流れ 1.概要 2.微分 3.Stable Fluids 4.応用 5.まとめ

4.応用 ~概要~ 応用 煙 煙の濃度計算 煙の可視化

4.応用 ~煙の濃度計算~ 非圧縮流体のNavier-Stokes方程式 煙の方程式 表4参照

4.応用 ~煙の濃度計算~ 外力:煙の供給などの外からの影響 表4参照

4.応用 ~煙の濃度計算~ 移流:流れに沿って移動する効果 表4参照

4.応用 ~煙の濃度計算~ 拡散 : 濃度を均一化しようとする効果 表4参照

4.応用 ~煙の濃度計算~ 煙の変化の概念 step2 step3 step1 表4参照

4.応用 ~煙の外力~ 煙の変化の概念 step1 表4参照

4.応用 ~煙の外力~ 外力の計算方法 表4参照

4.応用 ~煙の外力~ step1の擬似コード 表4参照 step1(d, d_force, d_step1 ) { 4.応用 ~煙の外力~ step1の擬似コード step1(d, d_force, d_step1 ) { for( i, j, k=0; i, j, k < (X,Y,Zvoxel_num); ++i, j, k) { d_step1[i][j][k] = d[i][j][k] + dt * d_force[i][j][k]; } } 表4参照

4.応用 ~煙の移流~ 煙の変化の概念 step2 表4参照

4.応用 ~煙の移流~ 多次元の移流 →スカラー  が速度場 によって移動 表4参照

4.応用 ~煙の移流~ 三次元のsemi-Lagrange法 表4参照

4.応用 ~煙の移流~ step2の擬似コード 表4参照 step2( d_step1, d_step2 ) { 4.応用 ~煙の移流~ step2の擬似コード step2( d_step1, d_step2 ) { for( i, j, k=0; i, j, k < (X,Y,Zvoxel_num); ++i, j, k) { x = i - dt * ux[i][j][k]; y = j - dt * uy[i][j][k]; z = k - dt * uz[i][j][k]; d_step2[i][j][k] = trilinear( d_step1, x, y, z ); } } 表4参照

4.応用 ~煙の拡散~ 煙の変化の概念 step3 表4参照

4.応用 ~煙の拡散~ 拡散方程式の概念 (拡散方程式) 場が均一化していく 表4参照

4.応用 ~煙の拡散~ 拡散の計算方法 (拡散方程式) 表4参照

4.応用 ~煙の拡散~ 拡散の計算方法 は     と同じ形 →ガウス・ザイデル法 表4参照

4.応用 ~煙の拡散~ step3の擬似コード(1/2) 表4参照 Gauss-Seidel( float* in, float*out ) 4.応用 ~煙の拡散~ step3の擬似コード(1/2) Gauss-Seidel( float* in, float*out ) { a = dt * κ / ( Δx*Δx ); for ( iter=0; iter < (iter_num(i.e. 20)); ++iter) { for ( i, j, k=0; i, j, k < (X,Y,Zvoxel_num); ++i, j, k) { out[i][j][k] = ( in[i][j][k] + a * ( out[i+1][j][k] + out[i-1][j][k] + out[i][j+1][k] + out[i][j-1][k] + out[i][j][k+1] + out[i][j][k-1] )) / ( 1+ 6*a ) } } } 表4参照

4.応用 ~煙の拡散~ step3の擬似コード(2/2) 表4参照 step3( d_step2, d_spte3 ) { 4.応用 ~煙の拡散~ step3の擬似コード(2/2) step3( d_step2, d_spte3 ) { Gauss-Seidel( d_step2, d_step3 ); } 表4参照

4.応用 ~煙の可視化~ 煙の可視化 シミュレーション結果(煙の濃度)は、 ボクセルデータ(ボリュームデータ) 4.応用 ~煙の可視化~ 煙の可視化 シミュレーション結果(煙の濃度)は、    ボクセルデータ(ボリュームデータ) ボリュームレンダリングを行い可視化 レイキャスティング法、スプラッティング法 などを利用

4.応用 ~煙の可視化~ レイキャスティング法 Δs screen

4.応用 ~煙の可視化~ レイキャスティング法 ボクセルの色C(s3)*不透明度α(s3) *透明度(1-α(s2))*透明度(1-α(s1)) ボクセルの色C(s2)*不透明度α(s2) *透明度(1-α(s1)) ボクセルの色C(s1)*不透明度α(s1)

4.応用 ~煙の可視化~ GPUを利用したボリュームレンダリング スライス(ポリゴン)を一定間隔に配置 ボリュームデータをfetchし描画 4.応用 ~煙の可視化~ GPUを利用したボリュームレンダリング スライス(ポリゴン)を一定間隔に配置 ボリュームデータをfetchし描画 alpha blendingを用いて加算

1.概要 ~概要~ GPUを利用したボリュームレンダリング

4.応用 ~応用~ 応用 煙のシミュレーション 速度場の計算 → 煙の濃度を移流・拡散 火のシミュレーション 速度場の計算 4.応用 ~応用~ 応用 煙のシミュレーション 速度場の計算 → 煙の濃度を移流・拡散 火のシミュレーション 速度場の計算 → 熱・温度を移流・拡散 水のシミュレーション 速度場の計算 → 水表面(水表面からの距離)を移流・拡散

発表の流れ 1.概要 2.微分 3.Stable Fluids 4.応用 5.まとめ

5.まとめ ~まとめ~ まとめ 流体の基礎理論を解説 非圧縮性流体のNavier-Stokes方程式の説明 ボクセルベースの解法について説明 5.まとめ ~まとめ~ まとめ 流体の基礎理論を解説 非圧縮性流体のNavier-Stokes方程式の説明 ボクセルベースの解法について説明 Stable Fluidsの解説

5.まとめ ~まとめ~ 非圧縮性流体のNavier-Stokes方程式 外力 移流 拡散 圧力 +非圧縮条件

5.まとめ ~まとめ~ Stable Fluids

5.まとめ ~高速化~ 高速化の方向性 GPU、SIMDの利用 大部分は各ボクセル独立→並列化 グリッドサイズの最小化 5.まとめ ~高速化~ 高速化の方向性 GPU、SIMDの利用  大部分は各ボクセル独立→並列化 グリッドサイズの最小化  三次元の処理コストはO(n3)

5.まとめ ~最後に~ 質問・ご意見は以下までお寄せ下さい Pyramid HP - http://www.pyramid-inc.net/ 5.まとめ ~最後に~ 質問・ご意見は以下までお寄せ下さい Pyramid HP - http://www.pyramid-inc.net/ 近日中にPowerPointファイルをUpします E-mail                    rd@pyramid-inc.net

5.まとめ ~参考文献~ 参考文献 Real-Time Fluid Dynamics for Games GPU Gems 5.まとめ ~参考文献~ 参考文献 Real-Time Fluid Dynamics for Games   Stam氏自らStable Fluidsを解説   二次元のStable Fluidsのソースコード付き http://www.dgp.toronto.edu/people/stam/reality/   Research/pub.html GPU Gems 二次元のStable Fluidsの解説+GPU実装(38章)   GPUを用いたボリュームレンダリングの解説(39章)

5.まとめ ~参考文献~ 参考文献(Paper) 今回紹介した大本の論文 Stable Fluids, SIGGRAPH 1999 5.まとめ ~参考文献~ 参考文献(Paper) 今回紹介した大本の論文 Stable Fluids, SIGGRAPH 1999 http://www.dgp.toronto.edu/people/stam/stam.html よりDL可能 煙関係 Visual Simulation of Smoke, SIGGRAPH 2001 http://graphics.stanford.edu/~fedkiw/よりDL可能

5.まとめ ~参考文献~ 参考文献(Paper) 水関係 5.まとめ ~参考文献~ 参考文献(Paper) 水関係 Animation and Rendering of Complex Water Surfaces, SIGGRAPH2002 Practical Animation of Liquids, SIGGRAPH 2001 炎関係 Physically Based Modeling and Animation of Fire, SIGGRAPH 2002 http://graphics.stanford.edu/~fedkiw/よりDL可能

5.まとめ ~参考文献~ 参考文献(書籍) Javaによる流体・熱流動の数値シミュレーション 5.まとめ ~参考文献~ 参考文献(書籍) Javaによる流体・熱流動の数値シミュレーション  峯村 吉泰/著 森北出版 ISBN4-627-91751-1 ・基礎から実際のソースコードまで幅広く解説 粒子法    越塚誠一/著 丸善 ISBN4-621-07522-5 ・パーティクルベースの流体解析手法の解説

5.まとめ ~参考文献~ 参考文献(Homepage) Ronald Fedkiw氏のHomepage Jos Stam氏のHomepage 5.まとめ ~参考文献~ 参考文献(Homepage) Ronald Fedkiw氏のHomepage http://graphics.stanford.edu/~fedkiw/ Jos Stam氏のHomepage http://www.dgp.toronto.edu/people/stam/stam.html Tim Rowley氏のHomepage(論文リンク集) http://www.cs.brown.edu/~tor/

5.まとめ ~終わり~ ご清聴ありがとうございました

6.Appendix ~表1.微分のまとめ~ ・微分  微小区間における傾き ・偏微分  各軸方向の微分

6.Appendix ~表1.微分のまとめ~ ・勾配  変化が最も大きい方向を示すベクトル

6.Appendix ~表1.微分のまとめ~ 微小空間の流入・流出量の差を表すスカラー ・発散 正ならば、場が対象領域から外部に流出  微小空間の流入・流出量の差を表すスカラー 正ならば、場が対象領域から外部に流出 負ならば、場が外部から対象領域に流入

6.Appendix ~表1.微分のまとめ~ 周りとの相対的な差を表すスカラー ・ラプラシアン 大きければマイナス 小さければプラス  周りとの相対的な差を表すスカラー   自分が周りと比べて   大きければマイナス   自分が周りと比べて   小さければプラス

6.Appendix ~表2.Navier Stokes~ 非圧縮条件

6.Appendix ~表2.Stable Fluids~

6.Appendix ~記号表~ 表3-1 「Stable Fluidsの概念」までで使用する記号

6.Appendix ~記号表~ 表3-2 「step1:外力」で使用する記号

6.Appendix ~記号表~ 表3-3 「step2:移流」で使用する記号

6.Appendix ~記号表~ 表3-4 「step3:拡散」で使用する記号 x x

6.Appendix ~記号表~ 表3-5 「step4:圧力」で使用する記号

6.Appendix ~記号表~ 表4 「煙の濃度計算」で使用する記号