手描き感を再現する
ペイントシミュレータの最新研究紹介
大河原 昭
ak-ogawara@siliconstudio.co.jp

本講演でお話すること• ペイントシミュレータに関する研究の紹介• ペイントシミュレータの最新研究論文紹介2

発表の構成1. ペイントシミュレータとは?
2. ペイントシミュレータに関する研究の紹介
3. 最新研究の説明
4. 結果
5. 今後の課題とまとめ

3

発表の構成1. ペイントシミュレータとは?
2. ペイントシミュレータに関する研究の紹介
3. 最新研究の説明
4. 結果
5. 今後の課題とまとめ

4

ペイントシミュレータとは?
• 絵を描く行為のコンピュータ上での再現– 利点• 現実の描き方の技法をそのまま生かせる• Undo/Redo, コピー• 描いた手順をすべて記録

5ペイントシミュレータとは?
• 種類
– 線画
– 水墨画
– 水彩画
– クレヨン画– 油絵
6

油絵の特徴• 絵具の3次元形状– 盛り上がり• 絵具の混ざり具合– 毛先による影響– 絵具同士7

市販ソフトウェア• 絵具の凹凸変化が単調• 各ストロークによる絵具の混ざり具合の表現が不十分
8

ペイントシミュレータの制約• ブラシ、絵具、キャンバスの複雑な相互作用を再現したい– ブラシの動き、絵具の移流• リアルタイムに処理– タイムステップが大きい• シミュレーションが不安定– 計算資源が限られている• 正確な計算ができない
9発表の構成1. ペイントシミュレータとは?
2. ペイントシミュレータに関する研究の紹介
3. 最新研究の説明
4. 結果
5. 今後の課題とまとめ

10

流体モデル• グリッドベース– Height field, 3次元グリッド– 表現力が不十分[Baxter et al. 2004a] [Baxter et al. 2004b]• パーティクルベース– そのままでは使いづらい11

ブラシのシミュレーション• スケルトン[Chu et al. 2002]• Subdivision surface• Footprint[Baxter and Lin. 2004]• ブラシ全体の形状だけを考慮[Chu et al. 2010]12

毛先を１本ずつシミュレーション• 非慣性座標系で制御• ペイント処理は２次元[DiVerdi et al. 2010]• 毛先同士のインタラクションは考慮せず

13

最新研究
Wetbrush: GPU-based 3D Painting Simulation at the Bristle level
Zhili Chen Byungmoon Kim Daichi Ito Huamin Wang

• ブラシの毛先を1本ずつシミュレーション– 毛先⇔毛先、毛先⇔流体• ハイブリッド流体モデル– パーティクル
– ３次元グリッド
14

最新研究のアプローチ• 毛先を１本ずつシミュレーション– インタラクション• 毛先同士、毛先⇔流体
ブラシの周りはパーティクル• ハイブリッド流体モデル– パーティクル,３次元グリッド
他はグリッド15

結果

絵具が毛先に粘着キャンバス上の絵具を引き伸ばす
毛先上の絵具を引き伸ばす
16

市販ソフトウェアとの比較

17

最新研究のポイント
柄の動き• 非慣性座標系での慣性力の調整– 大きなタイムステップでも安定• 流体モデルの組み合わせ

毛先も追従
ブラシグリッド– サブピクセルレベルのリッチな表現– 流体モデル間でのやり取り
パーティクル18

発表の構成1. ペイントシミュレータとは?
2. ペイントシミュレータに関する研究の紹介
3. 最新研究の説明
4. 結果
5. 今後の課題とまとめ

19

発表の構成1. ペイントシミュレータとは?
2. ペイントシミュレータに関する研究の紹介
3. 最新研究の説明
–

全体の流れ

–

ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り
20

発表の構成1. ペイントシミュレータとは?
2. ペイントシミュレータに関する研究の紹介
3. 最新研究の説明
–

全体の流れ

–

ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り
21

全体の流れグリッド

ユーザの入力レンダリングブラシシミュレーション
パーティクル

22

全体の流れ• ブラシのシミューレション– どう動かすかブラシ: パーティクル: サンプル点• 流体シミュレーション– グリッドとパーティクル• 流体のやり取り– ブラシのサンプル点 ⇔ パーティクル– パーティクル ⇔ グリッド
23

グリッドシミュレーション
速度ベクトル• 流れそのものを計算– 速度場𝒖𝒖 (ベクトル場)• 毎ステップの更新– 速度場 𝒖𝒖𝑡𝑡 → 𝒖𝒖𝑡𝑡+1

速度場𝒖𝒖– 速度場𝒖𝒖でリソースも移動• 絵具の色、質量24パーティクルシミュレーション• 毎ステップの更新– 位置• += Δ𝑡𝑡 × 速度ベクトル: 速度: 加速度

重力– 速度ベクトル• += Δ𝑡𝑡 × 加速度ベクトル

摩擦25

流体モデルの比較• グリッド• パーティクル

– 数値拡散しやすい– 数値拡散しない– 速い動きに追従できない– 速い動きに追従できる

– 低負荷

– 高負荷

26

なぜグリッドとパーティクルを組み合わせるのか？
• どちらか一方ではどうなるか– グリッドのみ• ぼやけた見た目– パーティクルのみ• 多量のパーティクルが必要• 計算負荷的につらい• シミュレーション箇所に応じて、組み合わせる27

流体とブラシの関係• ブラシの周りはパーティクル– 早い動きブラシ: パーティクル: サンプル点– 細かいシミュレーション• ブラシから離れたらグリッド– 遅い動き28

グリッドとパーティクルの組み合わせ• グリッドのみ– 数値拡散しやすい– ぼやけた見た目

グリッドのみグリッドとパーティクル29

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
–

全体の流れ

–

ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り
30

ブラシのポイント• 毛先の頂点制御– 柄の動きに追従– 安定した動き

柄の動き
毛先も追従

• ブラシのサンプル点– サブピクセルレベルで必要31

ブラシの毛先の頂点移動• Position Based Dynamics (PBD) [Muller et al. 2007]– 位置ベースの物理シミュレーション– 位置ベースの拘束条件• 頂点の位置で補正• 繰り返し適用– オーバーシュートしにくい• 衝突判定など

長さ拘束頂点間の長さを一定に保つ
32

拘束条件
• 長さ拘束• 曲げ拘束• コリジョン拘束– 摩擦力も発生

33

毛先の追従• ブラシの毛先– ピンと張っている– 柄の動きに追従• どう実現するか？
– 毛先にかかる慣性力を直接制御

柄の動き

毛先も追従

34

慣性力を弱める
慣性力• ブラシの座標系

加速– ブラシ自体の加速度が変化 → 非慣性系

• ブラシの座標系での運動方程式𝐯𝐯̇ 𝑖𝑖B = 𝐑𝐑 B 𝐚𝐚𝑖𝑖 − 𝛽𝛽𝐵𝐵 𝐯𝐯̇ B + 𝜔𝜔B × 𝜔𝜔B × 𝐱𝐱 𝑖𝑖B + 𝜔𝜔̇ B × 𝐱𝐱 𝑖𝑖B + 2𝜔𝜔B × 𝐯𝐯𝑖𝑖B

調整パラメータ

直進力

遠心力

オイラー力 コリオリ力
35

慣性力がある場合• 𝛽𝛽𝐵𝐵 = 1– 慣性力がかかる– 本体には追従しない• デモ動画36

慣性力が無い場合• 𝛽𝛽𝐵𝐵 = 0– 慣性力がかからない– ブラシの毛先が本体に追従• デモ動画37

毛先同士のコリジョンやクラスタリング• 真面目に計算するのは無理• Position Based Fluid[Macklin and Muller 2013]– カーネル関数で各頂点における密度を推定– 最小密度を満たす拘束条件を追加
38

ブラシのサンプル点と頂点• 頂点– ブラシシミューレション: 頂点+サンプル点: サンプル点– 1本につき10点ほど• サンプル点– 流体のやり取りとレンダリング– 1本につき50点ほど– Cubic Hermite spline curveで補間39

ブラシのシミュレーションのまとめ• Position Based Dynamics– 伸び拘束、曲げ拘束、コリジョン拘束• ブラシ座標系の慣性力を調整• 毛先同士のコリジョン、クラスタリング– 最小密度を用いた拘束• サンプル点を追加
40

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
–

全体の流れ

–ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り
41

グリッドシミュレーション• ブラシから離れた箇所– 動きが遅い

ブラシ: パーティクル: サンプル点• パーティクルと比べて– 計算負荷が低い– 数値拡散しやすい
42

高解像度キャンバス• キャンバス– 4096 x 4096 x 64
– 1ピクセル⇔1グリッドセル• シミュレーションの仕方を工夫

43

高解像度キャンバスのための工夫• 速度場𝒖𝒖の更新

𝜕𝜕𝒖𝒖
1= − 𝒖𝒖 � 𝛁𝛁 𝒖𝒖 − 𝛁𝛁𝑝𝑝 + 𝜐𝜐𝛁𝛁2 𝒖𝒖 + 𝒇𝒇
𝜕𝜕𝑡𝑡
𝜌𝜌

移流

圧力

• 絵具の固体化• シミュレーション範囲を限定

固体化

44

高解像度キャンバスのための工夫• 速度場𝒖𝒖の更新

𝜕𝜕𝒖𝒖
1= − 𝒖𝒖 � 𝛁𝛁 𝒖𝒖 − 𝛁𝛁𝑝𝑝 + 𝜐𝜐𝛁𝛁2 𝒖𝒖 + 𝒇𝒇
𝜕𝜕𝑡𝑡
𝜌𝜌

移流

圧力

• 絵具の固体化• シミュレーション範囲を限定

固体化

45

速度場𝒖𝒖の更新

速度ベクトル• ナビエ・ストークス方程式を解く– 速度場𝒖𝒖 の時間変化を表す方程式
𝜕𝜕𝒖𝒖
1= − 𝒖𝒖 � 𝛁𝛁 𝒖𝒖 − 𝛁𝛁𝑝𝑝 + 𝜐𝜐𝛁𝛁 2 𝒖𝒖 + 𝒇𝒇𝜌𝜌𝜕𝜕𝑡𝑡
移流速度場𝒖𝒖

圧力– 移流と圧力だけ計算
46

移流• 流れに沿って移動する効果
𝜕𝜕𝒖𝒖
1= − 𝒖𝒖 � 𝛁𝛁 𝒖𝒖 − 𝛁𝛁𝑝𝑝 + 𝜐𝜐𝛁𝛁 2 𝒖𝒖 + 𝒇𝒇𝜌𝜌𝜕𝜕𝑡𝑡移流47

圧力• 非圧縮条件を満たすように働く力– 非圧縮条件

𝜕𝜕𝒖𝒖
1= − 𝒖𝒖 � 𝛁𝛁 𝒖𝒖 − 𝛁𝛁𝑝𝑝 + 𝜐𝜐𝛁𝛁 2 𝒖𝒖 + 𝒇𝒇
𝜌𝜌
𝜕𝜕𝑡𝑡
圧力

• 流体の密度が常に一定• 水、音速を超えない空気• 自然な流体表現を行うために必要48

ナビエ・ストークス方程式を解く• 全部一度に解くのは難しい• 別々に考える• 毎ステップの更新

𝒖𝒖𝑡𝑡

移流− 𝒖𝒖 � 𝛁𝛁 𝒖𝒖𝒖𝒖′𝑡𝑡

圧力1− 𝛁𝛁𝑝𝑝𝜌𝜌

𝒖𝒖𝑡𝑡+149

グリッドシミュレーションの流れ• 毎ステップの更新
リソース
移流

𝒖𝒖𝑡𝑡

移流− 𝒖𝒖 � 𝛁𝛁 𝒖𝒖

𝒖𝒖′𝑡𝑡

速度場𝒖𝒖を更新

圧力1− 𝛁𝛁𝑝𝑝𝜌𝜌

𝒖𝒖𝑡𝑡+1Dryness
更新

50

グリッドシミュレーションの流れ• 毎ステップの更新
リソース
移流

𝒖𝒖𝑡𝑡

移流− 𝒖𝒖 � 𝛁𝛁 𝒖𝒖

𝒖𝒖′𝑡𝑡

速度場𝒖𝒖を更新

圧力1− 𝛁𝛁𝑝𝑝𝜌𝜌

𝒖𝒖𝑡𝑡+1Dryness
更新51

速度場𝒖𝒖𝑡𝑡 を利用したトリリニア補間

トリリニア補間−𝒖𝒖𝑡𝑡 Δ𝑡𝑡

𝒖𝒖′𝑡𝑡

52

1次元の移流で考えてみる• スカラー値: 𝑓𝑓• 式変形してみると

𝜕𝜕𝑓𝑓
𝜕𝜕𝑓𝑓
= −𝑢𝑢
𝜕𝜕𝑡𝑡
𝜕𝜕𝑥𝑥

𝑓𝑓

𝑓𝑓𝑡𝑡+∆𝑡𝑡 − 𝑓𝑓𝑡𝑡
𝜕𝜕𝑓𝑓
= −𝑢𝑢
𝜕𝜕𝑥𝑥
∆𝑡𝑡
𝜕𝜕𝑓𝑓
⇔ 𝑓𝑓𝑡𝑡+∆𝑡𝑡 = 𝑓𝑓𝑡𝑡 − 𝑢𝑢∆𝑡𝑡
𝜕𝜕𝑥𝑥
⇔

速度𝑢𝑢

𝑥𝑥

53

𝑓𝑓𝑡𝑡+∆𝑡𝑡 のグラフ
𝑓𝑓𝑓𝑓𝑡𝑡𝑥𝑥

速度𝑢𝑢

𝜕𝜕𝑓𝑓
𝑓𝑓𝑡𝑡+∆𝑡𝑡 = 𝑓𝑓𝑡𝑡 − 𝑢𝑢∆𝑡𝑡
𝜕𝜕𝑥𝑥• グラフが𝑢𝑢∆𝑡𝑡進む• 𝑓𝑓 が速度𝑢𝑢で移動

54

𝑓𝑓𝑡𝑡+∆𝑡𝑡 のグラフ
𝑓𝑓

𝑓𝑓𝑡𝑡

𝑥𝑥

速度𝑢𝑢

𝑢𝑢∆𝑡𝑡

𝑓𝑓𝑡𝑡+∆𝑡𝑡𝜕𝜕𝑓𝑓
𝑓𝑓𝑡𝑡+∆𝑡𝑡 = 𝑓𝑓𝑡𝑡 − 𝑢𝑢∆𝑡𝑡
𝜕𝜕𝑥𝑥• グラフが𝑢𝑢∆𝑡𝑡進む• 𝑓𝑓 が速度𝑢𝑢で移動

55

𝑓𝑓𝑡𝑡+∆𝑡𝑡 のグラフ
𝑓𝑓

𝑓𝑓𝑡𝑡

𝑥𝑥

𝜕𝜕𝑓𝑓
𝑓𝑓𝑡𝑡+∆𝑡𝑡 = 𝑓𝑓𝑡𝑡 − 𝑢𝑢∆𝑡𝑡
𝜕𝜕𝑥𝑥

速度𝑢𝑢

𝑢𝑢∆𝑡𝑡

𝑓𝑓𝑡𝑡+∆𝑡𝑡𝑢𝑢∆𝑡𝑡

𝑓𝑓𝑡𝑡+∆𝑡𝑡+∆𝑡𝑡• グラフが𝑢𝑢∆𝑡𝑡進む• 𝑓𝑓 が速度𝑢𝑢で移動

56

Semi-Lagrange法 [Stam 99]

𝑓𝑓𝑢𝑢

𝑥𝑥

: 1次元グリッドの値• 𝑢𝑢∆𝑡𝑡戻って、グリッドの値で線形補間

57

Semi-Lagrange法 [Stam 99]

𝑓𝑓𝑢𝑢𝑥𝑥: 1次元グリッドの値: グリッド値による線形補間• 𝑢𝑢∆𝑡𝑡戻って、グリッド値で線形補間58Semi-Lagrange法 [Stam 99]

𝑓𝑓𝑢𝑢𝑥𝑥: 1次元グリッドの値• 𝑢𝑢∆𝑡𝑡戻って、グリッド値で線形補間• 𝑢𝑢∆𝑡𝑡進む59

3次元速度場の移流• 速度場自身を移流させる𝜕𝜕𝑢𝑢𝑥𝑥𝜕𝜕𝑡𝑡
𝜕𝜕𝑢𝑢𝑦𝑦𝜕𝜕𝑡𝑡
𝜕𝜕𝑢𝑢𝑧𝑧𝜕𝜕𝑡𝑡− 𝒖𝒖 � 𝛻𝛻𝑢𝑢𝑥𝑥= − 𝒖𝒖 � 𝛻𝛻𝑢𝑢𝑥𝑥
− 𝒖𝒖 � 𝛻𝛻𝑢𝑢𝑥𝑥

𝜕𝜕𝒖𝒖⇔= − 𝒖𝒖 � 𝛁𝛁 𝒖𝒖
𝜕𝜕𝑡𝑡60

トリリニア補間• 速度場𝒖𝒖𝑡𝑡 自身を利用したトリリニア補間−𝒖𝒖𝑡𝑡 Δ𝑡𝑡

トリリニア補間𝒖𝒖′𝑡𝑡
61グリッドシミュレーションの流れ• 毎ステップの更新
リソース
移流𝒖𝒖𝑡𝑡

移流− 𝒖𝒖 � 𝛁𝛁 𝒖𝒖𝒖𝒖′𝑡𝑡

速度場𝒖𝒖を更新

圧力1− 𝛁𝛁𝑝𝑝𝜌𝜌

𝒖𝒖𝑡𝑡+1Dryness
更新62

非圧縮条件• 流体の密度が常に一定• 速度で考えると?
– 発散が0𝜕𝜕𝑢𝑢𝑥𝑥 𝜕𝜕𝑢𝑢𝑥𝑥 𝜕𝜕𝑢𝑢𝑥𝑥++=0
𝛁𝛁 � 𝒖𝒖 =
𝜕𝜕𝑥𝑥
𝜕𝜕𝑦𝑦
𝜕𝜕𝑧𝑧

• 速度場𝒖𝒖の各グリッドセルの流出入量の差が0– 近似手法で解く

63スカラー圧力場• 移流後の𝒖𝒖′𝑡𝑡 は、非圧縮条件を満たさない• Helmholtz分解𝛁𝛁 � 𝒖𝒖′𝑡𝑡 − 𝛁𝛁𝑝𝑝 = 0– スカラー圧力場𝑝𝑝を求める• スカラー圧力場𝑝𝑝の微分を計算し、速度場𝒖𝒖′𝑡𝑡 から引く

𝒖𝒖𝑡𝑡+1 = 𝒖𝒖′𝑡𝑡 − 𝛁𝛁𝑝𝑝64

スカラー圧力場• 以下のエネルギーを最小化して、スカラー圧力場𝑝𝑝を求める
𝐸𝐸 𝑝𝑝 = �Ω• 大規模疎行列で表される方程式

𝒖𝒖′𝑡𝑡 − 𝛁𝛁𝑝𝑝𝛁𝛁 � 𝒖𝒖′𝑡𝑡 − 𝛁𝛁𝑝𝑝 = 0 ⇔ ∆𝑝𝑝 = 𝛁𝛁 � 𝒖𝒖′𝑡𝑡

ラプラシアン∆は、行列で記述可能
65

近似手法
• 定点法+ヤコビイテレーション
𝐟𝐟𝐟𝐟𝐟𝐟 𝑙𝑙 = 1,2,3 𝐝𝐝𝐝𝐝
𝑝𝑝 = α𝑝𝑝;
𝑑𝑑 = 𝛁𝛁 � 𝒖𝒖;
𝑝𝑝 = 𝐎𝐎𝐎𝐎𝐎𝐎_𝐉𝐉𝐉𝐉𝐉𝐉𝐉𝐉𝐉𝐉𝐉𝐉_𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈(𝑝𝑝, 𝑑𝑑);
𝑝𝑝 = 𝐎𝐎𝐎𝐎𝐎𝐎_𝐉𝐉𝐉𝐉𝐉𝐉𝐉𝐉𝐉𝐉𝐉𝐉_𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈𝐈(𝑝𝑝, 𝑑𝑑);𝒖𝒖 ← 𝒖𝒖 − 𝛁𝛁𝑝𝑝;
return 𝒖𝒖;

66グリッドシミュレーションの流れ• 毎ステップの更新
リソース
移流

𝒖𝒖𝑡𝑡

移流− 𝒖𝒖 � 𝛁𝛁 𝒖𝒖𝒖𝒖′𝑡𝑡

速度場𝒖𝒖を更新

圧力1− 𝛁𝛁𝑝𝑝𝜌𝜌

𝒖𝒖𝑡𝑡+1Dryness
更新

67

Dryness (乾燥度)• 各グリッドセルのdrynessを加算• 閾値を超えたら– 固体のグリッドセル

固体セル– 境界条件
• 境界で速度0• 圧力の微分値が0

速度x ,y は0
圧力 は同値68高解像度キャンバスのための工夫• 速度場𝒖𝒖の更新

𝜕𝜕𝒖𝒖
1= − 𝒖𝒖 � 𝛁𝛁 𝒖𝒖 − 𝛁𝛁𝑝𝑝 + 𝜐𝜐𝛁𝛁2 𝒖𝒖 + 𝒇𝒇
𝜕𝜕𝑡𝑡
𝜌𝜌

移流圧力

• 絵具の固体化• シミュレーション範囲を限定

固体化

69

シミュレーションの実行範囲• 全グリッドセルでのシミュレーションは困難• ブラシ周辺のみシミュレーション– 論文のグリッドブラシ• ソルバ: 256 x 256 x 64
• キャンバス: 4096 x 4096 x 64

キャンバス
70

グリッドシミュレーションのまとめ• ナビエ・ストークス方程式– 移流: Semi-Lagrange法– 圧力(非圧縮性条件): 定点法+ヤコビイテレーション• Drynessによる固体セル判定– 境界条件• ブラシ周辺のみシミュレーションを実行
71

パーティクルシミュレーション• ブラシ周辺で利用– 動きが早い

ブラシ: パーティクル: サンプル点• 計算負荷が高い– グリッドとくらべて72

パーティクルのポイント
ブラシ• 毛先への粘着– 絵具がブラシの毛先にくっつく

絵具• 非圧縮性– そのままでは流体の密度が一定にならない73

パーティクルのポイント
ブラシ• 毛先への粘着– 絵具がブラシの毛先にくっつく

絵具• 非圧縮性– そのままでは流体の密度が一定にならない74

ブラシの毛先への粘着• ブラシの毛先からの距離で外力を与えるのは？
– 不安定になりがち• 非慣性系で慣性力を制御– ブラシシミュレーションと同様– 各サンプル点を中心にした座標系
75

各サンプル点の座標系: サンプル点: パーティクル

y𝐷𝐷1zx76

サンプル点に追従させる• サンプル点の座標系– サンプル点の加速度が変化 → 非慣性系
– 運動方程式𝐯𝐯̇ 𝑘𝑘B = 𝐑𝐑 L 𝐚𝐚𝑘𝑘 − 𝛽𝛽L 𝐯𝐯̇ L + 𝜔𝜔L × 𝜔𝜔L × 𝐩𝐩L𝑘𝑘 + 𝜔𝜔̇ L × 𝐩𝐩L𝑘𝑘 + 2𝜔𝜔L × 𝐯𝐯𝑘𝑘L

調整パラメータ

直進力

遠心力

オイラー力 コリオリ力

77

位置の計算• 毛先の影響を調整– 離れたら追従しない

速度ベクトルy• サンプル点からの距離に応じて合成

距離– 慣性力を調整した速度ベクトル– 元の速度ベクトルzx78

パーティクルのポイント
ブラシ• 毛先への粘着– 絵具がブラシの毛先にくっつく

絵具• 非圧縮性– そのままでは流体の密度が一定にならない

79

そのままだと？
• パーティクルが自由に移動– 密度が変化– 絵具の流体ぽく見えない• 密度を一定に保つには？
– 速度ベクトルを変化させる
80

グリッドシミュレーションの圧力計算を間借り• 圧力計算後の速度場𝒖𝒖𝑡𝑡+1 でパーティクルを補間– 速度場が非圧縮条件を満たす• [Zhu et al. 2006]と似た手法– Fluid-implicit-particles/particles-in-cells (FLIP/PIC) liquids81速度ベクトルのラスタライズと補間
パーティクル補間

ラスタライズグリッド

移流

圧力
速度場𝒖𝒖′𝑡𝑡

速度場𝒖𝒖𝑡𝑡+1

82

パーティクルシミュレーションのまとめ• 毛先への粘着

ブラシ– サンプル点の非慣性座標系– 慣性力の調整

絵具• 非圧縮性– グリッドの速度場を用いて補間– FLIP/PIC形式
83

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
–

全体の流れ

–

ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り
84流体のやり取り

サンプル点

ブラシ

パーティクル

グリッド85ブラシ⇔パーティクル• ブラシのサンプル点の容量を計算• サンプル点が現在保持している流体量と比較– 容量 > 流体量: パーティクルを吸収– 容量 < 流体量: パーティクルを放出

ブラシパーティクル
86

ブラシのサンプル点の容量• サンプル点の密度フィールド• 固体表面からの距離– 固体表面に近いほど容量が減る

𝑅𝑅𝑗𝑗

固体表面𝑟𝑟𝑗𝑗

87

パーティクル ⇔ グリッド

ブラシ

• サンプル点からの距離– 𝐷𝐷0 以上ならグリッド– 𝐷𝐷0 未満ならパーティクル•密度をカーネル関数で補間•他のリソースは線形補間

𝐷𝐷088

流体のやり取りのまとめ• ブラシ⇔パーティクル– サンプル点の容量変化• パーティクル⇔グリッド

𝑅𝑅𝑗𝑗

固体表面𝑟𝑟𝑗𝑗
ブラシ– サンプル点からの距離で変換

89

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
4. 結果
5. 今後の課題とまとめ

90

環境構成など• CPU: Intel Core i7 5930K 3.5GHz• GPU: Nvidia Geforce GTX Titan 12GB
• CUDAで実装• レンダリング– ボリュームレンダリング– パーティクル
• Screen Space Fluid Rendering with Curvature Flow [van der Laan et al. 2009]91

結果• パーティクル数: 210k
• グリッド解像度– 4096x4096x64• 平均fps: 4692

作品

93

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
4. 結果
5. 今後の課題とまとめ

94

課題• パーティクルが多くないと、綺麗にならない• 非圧縮性があまり保たれていない– FLIP/PIC形式を利用しているが・・・• ユーザがコントロールしづらい– 直観的じゃないパラメータが多い• ハイエンドなグラフィックスカードが必要
95

まとめ• ペイントシミュレータに関する研究の紹介• ペイントシミュレータの最新研究論文紹介– 毛先を１本ずつシミュレーション– インタラクション• 毛先⇔毛先、毛先⇔流体– ハイブリッド流体モデル• ３次元グリッド+パーティクル
96

著作権について• 本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

ご静聴ありがとうございました
97

参考文献
•

[Baxter et al. 2004a] Baxter, W. V., Wendt, J., and Lin, M. C. 2004.IMPaSTo: A realistic, interactivemodel for paint. In Proceedings of NPAR, 45–56.

•[Baxter et al. 2004b] Baxter, W., Liu, Y., and Lin, M. C. 2004. A viscous paint model for interactiveapplications. Computer Animation and Virtual Worlds (CASA) 15, 3-4, 433–441.

•[Chu et al. 2002] Chu, N. S. H., and Tai, C.-L. 2002. An efficient brush model for physically-based 3Dpainting. In Proceedings of Pacific Graphics, 413–421.

•[Baxter and Lin, 2004] Baxter, W., and Lin, M. C. 2004. A versatile interactive 3D brush model. In
Proceedings of Pacific Graphics, 319–328.

•[Chu et al. 2010] Chu, N., Baxter, W., Wei, L.-Y., and Govindaraju, N. 2010. Detail-preserving paintmodeling for 3D brushes. In Proceedings of NPAR, 27–34.

•[DiVerdi et al. 2010] DiVerdi, S., Krishnaswamy, A., and Hadap, S. 2010. Industrial strength painting
with a virtual bristle brush. In Proceedings of VRST, 119–126.
98

参考文献
•

[Muller et al. 2007] MULLER M, HEIDELBERGER B, HENNIX M, RATCLIFF J: Position based dynamics. J.
Vis. Commun. 18, 2 (2007), 109.118. 15•[Macklin and Muller 2013] Macklin, M., and M¨uller, M. 2013. Position based fluids. ACM Trans. Graph.
(SIGGRAPH) 32, 4 (July), 104:1–104:12.

•[Stam 1999] Stable fluids. In Proceedings of the 26th Annual Conference on Computer Graphics andInteractive Techniques, SIGGRAPH ’99, 121–128.

•[Zhu et al. 2005] ZHU, Y., AND BRIDSON, R. 2005. Animating sand as a fluid. In ACM SIGGRAPH 2005
Papers, ACM, New York, NY, USA, SIGGRAPH ’05, 965–972.

•[van der Laan et al. 2009] van der Laan, W. J., Green, S., and Sainz, M. 2009. Screen space fluidrendering with curvature flow. In Proceedings of I3D, 91–98.

•[Bergou et al. 2008] Bergou, M., Wardetzky, M., Robinson, S., Audoly, B., and Grinspun, E. 2008.
Discrete elastic rods. ACM Trans. Graph. (SIGGRAPH) 27, 3 (Aug.), 63:1–63:12.
99

参考文献
• CEDECセッション– 2005年 流体の鉄人 ～ゲーム屋さんのための流体入門～ 田村 尚希– 2014年 Position Based Dynamics Omelette 中川 展男

100補足スライド101

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
–

全体の流れ

–

ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り–

レンダリング102

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
–

全体の流れ

–

ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り–

レンダリング103

サンプル点を追加• 頂点だけでは足らない• サンプル点を、頂点から補間– Cubic Hermite spline curve
𝒑𝒑 𝑡𝑡 = 2𝑡𝑡 3 − 3𝑡𝑡 2 + 1 𝒑𝒑0 +𝑡𝑡 3 − 2𝑡𝑡 2 + 𝑡𝑡 𝒎𝒎0 +−2𝑡𝑡 3 + 3𝑡𝑡 2 𝒑𝒑1 +𝑡𝑡 3 − 𝑡𝑡 2 𝒎𝒎1: 頂点: サンプル点

i
t=1/3
t=2/3

i+1
t=1/3
t=2/3i+2104

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
–

全体の流れ

–

ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り–

レンダリング105

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
–

全体の流れ

–

ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り–

レンダリング106

スタッガード格子• グリッドセルの境界が１次元の速度を持つ• 誤差を抑える効果

速度x: 𝒖𝒖𝑥𝑥
速度y: 𝒖𝒖𝑦𝑦

107リソースの移流• グリッドセル値を, 速度場によって移流– スカラー値• Density(密度)• Dryness(乾燥度)• oil density(オイル密度)– ベクトル• Pigment(色)スカラー値

ベクトル108

ブラシのサンプル点をラスタライズ• 境界条件として利用– ラスタライズされたボクセルの境界• 境界で速度0• 圧力の微分値が0109

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
–

全体の流れ

–

ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り–

レンダリング110

摩擦力• 固体面との摩擦
𝐟𝐟𝑘𝑘friction = −max 1 − 𝛿𝛿𝑑𝑑𝑘𝑘 2 , 0 𝐯𝐯𝑘𝑘

𝐯𝐯𝑘𝑘 : パーティクルの速度ベクトル

𝑑𝑑𝑘𝑘 : 固体面までの距離

𝛿𝛿: 制御パラメータ 0 < 𝛿𝛿 < 1111

グリッドへのラスタライズ: パーティクルの速度ベクトル: 速度場のXベクトル: 速度場のYベクトル112

速度場を適用• 2つの速度場を用いて、パーティクルの速度ベクトルを更新– 𝐮𝐮: 非圧縮性を満たすような速度場– 𝐮𝐮: ラスタライズした直後の元の速度場

𝐯𝐯𝑘𝑘new = 𝛾𝛾𝐮𝐮 𝐩𝐩𝑘𝑘 + 1 − 𝛾𝛾 𝐯𝐯𝑘𝑘 + 𝐮𝐮 𝐩𝐩𝑘𝑘 − 𝐮𝐮 𝐩𝐩𝑘𝑘
𝛾𝛾で調整する(大体0.8)

113サンプル点の座標空間の基底ベクトル: サンプル点• ブラシの毛のネジレが小さくなるように• Discrete elastic rods[Bergou et al, 2008]

yzx114

発表の構成1. ペイントシミュレータとは?
2. 既存研究の紹介
3. 最新研究の紹介
–

全体の流れ

–

ブラシのシミュレーション–

流体のシミュレーション(グリッド, パーティクル)–

ブラシ ⇔ パーティクル ⇔ グリッド の流体のやり取り
115

ブラシのサンプル点の容量(その1)• ブラシシミュレーションで計算した密度フィールドを利用
𝜇𝜇: コントロールパラメータ
𝜓𝜓 𝐱𝐱𝑗𝑗 : サンプル点の密度
𝑀𝑀max : サンプル点の容量の最大値
𝑀𝑀min : サンプル点の容量の最小値

容量その１: 𝑀𝑀𝑗𝑗′ = max

1 − 𝜇𝜇 ⋅ 𝜓𝜓 𝐱𝐱𝑗𝑗

𝑀𝑀max , 𝑀𝑀min116

ブラシのサンプル点の容量(その2)• 固体表面からの距離で、容量を変化– 固体表面に近いほど容量が減る

𝑅𝑅𝑗𝑗 =′3 3𝑀𝑀𝑗𝑗

4𝜋𝜋𝜌𝜌0𝜌𝜌0 = 1.0 × 103 kg/m3

最終結果: 𝑀𝑀𝑗𝑗 = 𝑀𝑀𝑗𝑗′ − 𝜌𝜌0 𝜋𝜋 𝑅𝑅𝑗𝑗 − 𝑟𝑟𝑗𝑗

2𝑅𝑅𝑗𝑗 − 𝑅𝑅𝑗𝑗 − 𝑟𝑟𝑗𝑗 /3𝑅𝑅𝑗𝑗

固体表面𝑟𝑟𝑗𝑗

117

パーティクルを吸収• サンプル点が保持する流体量が、容量を下回っているとき– 𝑅𝑅𝑗𝑗 内にあるパーティクルを吸収• 色に関しては、常にパーティクルからサンプル点へ合成
𝑅𝑅𝑗𝑗

𝑅𝑅𝑗𝑗
118

サンプル点からのパーティクル放出• サンプル点の容量より、保持する流体量が多いとき
𝑚𝑚𝑗𝑗 > 1 + 𝜖𝜖 𝑀𝑀𝑗𝑗

𝑚𝑚𝑗𝑗 : 保持する流体量
𝑀𝑀𝑗𝑗 : 容量

119

グリッドからパーティクル生成• グリッドのセルが、𝐷𝐷0 以内に入った時• グリッドの密度を減らし、パーティクルを生成𝐾𝐾𝜌𝜌𝑐𝑐new = max 𝜌𝜌𝑐𝑐 − 𝑚𝑚𝑘𝑘 � 𝑊𝑊 𝐩𝐩𝑘𝑘 − 𝐱𝐱 𝑐𝑐 , ℎ , 0𝑘𝑘=1

𝐩𝐩1 , 𝐩𝐩2 , … , 𝐩𝐩𝐾𝐾 : パーティクルの位置
𝑚𝑚𝑘𝑘 : パーティクルの質量𝑥𝑥𝑐𝑐 : グリッドセルの位置

𝑊𝑊: カーネル関数
𝜌𝜌𝑐𝑐 : グリッドセルの密度120パーティクルをグリッドへ統合• グリッドへ統合する条件– パーティクルが、ブラシのサンプル点から𝐷𝐷0 離れる– パーティクルの速度が閾値を下回る• パーティクルを削除して、グリッドの密度を増加
𝐾𝐾𝜌𝜌𝑐𝑐new = 𝜌𝜌𝑐𝑐 + 𝑚𝑚𝑘𝑘 � 𝑊𝑊 𝐩𝐩𝑘𝑘 − 𝐱𝐱 𝑐𝑐 , ℎ𝑘𝑘=1121