平成 23 年度

修士論文

粒子・体積ベース仮想液体操作モデルにおける液体の流れの表現

指導教員
舟橋

名古屋工業大学大学院

工学研究科

平成 22 年度入学

夏目

情報工学専攻22417587 番

祐樹

健司

准教授

i

目次

第 1 章 はじめに

1

第 2 章 粒子・体積ベース仮想液体操作モデル

5

2.1

2.2

2.3

仮想液体と仮想容器のモデル . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.1.1

仮想液体のモデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.1.2

仮想容器のモデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

2.1.3

容器の流出点，液位および液面 . . . . . . . . . . . . . . . . . . . . .

8

2.1.4

体積計算のための LUT . . . . . . . . . . . . . . . . . . . . . . . . . .

9

容器と液体との相互作用モデル . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.1

自由落下状態の液体と容器の相互作用

2.2.2

静止状態の液体と容器の相互作用 . . . . . . . . . . . . . . . . . . . . 10

2.2.3

液面の上昇 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2.4

容器内への液体の流入 . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2.5

容器外への液体の流出 . . . . . . . . . . . . . . . . . . . . . . . . . . 12

凹形状容器への拡張. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

第 3 章 流れる液体の表現モデル

3.1

3.2

. . . . . . . . . . . . . . . . . 10

15

流れについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.1.1

伝い流れと落下流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.1.2

領域から領域への液体流出時の流れの様子の決定 . . . . . . . . . . . 17

伝い流れ液体の表現. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.1

流れの挙動の計算方法 . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.2

単位時間流出量とその推移 . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2.3

容器形状に沿った伝い流れの分割 . . . . . . . . . . . . . . . . . . . . 23

ii

3.3

落下流れ液体の表現. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.3.1

落下流れの挙動の計算 . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.3.2

落下点の計算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.3.3

流れ液体と静止，自由落下状態の液体間での遷移時の体積の換算 . . . 26

第 4 章 実験とその結果

28

4.1

実験システム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.2

実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

第 5 章 むすび

38

謝辞

39

参考文献

40

発表論文リスト

43

1

第1章

はじめに

近年バーチャルリアリティ(Virtual Reality:以下 VR) に関する研究とその技術はますます高度なものとなり，我々の生活においてより身近なものとなりつつある．今では日々の生活を振り返ることで，VR 技術が取り入れられていることを確認できる機会というのも珍しくはない．例えばアミューズメントパークにある娯楽器具には，映像や音とともに座席が振動，揺れ動くことで利用者がより高い臨場感をもって楽しめるような工夫がなされているものがある．もちろん実際にその場所である現象，事象が起きているわけではないが，原物と大差ない効果を与えられることにより，それがまるで現実であるかのような感覚を覚える．
我々は主に，ある何かがそこに現実に存在しているかどうかについて，目で見て，実際に触ることで確認を行う．またその匂いや，発する声や音などを聞くことによって本物であるという感覚はより確かなものとなる．このように，ある対象物から様々な種類の不自然でない情報を得ることで人はそれが現実に存在していると認識する．VR とは，我々の生活環境の中に人工的に，適切な情報をもたせた仮想的な環境や物体を形成することで，生物の五感そのものに働きかけ，あたかも現実であるかのような感覚を与えるものである [1]．VR にお
いては，その環境や物体が現実には存在していないにもかかわらず，いかに本質的な等しさをもたせられるかという点が非常に重要である．

VR 技術を我々の生活に取り入れることは，資源の節約やコストの削減，実施の容易さ，実験における危険の回避などの点で非常に大きな利点があると言える．これらの理由から

VR 技術を用いるための研究が行われており，対話操作についての研究も行われている．ところで，かつての対話操作に関する研究では，主に剛体や弾性体に着目し，その移動や変形の再現を目的としていた [2][3]．それら以外にも，我々の周りに存在する代表的なものとして流体が挙げられ，液体や気体などがそれに該当する．流体にはその形状が不安定で連続的に変化しやすいという性質があり，その挙動の計算は剛体と比較して難しいと言える．しかし，流体は剛体や弾性体と等しくもしくはそれ以上に身近なものである．例えば，朝起床

第1章

はじめに

2

してまず何をするかという問いかけに対して，顔を洗うと答える人が大多数を占めるであろう．その際蛇口から流れ出る水をこぼれ落ちないように両手で受け止めるという動作を行う．また，朝食として味噌汁を作るときにも液体を混ぜる，すくうといった動作を行う．学校に行けば，化学の実験の時間にはフラスコに入った液体を振り，その挙動を目で見て確認することもあるだろう．このように液体や気体などの流体を扱うという機会は非常に多く，また医療や産業といった側からのそれらを仮想的に操作したい，扱いたいという要望もある [4]．そのため現在，仮想的な流体の操作に関する研究が様々なところで進められており，計算機を用いて実世界と同等の環境を構築し，そこで実際に体験するといったシステムやア
プリケーションも数多く開発されている．また，近年急速に普及しているスマートフォンやタブレット端末においても利用することができれば，より身近なものとして，我々の生活において有益なものとなると考えられる．
ところで VR の研究を行う上では，主に以下の二つの点に重点を置く必要がある．まず一
つ目は，いかにして実物体の挙動を厳密に再現できるかどうかである．例えばある仮想的な流体を用いて，津波などによる災害や気流のシミュレーション，もしくは訓練の実施を目的とするような場合には，仮想流体が示す挙動は実物体により近いものとなることが望ましい [5-7]．そのためには流体力学などの複雑な計算を用いることも必要となるため，より正確な挙動の再現はできるものの計算量が増加し，処理速度の低下は避けられず対話操作には向いていない [8]．もう一つは，操作するということに着目し，いかに臨場感のある対話操作を実現できるかということである．この場合は高い処理速度を保つことが重要であるため，実際に操作しているという感覚を操作者が得ることが可能であり、また操作者が期待している挙動が再現可能であれば，必ずしも厳密な挙動である必要はない．以上の二つの点を同時に実現することは難しく，それぞれの方面からの研究が進められている．
流体の対話操作を目的とした研究の一つに，Smoothed Particle Hydrodynamics (以下SPH 法) という手法を用いたものがある．SPH 法では，流体を粒子の集合からなるものとして考え，粒子一つごとの運動について物理法則を用いた計算を行うことで，より正確な挙動の再現を可能としている．これを用いた研究が M．Muller らにより提案されており，精度の高い流体の対話操作を実現している [9-12]．これらの研究は，挙動の表現については非
常に優れている反面，計算量が大きいために処理速度は低下してしまう．一般に人が対話操作をしている感覚を受け取るためには 10-12fps の処理速度が必要であると言われており，性

第1章

はじめに

3

能の優れた計算機を用いなければ対話操作の実現は難しい．さらに流体のみでなく，他物体との干渉も考慮する必要がある場合には，この方法を用いることは難しいのではないかと考えられる．
同じく対話操作を目的とした研究として，当研究室では臨場感と処理速度の向上に重点をおいた粒子・体積ベース仮想液体操作モデルを提案している [13]．このモデルの大きな特徴
として，液体を自由落下状態と静止状態に分けて考え，前者は粒子，後者は体積に基づいて表現していることが挙げられる．操作者は，流れ落ちる液体を受け取る，容器内の液体をこぼす，別の容器内からすくい取るといった動作が可能である．これらの動作は，我々が液体を液体として認識するために無意識に行う基本的な動作であるといった考えに基づきモデルを作成，実装された．液体らしさの実感を人に与えるうえで非常に効果的なものであると言える．また，液面の波や異なる色の液体を混ぜ合わせた場合の色の拡散を表現するモデルも作成され，より液体として感じとることができ，実際に液体を操作しているという感覚も十分受けられるとしている [14][15]．粒子・体積ベース仮想液体操作モデルでは，4 章に記した本研究での実験環境と同じ環境において，描画更新速度が約 100fps であり、非常に速い処
理速度での液体の対話操作を可能にしている．流体のみでなく，他物体との干渉を考慮する必要がある場合においても，十分な処理速度を保つことができると考えられ，対話操作を行ううえで非常に優れたモデルであることがわかる．さらに，化学実験や日常での調理時などにおいても頻繁に行われる，液体をかき混ぜるといった動作の高い臨場感での実現のため，その際に発生する渦の表現モデルも考えられた [16]．ランキンの組み合わせ渦といった概念に基づいており，少ない計算量での渦流の表現が可能である．他にも臨場感を高めるための研究として，落下液体の包絡面とその描画に関するものがある [17]．それにより，視覚的により液体らしい様子を操作者に与えることが可能となった．
ところで，このモデルは当初は凸形状の容器を想定し，容器を伝うなどの液体の流れは考慮せず，体積に基づいて決定した位置に液面を描くことにより容器内の液体を表現すること
で計算を簡略化していた．しかしその後，液体を対象とするアプリケーションを開発するにあたりフラスコなどの凹形状の容器への対応も必要となりモデルを拡張した．凹形状容器に対応したことにより，液体が容器内で流れる場面も多く見られるようになり，流れる液体の表現も必要となってきた．そこで本論文では，対話操作に重点を置き，少ない計算量で実現可能な液体の流れの表現手法について述べる．流体挙動の一つである流れは，流体力学に基

第1章

はじめに

4

づく厳密な挙動の再現が試みられているが多くの計算時間が必要となるため対話操作には向かない．そこで本研究では，流れる液体を静止と自由落下の中間的な状態として考え，人の意識が向かう部分に重点を置くことで計算を簡略化しつつ，運動する液体を局所的な領域における体積変化に基づいて表現する．本モデルを用いることで，容器内面を液体が伝い流れるなどの様子も表現可能となり，より高い臨場感での仮想液体の対話操作の実現に繋がると考えられる．また当研究室で提案している VR 化学実験体験システムなどの VR コンテンツの構築にも利用できる．
以下，２章では提案モデルの基となる粒子・体積ベース仮想液体操作モデルの概略について説明する．また３章では，そのモデルでの対話操作性に重点を置いた流れる液体の表現手法について説明をする．４章では，実験及び結果，５章では本研究のまとめを述べる．

5

第2章

粒子・体積ベース仮想液体操作モデル

本章では，当研究室でこれまでに提案されている粒子・体積ベース仮想液体操作モデルの概略についての説明をする．詳しくは文献 [13] を参照されたい．
このモデルにおいては，液体を自由落下状態，静止状態の２つの状態に分けて考えている．
処理速度およびそれに伴う臨場感の向上に特に重点を置いているため，液体そのものの厳密な挙動の計算は行っていない．しかし，容器と液体との相互作用を考えることで，流れ落ちる液体を容器ですくう，容器外へこぼす，他の容器内の液体をすくい取るといった操作を実現し，それにより液体らしさの感覚，印象を効果的に操作者に与えている．

第2章

粒子・体積ベース仮想液体操作モデル

2.1

仮想液体と仮想容器のモデル

2.1.1

仮想液体のモデル

6

このモデルにおいては，液体を以下の 2 つの状態に分けて考えている．

(1) 自由落下状態(2) 静止状体
まず前者の状態 (1) の液体であるが，蛇口から流れ落ちる水などがそれに該当する．こちらについては粒子に基づいた表現を行う．対話操作を第一の目的としているため，各粒子の大きさは考慮せず，粒子同士の衝突などによる干渉はおこらないものとしている．各粒子の3 次元仮想空間内での時刻 t における座標を Pi (t) (i = 1，2，．
．
．
，N ; N : 粒子数) とし，それぞれの粒子は重力および慣性に従い移動する．移動量と重力による加速を考慮すると，Pi (t)は次式により決定される．

Pi (t) = 2Pi (t − ∆t) − Pi (t − 2∆t) + g∆t2

(2.1)

ここで，g は下向きの重力加速度ベクトルであり，∆t は描画更新間隔，すなわち描画更新
レート (f rames/sec．
) の逆数である．空気抵抗による広がりを表現する場合，式 (2.1) 右辺に微小乱数値 Ri (t) を加える．
次に後者の状態 (2) の液体であるが，コップなどの容器内にたまる水などが該当する．容器内の対流などは考慮せず静止状態として扱うこととし，体積に基づいた表現を行う．すな
わち，ある時刻 t において仮想空間内に定義された容器内に液体が存在している場合，その容器内には体積 Vt の液体が存在していると表現する．また，先述した粒子としての性質は一切考慮しないこととしている．上記 2 つの状態間での状態の遷移があった場合には，換算
比 N [粒子数/体積] により換算を行う．例えば容器内に体積 V の静止状態の液体が存在するとし，それを全て容器外へ落下させた場合には，容器内の液体体積は 0 になり，自由落下状
態の液体の粒子数は N V 増加する．

第2章

粒子・体積ベース仮想液体操作モデル

7

図 2.1: 仮想容器を内包する球と傾きの表現

2.1.2

仮想容器のモデル

仮想空間内に存在する仮想容器は全てモデルのうえでは平行移動，回転可能なものとなっている．これらの容器は凸形状であるとしておく．以下は仮想空間内における容器の表現の仕方である．
まず，ある容器に対してそれを内包する球を考える．その球の中心を C，半径を r とし，容器の 3 次元空間における位置はベクトル C により表現する．また，図 2.1 に示すように

C を原点とする容器座標系 (軸 XC ，YC ，ZC ) を設定する．容器の傾きは軸 YC と球との交点(図 2.1 中 d1 ) の位置の変化 (極座標的な表現) により表す．具体的には，XC を軸として点 d1
が点 d2 に移動するように容器を角度 φ だけ回転し，更に ZC を軸として点 d2 が点 d3 に移動するように角度 θ だけ回転する．これにより φ，θ の 2 つのパラメータで容器の傾きを表現することが可能である．ともに値が 0 の時には，容器は傾いていない状態である．また，容器の方向の変化として YC を軸として角度 ψ だけ回転を行うが，これによる容器内に満たしうる液量の変化はない．これら C，φ，θ，
ψ はそれぞれの容器ごとに設定されており，移動する容器については時刻 t の関数として表されている．

第2章

粒子・体積ベース仮想液体操作モデル

2.1.3

容器の流出点，液位および液面

8

容器内で静止している液体の液面の高さを液位と呼び，容器内に入り得る液体の最大量を最大容積 Vm ，液体の体積が容器の最大容積を越えた場合に液体が溢れ出る点を流出点 F とする．厳密には液体の流出箇所が線分で表される場合もあるが，実際にはそのようなことは稀であるため，流出は全て一点からおこるものとしている．流出点 F を点 C を基準とする
相対的なベクトル F として次式により表す．

F = f (θ，
φ，
ψ)

(2.2)

ある時刻 t において，容器内に存在する液体の体積が V であるとき，液位は C から H の位置にあるとする．H は次式により表す．

H = h(θ，
φ，V )

(2.3)

液位 H の存在範囲は，容器を内包する球の半径が r であることより −r < H < r であるが，容器の形状や傾きによってはさらに狭い範囲に存在することとなる．式 (2.3) を体積 Vについて変形することにより次式を得る．

V = v(θ，
φ，H)

(2.4)

式 (2.4) において容器より下方の H を与えた場合は V = 0，点 F よりも上方の H を与えた場合は V = v(θ，φ，Fy ) = Vm (θ，φ) とする．これは F の鉛直方向 y 座標 Fy が角度 ψ に依存しないためである．さらに液面よりも下方に存在する容器の厚みを考慮した体積 V + を以下の式 (2.5) で表し，液位が最大となるときは同様に V + = Vm+ と表す．

V + = v + (θ，
φ，H)

(2.5)

ただし，以後は特に容器の厚みは考慮しないものとし V + = V として扱うこととする．

第2章

粒子・体積ベース仮想液体操作モデル

9

図 2.2: 体積計算のための LUT

2.1.4

体積計算のための LUT

容器の形状を読み込むときに，それぞれの容器について図 2.2 のような look up table(LUT)
を作成しておく．この LUT とは，容器の傾きと液位がある値における容器内液体体積の計算結果である．LUT を参照することで，容器内の液体体積 V を θ，φ および H · 100/r より求めることができる．このように容器の体積を事前に計算しておくことで，対話操作時において複雑な計算を避けることができ，より高速に対話操作を行うことが可能となる．

第2章

粒子・体積ベース仮想液体操作モデル

2.2

容器と液体との相互作用モデル

2.2.1

自由落下状態の液体と容器の相互作用10

落下中の液体 (粒子) が容器の口を通過した場合，その液体の状態を状態 (1) から状態 (2)へと変化させる．すなわち粒子としての液体は消滅させ，一定の換算比に基づいて体積としての液体に換算する．実際の処理においては，判定すべき容器を内包する球の中に存在する粒子についてのみ詳細な判定を行う．ある容器の口を通過した粒子が n 個 (n ≥ 0) の場合，その容器内の時刻 t における液体の体積を次式 (2.6) により仮に設定している．

V (t)(0) = V (t − ∆t) + n/N(2.6)

次節で述べる静止状態の液体と容器との干渉がなければ，時刻 t における容器内の液体の体積を V (t)(1) = V (t)(0) とし，液位 H は次式 (2.7) により決定される．

H(t) = h(θ，φ，V (t)(1) )

2.2.2

(2.7)

静止状態の液体と容器の相互作用

仮想空間内において，操作者が自由に移動可能な容器と他の固定された容器内 (以後それぞれ容器 1，容器 2 と呼ぶ) の液体との相互作用について述べる．各記号の添字 1，2 は各容
器 1，2 に対応している．ある時刻 t において次式 (2.8) が成立する場合，容器 1 と容器 2 内の液体は互いに干渉している．

(0)C1y − r1 < C2y + h2 (θ2 ，
φ2 ，V2 )(2.8)

ここで Cjy は容器 j の内包球の中心 Cj の鉛直方向の座標である．このとき，容器 2 内の液体の液位が容器 1 により上昇させられており，その上昇分の体積を U21 ≥ 0 とする．また，他の全ての容器による容器 2 内液体の液位上昇分の体積を U2 とし，次式 (2.9) により表す．

U2 = Σj U2j

(2.9)

第2章

粒子・体積ベース仮想液体操作モデル

11

容器と液体が干渉しており，かつ次式 (2.10) が成立するとき，容器 1 の流出点よりも下の部分と容器 2 の液面が干渉している．

(0)

C2y + h2 (θ2 ，
φ2 ，V2+ Vm+1 ) < C1y + F1y(2.10)

上式 (2．10) が成立しない場合には容器 2 の液体内部に容器 1 の流出点が存在していることとなり，容器 2 内の液体が容器 1 に流入する．

2.2.3

液面の上昇

容器と液面が干渉しているとき，容器 1 が容器 2 の液位を上昇させている．このとき，容器 2 の液位 H2 を次式 (2.11)，(2.12) に基づいて設定する．

(0)

H2 = h2 (θ2 ，
φ2 ，V2+ U21 )

(2.11)

U21 = v1+ (θ1 ，
φ1 ，C2y + H2 − C1y )(2.12)(1)

また，それぞれの容器内の液体の体積を Vj

(0)

= Vj

とし，容器 1 の液位を式 (2.7) によ

り求める．

2.2.4

容器内への液体の流入

容器 1 に容器 2 の液体が流入する場合，さらに次式 (2.13) が成立するならば，液体の流入は容器 2 の液面が容器 1 の流出点に達した時点でとまる．

(0)

V2

(0)

+ U21 − v2 (θ2 ，
φ2 ，C1y + F1y − C2y ) < Vm1 − V1

(2.13)

この場合，容器 2 の液位が容器 1 の流出点となるように次式 (2.14) により設定する．

H2 = (C1y + F1y ) − C2y(2.14)

それに合わせて，各容器の体積を次式 (2.15)，(2.16) により計算し，さらに容器 1 の液位を先述の式 (2.7) により決定する．

第2章

粒子・体積ベース仮想液体操作モデル

(1)

V2

= v2 (θ2 ，
φ2 ，H2 ) − U21

(1)

V1

12

(1)

+ V2

(0)

= V1

(0)

+ V2

(2.15)(2.16)式 (2.12) が成立しない場合は，容器 1 の流出点よりも上方に容器 2 の液面が存在している(1)こととなる．このときは容器 1 の液体の体積 V1を最大容量 Vm1 ，液位 H1 を r1 に設定し，液面は考えないものとする．容器 2 の液体の体積と液位は式 (2．16) および次式 (2.17) により決定する．

(1)

H2 = h2 (θ2 ，
φ2 ，V2+ U21 )

(2.17)

上記のように設定することで，時刻 t + ∆t において 2 つの容器の間での液体の移動がなくなった場合には，液体をすくい取るという操作を実現できる．

2.2.5

容器外への液体の流出

上述の干渉や容器の傾斜により，時刻 t において次式 (2．18) を満たす場合には液体が容器から流出する．

V (1) + U > Vm

(2.18)

容器内の体積で表現されている液体の一部を N (V (1) + U − Vm ) 個の粒子として点 F から流出させ，時刻 t における容器内の液体の体積を次式 (2.19) により決定する．

V (t) = Vm − U(2.19)

なお，式 (2.18) を満たさない場合には液体粒子の流出はなく，V (t) = V (t)(1) である．

第2章

粒子・体積ベース仮想液体操作モデル

13

図 2.3: 一つの容器内に液体が分かれて存在する様子

2.3

凹形状容器への拡張

実世界には凸形状の容器だけでなく，フラスコのような凹形状の容器も多数存在している．
凸形状容器と凹形状容器との最も重要な差異として，後者では一つの容器内で液体が 2 箇所
以上に分かれて存在することがあるという点が挙げられる (図 2.3)．一方，凸形状容器では容器内の液体は常に一箇所にまとまって存在する．そのため凸形状容器内の静止状態の液体は，その体積がある値のときの容器内での液面の高さの存在位置を先述した LUT を参照して求め，その位置に液面の描画を行うといった方法で容易に表現することが可能である．しかし，2 箇所以上に分かれて存在するような場合には，それらの液面の高さが等しくなるとは限らず，また容器内での液体同士の干渉についても考えなければならないためこの方法では表現できない．そこで，凹形状容器を複数の凸形状容器からなるものとして考える．凹形状容器を全てが凸領域となるように分割し，分割した面を接続面と呼ぶこととする．また，容器から容器外へと液体が流出する点が流出点であるが，これと区別し，ある領域から別の領域へと液体が流出する点を接続面流出点とする (図 2.4)．接続面流出点は，ある接続面を構成する頂点の中で世界座標における鉛直方向 y 座標が最小の点である．各分割領域間での液体の移動を考えることにより凹形状容器による液体操作を実現する．

第2章

粒子・体積ベース仮想液体操作モデル

図 2.4: 凹形状容器の接続面と接続面流出点

14

15

第3章

流れる液体の表現モデル

フラスコのような凹形状の容器への対応のためモデルを拡張した結果，液体が容器内で流れる場面も多く見られるようになり，液体の流れの表現の必要性が高まった．そこで，従来の高速な処理速度を保ちつつ，流れる液体の表現を実現したい．容器を伝い流れる液体を表現できれば，より高い臨場感での液体操作が可能になると考えられる．ところで，流れの様子を表す言葉として，層流と乱流がある．層流とは、ある管内や面上を流れる液体の流線が，その軸と平行となる流れである．流れる液体と言えば，川を流れる水，側溝や雨樋などを流れる雨水，コップの内部を伝い流れる水など様々であるが，川のように広い範囲での流れにおいては，乱流と層流が混在するため，より複雑な流れとなり，挙動の再現には多くの計算時間が必要となる [18]．一方で，壁や容器などを伝う液体などの比較的狭い範囲での緩やかな流れでは，層流のみとなるため，比較的簡略化した計算のみでもある程度自然らしい挙動を表現することができると考えられる．前述の SPH 法のように，液体を全て粒子からなるものとして考え，ナビエ・ストークス方程式に従ってある程度正確な液体の流動を計算することも可能であるが，計算量が多く処理速度への影響が大きい [19]．ところで，本研究の最大の目的は液体の対話操作を実現することである．そのため，人が日常で扱う容器内での流れとして層流のみを対象とする．その上で少ない計算量で実現するため，流れる液体を前述の静止状態と自由落下状態の中間的な状態として考え，流動する液体を局所的な領域における体積変化に基づいて表現する．この状態を流れ状態と呼ぶ．液体体積の総和は変化しないといった物理的整合性は保ちつつ，複雑な計算を簡略化することで操作者が液体らしいと感じられる効果的な表現を行う．なお，蛇口から流れ出た自由落下状態にある水も流れる液体であると言えるが，本研究においては人が日常生活で用いる容器内での液体の運動を流れと呼ぶこととする．

第3章

流れる液体の表現モデル

16

図 3.1: 伝い流れと落下流れ

3.1

流れについて3.1.1

伝い流れと落下流れ

本モデルにおいては，流れる液体を二つに分けて考える (図 3.1)． 一つ目は容器の壁面

図 3.2: 伝い流れ

図 3.3: 落下流れ(内側) に沿って伝い流れる液体である．例えばフラスコを傾けて中の水を外へ流し出す場
合，球部に溜まっていた水は筒の部分を流れてフラスコ外へと流出する (図 3.2)．このよう第3章

流れる液体の表現モデル

17

な液体の流れを伝い流れと定義する．二つ目は容器内で落下する液体である (図 3.3)．容器
内という限られた範囲での短時間の現象であり，また，その挙動は多くの場合は整然とした
緩やかな流動であると言える．そのため簡略化した表現であっても，操作者にとって違和感のない自然な液体挙動の印象を与えられると考えられる．そこで容器外での自由落下状態にある液体と区別し，こちらは流れる液体として扱い，落下流れと定義する．静止状態，自由落下状態の液体とこれら二つの流れ状態の間での遷移，およびその表現方法について以下で
述べる．

3.1.2

領域から領域への液体流出時の流れの様子の決定

凹形状容器による液体操作時において，分割したある凸領域から別の凸領域へ液体が流出する状況を考える．流出先領域の最大容積 Vm が 0 より大きければ液体が流れた後再び領域
内で静止状態として留まるが (図 3.4(a))，そのような場合は従来どおり静止状態の液体体積へと加算することで液体の移動を表現し，流れの表現は行わない．流れの生じる範囲が狭くなり，その時間も短くなるため，操作者が流れよりも液体の移動に意識を置くと考えられるためである．一方，Vm = 0(図 3.4(b)) であるならば流れの表現を行う．接続面流出点から
鉛直下方向に辿り，接続する領域の壁面と接触する場合 (図 3.5(a)) には，落下流れの様子を表現する．接触した点を落下点と呼ぶこととする．落下点に到達した落下液体は伝い流れ
液体に遷移させ，落下点，流出点もしくは接続面流出点間での伝い流れの液体を表現する．
落下点が求まらない場合，接続面流出点より鉛直下方向に伸ばした線分が容器の口を通過するかどうかを判定する．通過しないならば (図 3.5(b))，その時刻で流出した液体は伝い流れの液体として表現する．口を通過する場合 (図 3.5(c)) は流れの表現は行わず，流出点より容器外へと自由落下させる．

3.2

伝い流れ液体の表現

3.2.1

流れの挙動の計算方法

ここでは液体の伝い流れの表現の具体的な方法を説明する．伝い流れにおいては，流れ液
体体積 Vf ，容器斜面の傾き θ0 ，流れ開始時からその挙動が継続する時間 (以下，流れ時間)tf
よりその時刻における流れの様子を決定して描画する．具体的な計算手順を以下に示す．ま第3章

流れる液体の表現モデル

図 3.4: 容器の姿勢による流出先領域の最大容積の差異

18

第3章

流れる液体の表現モデル

図 3.5: 接続面流出点，容器の口通過の判定

19

第3章

流れる液体の表現モデル

20

表 3.1: 流れの種類と始点，終点の関係
流れの種類

流れの始点

流れの終点

(静止→) 伝い(落下→) 伝い(伝い→) 伝い(静止→) 落下
(伝い→) 落下

接続面流出点
落下点
変向点

接続面流出点
変向点
流出点

接続面流出点

落下点

図 3.6: 斜面を流れ伝う液体の様子
ず，流れ時間 tf は Vf , θ0 より決定する．容器斜面の傾き θ0 は流れの始点および終点の座標から求める．流れの様子と，その始点と終点の関係を表 3.1 に表す．表中の変向点については次項で説明する．流れの途中で容器を操作し姿勢が変化，もしくは新たに液体が流出した
場合，前時刻までの流れ液体体積および現時刻での各パラメータを用いて再計算を行う．液体の運動する速度 vf は流れが生じる面の傾き θ0 から，重力加速度をもとに決定する．容器
内での液体の運動についてはその範囲が非常に狭く短時間であるため，モデル簡略化のため
等速運動を行うものとする (図 3.6)．単位時間の液体流出量は αVf /tf とする．α は変数であり，流れの経過時間によって変化する値である．流れが流出点に到達した時刻より，単位時間に流出すべき量の液体を粒子に換算して容器外へ自由落下させ，それに伴い流れ液体体積を減少させる．容器の姿勢の変化に伴い流れの様子は変化するが，上述の計算を毎時刻行うことで，少ない計算量，高速な処理速度での対話操作を実現可能である．このような計算方法により，少ない計算量で液体の自然な流れを表現する (図 3.7)．

第3章

流れる液体の表現モデル

21

図 3.7: 容器断面図，筒状部分を流れる液体のイメージ

3.2.2

単位時間流出量とその推移

単位時間あたりに流れる液体量は、流れ液体体積の減少に伴い減少させる．流れの速度が一様であると仮定するならば，流れ液体の断面積 × 流れの速度で求めることができるが，実際には容器壁面からの距離によってその速度は異なる．それを厳密に計算するには多くの計算時間を必要とし，また容器の形状や姿勢の変化によっても計算量が増大してしまう．そこで本モデルでは容器の姿勢および流れ液体体積から，単位時間あたりに流れる液体量を決定する．ところで，斜面を流れる液体のある局所的箇所での速度 v は以下の式 (3.1) で表せる

(図 3.8)．
v=

ρgw2 cosθd[1 − ( )2 ]
2µ
w

(3.1)

w は流れ液体の幅，d は液体表面から注目点までの距離，ρ は密度，µ は粘性係数である．
ある一箇所での流れ液体の速度は，斜面からの距離が大きいほど速くなる．つまり流れる液
体量の減少に伴い，単位時間にある点を通過する液体量は単調減少ではなく，曲線的に減少することとなる．そこで，時間経過に伴う流れる液体量の減少を考慮した図 (3.9) のような減少関数を用いて，人が視覚的に自然に感じられる推移を表現する．

第3章

流れる液体の表現モデル

22

図 3.8: 斜面を流れる液体のある点における速度の計算

図 3.9: 減少関数

第3章

流れる液体の表現モデル

3.2.3

容器形状に沿った伝い流れの分割

23

伝い流れにおいては容器の形状によって，例えば曲面を液体が流れる場合にはその形状に沿って流れるため，流出点，接続面流出点，落下点間の 2 点間での直線上の流れでは正確な表現ができない．そこで，容器の形状に合わせて流れを分割して考え，直進の流れを繋ぎ合わせることにより表現する (図 3.10)．その際流れの方向が変化する点を変向点と呼ぶこととする．例として図 3.10 の場合では，2 つの変向点をそれぞれ変向点 1，変向点 2 とし，接続面流出点と変向点 1 間での流れ，変向点 1 と変向点 2 間，変向点 2 と流出点間の 3 つの流
れ (伝い流れ 1，伝い流れ 2，伝い流れ 3) に分割する．各流れ間での液体の遷移は液体体積の増減により行う．例えば伝い流れ 2 のある時刻 t における伝い流れ液体体積 Vf t2 は，前時刻までの液体体積，伝い流れ 1 からの遷移液体体積 Vinf t2 (= Voutf t1 ) および伝い流れ 2 での単位時間流出量，つまり伝い流れ 3 への遷移液体体積 Voutf t2 (= Vinf t3 ) を用いて以下の式(3.2) で表せる．
Vf t2 (t) = Vf t2 (t − 1) + Vinf t2 (t) − Voutf t2 (t)(3.2)

容器を構成するポリゴン間で液体の流れの方向は変わるため，変向点は平面αと容器を構成するポリゴンの辺βとの交点を計算することで求めることが可能である (図 3.11)．平面αとは流れの始点および終点の 2 点を含み，xz 平面に鉛直な平面を表す．また，落下点を含
むポリゴンを構成する頂点から，高さが最小の点，2 番目に低い点を選択し，その 2 点を端点とする辺βを計算に用いる．面と辺の交点の計算であれば僅かな計算時間で行うことができるため，ポリゴン数の増加に伴う計算量の増加も少なく，高速な処理速度を維持することが可能である．

3.3

落下流れ液体の表現

3.3.1

落下流れの挙動の計算

落下流れにおいても，先述の伝い流れの表現モデルに基づいてその挙動の計算および表現を行う．流れの速度は伝い流れと同様の計算により決定する．つまり水平面に対して直角な容器壁面を伝う液体と同等の速度で運動することとする (図 3.12)．実世界においては容器との摩擦力や表面張力などがあるため運動の様子は異なるが，日常で扱う容器内での短時間の第3章

流れる液体の表現モデル

24

図 3.10: 流れの分割

第3章

流れる液体の表現モデル

25

図 3.11: 変向点の計算
現象であれば，人がその差異を意識して感じとるには微小すぎると考えられるためである．
液体の流出があった接続面流出点より落下点に向けて落下する液体を表現する．流れの始点
は接続面流出点，終点は落下点となるため，それらの座標を用いて流れの様子を表す各パラ
メータを決定する．

3.3.2

落下点の計算ここでは落下流れ表現のための落下点の計算方法について説明する．ある時刻において容器の様子が変化し，接続面流出点より別領域への液体の流出があったとする．その際接続面
流出点から鉛直下方向に辿り，容器の各面との交差判定を行う．交差判定が真となる面があれば落下流れを表現する．落下点の座標の計算は、交差判定が真となる面と接続面流出点を通り y 軸に平行な直線との交点を計算することにより決定する (図 3.13)．

第3章

流れる液体の表現モデル

26

図 3.12: 落下流れ

3.3.3

流れ液体と静止，自由落下状態の液体間での遷移時の体積の換算

上記流れ状態の液体と静止状態，自由落下状態の液体間での遷移とその計算方法について述べる．ある時刻において，体積 (V − Vm ) の静止状態の液体が流れの液体へと遷移した場
合，流れ液体体積 Vf に (V − Vm ) を加算する．伝い流れ，落下流れ間ではそれぞれの流れ
液体体積を互いに増減させることで換算する．遷移前の流れ A と遷移後の流れ B について，
毎時刻での各流れ液体体積は以下のように計算する．単位時間あたりに流れ B に遷移した
液体体積を VinB ，流れ A，B の単位時間流出量をそれぞれ VoutA ，VoutB とすれば，時刻 t での流れ液体体積 Vf は以下の式 (3.3) で表せる．

VfB (t) = VfB (t − 1) + VinB (t) − VoutB (t) = VfB (t − 1) + VoutA (t) − VoutB (t)(3.3)

伝い流れ液体から容器外への自由落下液体粒子への換算は従来どおり換算比 N により行う．

第3章

流れる液体の表現モデル

27

図 3.13: 落下点の計算

28

第4章

4.1

実験とその結果

実験システム

上述のモデルに基づいた仮想液体の対話操作のための実験システムを，CPU: Dual-CoreCPU E5200 2.50GHz 上で C 言語により実装した．容器の操作は低周波の磁界を利用したモーションセンサまたはマウスにより行う．本実験システムでは，モーションセンサとして

POLHEMUS 社の 3SPACE ISOTRAKII を用いた．実際に仮想液体操作を行っている様子を以下の図 4.1 に示す．操作者は，モーションセンサをコップに取り付けたフラスコ型デバ
イスを手に持ち，それを動かすことで仮想容器をより直感的に，自由に操作することが可能である．

図 4.1: 実験の様子

第4章

実験とその結果

29

まずはフラスコ型の容器 (図 4.2) で仮想液体操作を行った際の，容器内を液体が伝い流れていく様子を図 4.3，図 4.4 に示す．筒状箇所の付け根部分を始点として液体が流れ始め，時間経過に伴い容器の口部分へと流れていく様子が確認できる．流れの液体が容器の口に到達した時刻より容器外へと液体が流出している．流れ液体体積は次第に減少し，最終的に全ての流れ液体が自由落下状態の液体に換算されて容器外へと流出した (図 4.5，図 4.6，図 4.7)．

図 4.2: フラスコ型容器 (形状を示すために，ワイヤーフレームではなくサーフェースレンダ
リング)

図 4.3: 容器内を伝い流れる液体の様子

第4章

実験とその結果

30

図 4.4: 容器内を伝い流れる液体の様子

図 4.5: 容器内を伝い流れる液体と流出量の変化

第4章

実験とその結果

図 4.6: 容器内を伝い流れる液体と流出量の変化

図 4.7: 容器内を伝い流れる液体と流出量の変化

31

第4章

実験とその結果

32

図 4.8: 瓢箪型の容器 (形状を示すために，ワイヤーフレームではなくサーフェースレンダリ
ング)

次に，以下の図 4.8 のような瓢箪型の容器を用いて仮想液体を操作したときの液体挙動について示す．まず，落下流れ (容器内を自由落下する液体) の様子が図 4.9，図 4.10 である．
図中の黒い点は落下点，変向点および流出点を表している．容器のくびれ部分の 1 点，接続面流出点を始点として，液体が落下していく．図 4.11 では，落下点到達時より落下流れ
液体が伝い流れ液体へと遷移し，落下する液体と容器を伝う液体の双方が表現されている．
さらに，容器の形状に沿って伝い流れの向きが変化し，容器内を流れた後容器外へと流出していく様子を図 4.12，図 4.13，図 4.14 に示す．

第4章

実験とその結果

33

図 4.9: 容器内の落下流れの様子

図 4.10: 容器内の落下流れの様子

第4章

実験とその結果

図 4.11: 落下流れ液体の伝い流れ液体への遷移

図 4.12: 容器壁面に沿った伝い流れ液体の様子と容器外への流出

34

第4章

実験とその結果

図 4.13: 容器壁面に沿った伝い流れ液体の様子と容器外への流出

図 4.14: 容器壁面に沿った伝い流れ液体の様子と容器外への流出

35

第4章

実験とその結果

36

表 4.1: 提案モデルにおける描画更新速度についての実験結果

4.2

流れの表現の有無

描画更新速度

流れ無し (従来モデル)

平均約 104fps

流れ有り (新モデル)

平均約 85fps

実験

まず，従来の粒子・体積ベース液体操作モデルおよび流れも表現した本モデルでの仮想液
体操作時の描画更新速度をそれぞれ表 4.1 に示す．一般に人が対話操作をしている感覚を受け取るのに最低限必要な処理速度は 10-12fps 程度であると言われており，粒子・体積モデル
は対話操作性の面で非常に優れていることがわかる．また，容器内での流れる液体を表現した場合においても描画更新速度は，対話性の維持や今後の拡張性を考慮した上でも，許容範囲の低下にとどまっている．本提案モデルは，処理速度の面において問題なく液体の流れを表現できていると言える．
つづいて，フラスコ型容器による仮想液体操作時の液体挙動の自然らしさについて，主観評価実験を行った結果を以下の表に示す．実験は，まず実環境においてフラスコを用いての液体操作を，つづいてバーチャル環境において，従来モデルと提案モデルそれぞれでのフラスコ型容器による液体操作を体験してもらい，実際に受けた印象および液体操作の実感について主観的に評価してもらうという手順で行った．評価項目は以下の 2 項目である．

• 実環境での液体操作と比較した，挙動と液体らしさの評価• 操作者のイメージと比較した，液体らしさの評価
それぞれ，最高点を 7 (まさに液体そのものだと感じる)，中間点を 4(液体操作の実感は得られる) 最低点を 1 (全く液体らしく感じられない) とした 7 段階で評価してもらった．被験者は 20 代男性 8 名である．図 4.15，4.16 にその結果を示す．この結果から，本モデルにより流れを表現したことで仮想液体の自然さ，液体らしさの向上に繋がったことがわかる．また，操作者のイメージと比較した結果ではより良い評価点を得られており，たとえ厳密ではなくとも人のイメージに重点を置いた効果的な表現を行えば，人はそれを自然であると感じると言える．以上より，従来の高速な処理速度を保ちつつ，フラスコなどの凹形状容器を用

第4章

実験とその結果

37

図 4.15: 実環境での液体挙動との比較

図 4.16: 操作者のイメージする液体挙動との比較

いてのより高い臨場感での液体の対話操作を実現し，液体挙動の自然らしさの向上に繋がったと言える．

38

第5章

むすび

液体の対話操作において，その臨場感の向上のためには，よりリアリティの高い描画を行うことと同様に，液体そのものの挙動をリアルタイムに表現することも非常に重要である．
本研究では処理速度に重点をおきつつ，液体挙動の一つである流れに注目し，仮想液体操作
モデルにおいて操作者がより自然に感じられる液体らしい挙動の実現と臨場感の向上を図った．具体的には，人の意識が向かう部分に重点を置くことで計算を簡略化しつつ，液体の流れを局所的な体積変化に基づいて表現した．本モデルにより，バーチャルな環境での，化学実験器具などを用いたより現実に近い感覚での液体操作が可能となったと言える．実験結果からわかるように非常に高速な処理速度での対話操作が可能であり，液体と他物体との干渉などの実装も十分可能であると考えられる．学習システムとしての活用を期待し，今後の課題として以下のようなことを挙げておく．

•

粒子数削減による処理速度高速化のための，流れ液体表現モデルの応用粒子により表現している自由落下液体に本モデルを応用し，液体らしい自然な挙動を実現しつつ粒子数を削減し，処理速度の高速化を図る•

容器内での剛体との干渉を考慮した液体の流れの表現
揺らす，混ぜるといった操作に伴い生じる，容器内での剛体を含む液体の流れを表現することで，より多くの種類の化学実験等の実施を可能とする

これらの課題を含め，さらに VR および仮想液体に関する研究を進めることで，より高い臨場感で体験可能な化学実験体験システム「バーチャル化学実験室」の構築を目指し，また，
当研究室で開発している調理学習システムならびにその他の新たな VR コンテンツへも応用していきたいと考えている．

39

謝辞

本研究を進めるにあたって，日頃から多大な御尽力をいただき，ご指導を賜った名古屋工
業大学

舟橋健司

准教授に心から感謝致します．また，本研究に対してご検討, ご協力頂

きました名古屋工業大学 伊藤宏隆 助教，名古屋工業大学 山本大介 助教，中部大学
岩堀祐之 教授，名古屋工業大学 中村剛士 准教授，愛知教育大学 福井真二 准教授に心から感謝致します．最後に，本研究を進めるにあたり多大な協力を頂いた舟橋研究室諸氏に心から感謝致します．

40

参考文献

[1] 舘 すすむ（日へんに章），佐藤 誠，廣瀬 通孝，日本バーチャルリアリティ学会，“バーチャルリアリティ学”，工業調査会，2010．
[2] 鈴木茂樹, 山田雅之, 宮崎慎也, 長谷川純一, 安田孝美, 横井茂樹, “高速処理に適した
弾性プリミティブモデルによる仮想弾性物体とのリアルタイムインタラクション”, 芸術科学会論文誌, Vol. 2, No. 1, pp. 8-14, 2003.

[3]X.Guo, J.Hua, H.Qin, “Touch-Based Haptics for Interactive Editing on Point Set
Surfaces”, IEEE Computer Graphics and Applications, Vol. 24, No. 6, pp. 31-39, 2004.
[4] 日本 VR 医学会 http://www.jsmvr.umin.ne.jp/[5] 竹下大樹，太田真，田村真智子，藤本忠博，村岡一信，千葉則茂，“爆発火炎の粒子
ベースビジュアルシミュレーション法”，芸術科学会論文誌，Vol.3, No.2, pp.0159.

[6]Tobias Pfaﬀ, Nils Thuerey, Jonathan Cohen, Sarah Tariq, Markus Gross, “Scalable
Fluid Simulation using Anisotropic Turbulence Particles”, SIGGRAPH Asia, 2010,
ACM Transactions on Graphics, vol. 29, no. 5, pp. 174:1-174:8.
[7]Byungmoon Kim, “Multi-Phase Fluid Simulations Using Regional Level Sets”, SIGGRAPH Asia, 2010, ACM Transactions on Graphics, vol. 29, no. 5.
[8] 中林功一，伊藤基之，鬼頭修己，“流体力学の基礎 (1)”, コロナ社, 1993.
[9]Matthias Muller, Simon Schirm, Matthias Teschner, “Interactive Blood Simulation
for Virtual Surgery Based on Smoothed Particle Hydrodynamics”, ACM Technology
and Health Care, Vol. 12, No. 1, pp. 25-31, 2004.

41[10] 井村誠孝, 天田崇, 安室喜弘, 眞鍋佳嗣, 千原國宏, “複合現実環境における仮想流体とのインタラクション”, 日本バーチャルリアリティ学会第 10 回大会論文, p549-p552, 2005.

[11]Frank Losasso, Jerry O. Talton, Nipun Kwata, Ron Fedkiw, “Two-Way Coupled
SPH and Particle Level Set Fluid Simulation”, IEEE TRANSACTIONS ON VISUALIZATION AND COMPUTER GRAPHICS, VOL. 14, NO. 4, 2008.
[12]Markus Becker, Hendrik Tessendorf, Matthias Teschner, “Direct Forcing for Lagrangian Rigid-Fluid Coupling”, IEEE TRANSACTION ON VISUALISATION ANDCOMPUTER GRAPHICS, VOL. 15, NO. 3, 2010.
[13]Kenji FUNAHASHI, Yuji IWAHORI, “Representation of Swinging Liquid on Virtual Liquid Manipulation”, ICAT2001, pp. 179-184, 2001.
[14] 棚橋拓也, 舟橋健司, “粒子・体積モデルに基づく仮想液体操作システムにおける波の表現” 平成 19 年度名古屋工業大学卒業研究論文, 2008.

[15] 蒲将寛, 舟橋健司, “粒子・体積モデルに基づく仮想液体操作システムにおける色の表現” 平成 20 年度名古屋工業大学卒業研究論文, 2009.

[16]Yuki Natsume, Andreas Lindroos, Hirotaka Itoh, Kenji Funahashi，“The Virtual
Chemical Laboratory Using Particle and Volume Based Liquid Model”，SCIS & ISIS
2010, pp. 1354-1359[17]Shunsuke Miyashita, Kenji Funahashi, “Envelopment Surface Rendering of Falling
Water for Particle and Volume Based Virtual Liquid Manipulation Model”, NICOGRAPH International 2011, P02 (CD-ROM)[18] 内藤和夫, 中村安弘, 森本茂夫, 高根俊章, “温度成層した低レイノルズ数乱流場の数
値解析”, 空気調和・衛生工学会論文集, No. 23, 1983, pp. 71-79.

[19]Matthias Muller,David Charypar and Markus Gross“Particle-Based Fluid Simulation for Interactive Applications”, ACM SIGGRAPH Symposium on Computer Ani-42mation (SCA) 2003, pp. 154-159.

43

発表論文リスト

1. 夏目祐樹, 伊藤宏隆, 舟橋健司, “粒子・体積ベース仮想液体操作モデルにおける凹形状容器での液体操作の実現”, 日本バーチャルリアリティ学会第 15 回大会講演論文集,

3C1-6 (DVD-ROM), 2010
2. Yuki Natsume, Andreas Lindroos, Hirotaka Itoh, Kenji Funahashi, “The Virtual
Chemical Laboratory Using Particle and Volume Based Liquid Model”, Proc. SCIS
& ISIS 2010, pp.1354-1359
3. 夏目祐樹, 伊藤宏隆, 舟橋健司, “粒子・体積ベース仮想液体操作モデルにおける流れる液体の表現”, 日本バーチャルリアリティ学会第 16 回大会講演論文集, 32C-7 (DVD-ROM),

2011 ．