平成 21 年度

卒業研究論文粒子・体積ベース仮想液体操作モデルの凹形状容器への対応

指導教員
舟橋

名古屋工業大学

工学部

平成 18 年度入学

夏目

情報工学科

18115121 番

祐樹

健司

准教授

i

目次

第 1 章 はじめに

1

第 2 章 粒子・体積に基づく液体モデル

4

2.1

2.2

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

5

2.1.1

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

5

2.1.2

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

6

2.1.3

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

7

2.1.4

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

8

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

9

2.2.1

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

9

2.2.2

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

9

2.2.3

液面の上昇 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.4

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

2.2.5

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

第 3 章 液体操作モデルの凹形状容器への拡張

3.1

凹形状容器のモデル

3.1.1
3.2

3.3

12

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

分割により生じる凸領域と接続面流出点 . . . . . . . . . . . . . . . . 14

容器内の液体の挙動とその液面 . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2.1

凸領域からの液体の流出 . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2.2

液位の統一 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.3

液面の統一 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.4

液面描画の処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

容器内への空気の流入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

ii

3.4

3 つ以上の凸領域を含む凹形状容器へのモデルの適用 . . . . . . . . . . . . . 23

第 4 章 実験とその結果

24

4.1

実験システムの構成

4.2

実験の様子

4.3

実験結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

第 5 章 むすび

35

謝辞

37

参考文献

38

1

第1章

はじめに

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

VR 技術を我々の生活に取り入れることは, 資源の節約やコストの削減, 実施の容易さといった面で, また実験などでは危険の回避にも繋がるなど非常に大きな利点があると言える.
これらの理由から VR 技術を用いるための研究が行われており, 対話操作についての研究も行われている. ところで, かつての対話操作に関する研究では, 主に剛体や弾性体に着目し,その移動や変形の再現を目的としていた [2][3]. それら以外にも, 我々の周りに存在する代表的なものとして流体が挙げられ, 液体や気体などがそれに該当する. 流体にはその形状が不

第1章

はじめに

2

安定で連続的に変化しやすいという性質があり, その挙動の計算は剛体と比較して難しいと言える. しかし, 流体は剛体や弾性体と等しくもしくはそれ以上に身近なものである. 例えば, 朝起床してまず何をするかという問いかけに対して, 顔を洗うと答える人が大多数を占めるであろう. その際蛇口から流れ出る水をこぼれ落ちないように両手で受け止めるという動作を行う. また, 朝食として味噌汁を作るときにも液体を混ぜる, すくうといった動作を行う. 学校に行けば, 化学の実験の時間にはフラスコに入った液体を振り, その挙動を目で見て確認する. このように液体や気体といった流体を扱うという機会は非常に多く, また医療や産業といった側からのそれらを仮想的に操作したい, 扱いたいといった要望もある [4]. そのため, 現在仮想的な流体の操作に関する研究が様々なところで進められている.

VR の研究を行う上では, 主に以下の二つの点に重点を置く必要がある. まず一つ目は, いかにして実物体の挙動を厳密に再現できるかどうかである. 例えばある仮想的な液体を用いることで, 液体本来の挙動を確認したい場合には, 仮想液体が示す挙動は実物体により近いものとなることが望ましい. そのためには流体力学などの複雑な計算を用いることも必要となるため, より正確な挙動の再現はできるものの計算量が増加し, 処理速度の低下は避けられず
対話操作には向いていない [5].
もう一つは, 操作するということに着目し, いかに臨場感のある対話操作を実現できるかということである. この場合は高い処理速度を保てるかが重要であり, 挙動を厳密に再現することはできなくても, 実際に操作しているという感覚を操作者が受け取ることができるのであればよしとする. 以上の二つの点を同時に実現することは難しく, それぞれの方面からの研究が進められている.
流体の対話操作を目的とした研究の一つに,Smoothed Particle Hydrodynamics(以下 SPH法) といった手法を用いたものがある. SPH 法では, 流体を粒子の集合からなるものとして考え, 粒子一つごとの運動について物理法則を用いた計算を行うことで, より正確な挙動の再現を可能としている. これを用いた研究が M.Muller らにより提案されており, 精度の高い流体の対話操作を実現している [6]. さらに, この手法を用いた研究は井村らによっても行われている [7]. これらの研究は, 挙動の表現については非常に優れている反面, 計算量が大きいために処理速度は遅く, 実際に井村らによる研究では約 15fps ほどである. また, 一般に人が対話操作をしている感覚を受け取るためには 10-12fps の処理速度が必要であると言われており, 最低限の処理速度を保ったものであると言える. さらに流体のみでなく, 他物体との干渉

第1章

はじめに

3

も考慮する必要がある場合には, この方法を用いることは難しいのではないかと考えられる.
同じく対話操作を目的とした研究として, 当研究室では臨場感と処理速度の向上に重点をおいた粒子・体積ベースに基づく仮想液体操作モデルの提案を行っている [8][9]. このモデルの大きな特徴として, 液体を自由落下状態においては粒子とし, 静止状態においては体積とした二つの状態に分けて考えていることが挙げられる. 操作者は, 流れ落ちる液体を受け取る,
容器内の液体をこぼす, 別の容器内からすくい取るといった動作が可能である. これらの動作は, 我々が液体を液体として認識するために無意識に行う基本的な動作であるといった考えに基づき実装されており, 液体らしさの実感を人に与えるうえで非常に効果的なものであると言える. また, さらに液面の波や色の広がりなどの表現も実装されたモデルも提案され,より液体として感じとることができ, 実際に液体を操作しているという感覚も十分受けられるとしている [10][11].
粒子・体積ベースに基づく仮想液体操作モデルでは,4 章に記した本研究での実験環境と同
じ環境において, 描画更新速度が約 850f ps であり、非常に速い処理速度での液体の対話操作を可能にしている. そのモデルに液面の波や色の広がりなどを実装したモデルにおける描
画更新速度も約 130f ps である. 流体のみでなく, 他物体との干渉を考慮する必要がある場合においても, 十分な処理速度を保つことができると考えられ, 対話操作を行ううえで非常に優れたモデルであることがわかる.
このモデルにおいて現在, 残されている課題の一つに, 容器の形状を凹形状にも対応させるということが挙げられる. ここでいう容器の凸形状とは容器の凸包と一致するものをあらわしており, また, 凹形状とは容器の凸包と一致しないものをあらわしている. これまで仮想容器の形状は凸形状に限定されていた. しかし, 我々の環境には様々な形状の容器が存在しており, 凹形状をしたものも少なくはない. 凹形状容器による液体の対話操作の実現は, 現在当研究室で構築している調理学習システム「バーチャルお料理教室」や化学実験体験システム「バーチャル化学実験室」における臨場感の向上のために必要なことである. そこで本研究では, 凹形状容器対応へのモデルの拡張を行い, 様々な場面を想定した対話操作の実現を目指す.
以下, ２章では提案モデルの基となる粒子・体積モデルの概略について説明する. また３章
では, それらのモデルでの対話操作における仮想容器の形状の拡張を実現した手法の説明をする. ４章では, 実験及び結果, ５章では本研究のまとめを述べる.

4

第2章

粒子・体積に基づく液体モデル

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

第2章

粒子・体積に基づく液体モデル

2.1

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

2.1.1

仮想液体のモデル

5

このモデルにおいては, 液体を以下の 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章

粒子・体積に基づく液体モデル

2.1.2

仮想容器のモデル6

仮想空間内に存在する仮想容器は全てモデルのうえでは平行移動, 回転可能なものとなっている. これらの容器は凸形状であるとしておく. 以下は仮想空間内における容器の表現の仕方である.
まず, ある容器に対してそれを内包する球を考える. その球の中心を 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.1: 仮想容器を内包する球と傾きの表現

第2章

粒子・体積に基づく液体モデル

2.1.3

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

7

容器内で静止している液体の液面の高さを液位と呼び, 容器内に入り得る液体の最大量を最大容積 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章

粒子・体積に基づく液体モデル

2.1.4

体積計算のための LUT

8

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

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

第2章

粒子・体積に基づく液体モデル

2.2

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

2.2.1

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

9

落下中の液体 (粒子) が容器の口を通過した場合, その液体の状態を状態 (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章

粒子・体積に基づく液体モデル

10

容器と液体が干渉しており, かつ次式 (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

11

(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) である.

12

第3章

液体操作モデルの凹形状容器への拡張

粒子・体積ベースに基づく液体操作モデルでは, 仮想空間内に存在する容器を用いて液体の対話操作を行うことが可能である. このモデルにおいては,2.1.3 節で述べたように, 容器内の静止状態としての液体の表現はその体積から液面の高さを定めてその位置に液面を描画することにより行っている. 容器が凹形状である場合には液体が容器内で複数の箇所に分かれることもあり, 同体積の液体であってもその様子は一意には定まらず, この方法では正確に表現できない. そのためこれまでの当研究室の研究では, 容器の形状は凸形状に限定されていた. しかし, 我々の周囲に存在する容器には凹形状をしたものも多くある (図 3.1). それらの容器を仮想空間内に再現し, それを用いた液体の臨場感ある対話操作の実現のため, 本研究では液体操作モデルにおける容器の凹形状対応のための拡張を行う.

図 3.1: 実世界における凹形状の容器 (文献 [12])第3章

液体操作モデルの凹形状容器への拡張

3.1

凹形状容器のモデル

13

凸形状容器と凹形状容器との最も重要な差異として, 後者では一つの容器内で液体が 2 箇所以上に分かれて存在することがあるという点が挙げられる. 凸形状容器では, 容器内の液体は常に一箇所にまとまって存在する. そのため容器内の静止状態の液体は, その体積がある値のときの容器内での液面の高さの存在位置を求め, その位置に液面の描画を行うといった方法で容易に表現することが可能である. しかし,2 箇所以上に分かれて存在するような場合には, それらの液面の高さが等しくなるとは限らず, また容器内での液体同士の干渉についても考えなければならないためこの方法では表現できない. そこで, 凹形状容器を複数の凸形状容器からなるものとして考える. ただし, 容器は枝分かれのような分岐構造はもたないものであり, 口は 1 つしかもたないものとしておく. 一つの凹形状容器を, 領域数が最少となる
ように, かつ分割されたすべての領域が凸形状となるように分割を行う. また, 分割された面は平面であるとする. 分割された各領域を容器の口に近いものからそれぞれ分割領域 a,b,…,とする (図 3.2). 分割された面は口と区別して接続面とし, 各領域間の接続面を接続面 ab, 接続面 bc,…, と呼ぶこととする. なお, これら凸領域への分割は現時点では手動で行う. これら
凸領域内に存在する液体間の相互作用を考えることにより, 凸形状容器モデルを用いた凹形状容器による液体操作を実現する. 以下では分割により生じる凸領域は a および b の 2 つとして話を進めるが,3 領域以上からなる場合についても同様の考え方を適用可能である.

図 3.2: 凹形状容器を凸領域に分割

第3章

液体操作モデルの凹形状容器への拡張

3.1.1

分割により生じる凸領域と接続面流出点

14

容器から容器外へと液体が流出する点が流出点であるが, これと区別し, ある領域から別の領域へと液体が流出する点は接続面流出点とする. 接続面流出点は, ある接続面を構成する頂点の中で世界座標における鉛直方向 y 座標が最小の点である. これら流出点, 接続面流
出点を各分割領域それぞれについて考える. まず, 容器の口と接続面の両方が存在する, もし
くは接続面が複数存在する領域について説明する. 分割領域 a には容器の口と接続面が存在
し, これに該当する. このとき, 液体の流出先は容器外もしくは分割領域 b の 2 通りが考えられる. 分割領域 b における液体体積 Vb と最大容積 Vmb が等しい場合には, 分割領域 a において口を構成する頂点から流出点を決定し, 最大容積 Vma を計算する (図 3.3(a)). このとき接続面流出点については考慮しない. 対して,Vb が Vmb 未満であるならば, 容器の口を構成する
頂点から流出点を, 接続面 ab を構成する頂点から接続面流出点を決定する. 最大容積の計算には, 流出点および接続面流出点から鉛直方向 y 座標の値の小さい方を選択して用いる (図3.3(b),(c)). また, 接続面が 2 つ存在する分割領域においては,2 つの接続面から接続面流出点を決定し, 最大容積の計算を行う. 次に分割領域 b であるが, 接続面 1 つのみしか存在しないため, 接続面 ab を構成する頂点の中から接続面流出点を決定し, 最大容積 Vmb を計算する.

図 3.3: 容器断面図, 流出点と接続面流出点の選択および最大容積の計算

さらに, 容器の口を含まない分割領域, 例えば分割領域 b については, 接続面流出点の存在しない分割領域 b0 も考える. 分割領域 b0 の最大容積は容器の傾きによらず一定であり, 常に
領域そのものの体積と等しいものとする (図 3.4).

第3章

液体操作モデルの凹形状容器への拡張

15

図 3.4: 接続面流出点の存在しない分割領域 b’ の最大容積

次式 (3.1),(3.2) を満たすとき容器は分割領域 a および分割領域 b0 からなるものとする. ただし,lowab は接続面 ab を構成する頂点の中で世界座標における鉛直方向 y 座標が最小の点の y 座標,Cay , Cby はそれぞれ領域 a,b を内包する球の中心の y 座標である.

lowab ≤ Cay + Ha

(3.1)

lowab ≤ Cby + Hb

(3.2)

第3章

液体操作モデルの凹形状容器への拡張

3.2

容器内の液体の挙動とその液面3.2.1凸領域からの液体の流出

16

本節では, 一つの容器を分割することにより生じた凸領域からの液体の流出について述べる. ある時刻 t のとき, 各分割領域について, 領域内液体体積が最大容積を越えているならば液体が流出する. このとき, 液体は容器外へ流出するか別領域へと流入するかの 2 通りの場
合に分けられる. 前者はその分割領域に流出点が存在し, かつ流出点の鉛直方向 y 座標が接続面流出点の y 座標よりも小さい場合 (図 3.5(a) の分割領域 a), または接続する領域の体積と最大容積が等しい場合である. 分割領域 b のように, 流出点が存在しない, つまり容器の口を含まない領域からの流出であれば後者となる. もしくは, 接続する領域の体積が最大容積未満であり, かつ流出点の鉛直方向 y 座標が接続面流出点の y 座標よりも大きい (図 3.5(b)の分割領域 a) のであれば別領域へと流入する.

図 3.5: 分割領域からの液体の流出

容器外への液体の流出については, その分割領域における流出すべき液体体積を換算比に基づいて粒子に変換し, 自由落下させる. 別領域への流入では, 流出すべき液体体積と等しい
値だけ領域内の液体体積を減算し, 接続している領域内の液体体積にそのまま加算する. つまり, 領域間での液体の流出入は, 各領域内の液体体積の増減のみで表現する. ただし, 次節に述べる液位の統一が行われている場合には, 各分割領域それぞれについて液体の流出を考えるということはせず, 凹形状容器全体についての最大容積 Vm を計算し,Va + Vb > Vm であれば (Va + Vb ) − Vm の液体体積を粒子に変換して自由落下させる.

第3章

液体操作モデルの凹形状容器への拡張

3.2.2

液位の統一

17

液位の統一とは, 各領域内の液体体積の合計を保存したまま液面の高さを等しくすることである (図 3.6). 各分割領域の液位について, 次式 (3.3),(3.4) を満たすのであれば液位の統一を行う. ただし,higha , highb はそれぞれ分割領域 a,b を構成する頂点の中で世界座標における鉛直方向 y 座標が最大の点の y 座標である.

lowab ≤ Cay + Ha ≤ highb(3.3)

lowab ≤ Cby + Hb ≤ higha(3.4)

この式を満たす場合においては, 流出, 流入にともなう領域間での液体の移動は, 液位を統一することにより行う. 2 章で示したように, ある容器において, それを内包する球の中心からみた液位 H の相対座標の y 座標は, 液体体積 V および容器の傾きの角度 θ, φ の関数として表される. 各分割領域 a, b について, 以下の連立方程式 (3.5) を液位統一後の液体体積 V 0について解くことにより, 統一後に内部にあるべき液体体積を求めることができる.

{

Cay + Ha (Va0 , θa , φa ) = Cby + Hb (Vb0 , θb , φb )Va + Vb = Va0 + Vb0

図 3.6: 液位の統一

(3.5)

第3章

液体操作モデルの凹形状容器への拡張

3.2.3

液面の統一

18

各分割領域について, 液面が常にそれぞれ独立して存在していては, 色の拡散や波の伝搬といった挙動が独立してしまい液面の自然な表現はできない. そこで次式 (3.6),(3.7) を満たすときには, 各領域 a,b における液面を構成する頂点 a_v1,a_v2,...,a_vi と b_v1,b_v2,...,b_vi
を用いて, 新たに頂点 ab_v1,ab_v2,...,ab_vi より構成される一つの凹型の液面を作成することで液面の統一を行う (図 3.7).

lowab ≤ Cay + Ha ≤ highab(3.6)

lowab ≤ Cby + Hb ≤ highab(3.7)

液面の統一を行うことで, 複数の領域におけるそれぞれの液面としてではなく, 容器全体における一つの液面となり, 既に提案されている手法を応用することで色の拡散や波の表現の実現が可能となる. これにより, 凹形状容器内での液体の挙動はより自然なものとなり, 液体
らしさの向上につながると考えられる.

図 3.7: 液面の統一

第3章

液体操作モデルの凹形状容器への拡張

3.2.4

液面描画の処理19

ある時刻 t での描画すべき液面は, そのときの容器内での液体の存在の仕方により異なる.
各分割領域における液位 H について次式 (3.8),(3.9) を満たすとき, 容器内で液体が 2 箇所に分かれて存在している. このとき液面の描画はそれぞれの分割領域について行う (図 3.8(a)).
ただし, 各領域において V = 0 であるならば液面は存在せず描画しない.

Cay + Ha < lowab(3.8)

Cby + Hb < lowab(3.9)

次式 (3.10),(3.11) を満たすときは液位と液面の統一が行われており, 統一した一つの液面の描画を行う (図 3.8(b)).

lowab ≤ Cay + Ha < highab(3.10)

lowab ≤ Cby + Hb < highab(3.11)

次式 (3.12),(3.13) を満たすときは液位の統一は行うが液面の統一は行わない. したがって各領域についてそれぞれ液面の描画を行う (図 3.8(c)).

highab ≤ Cay + Ha < highb(3.12)

highab ≤ Cby + Hb < higha(3.13)

つづいて, 上述の式 (3.8)-(3.13) を満たさないときの処理について説明する. 例えば分割領
域 b について, 接続している分割領域 a の液位が分割領域 b を構成するすべての頂点よりも高い位置に存在している場合には, 分割領域 b における液面は存在しないものとし, 描画しな
いこととする.

第3章

液体操作モデルの凹形状容器への拡張

図 3.8: 液面の描画

20

第3章

液体操作モデルの凹形状容器への拡張

3.3

容器内への空気の流入

21以上の考え方に基づいたモデルは, 各分割領域内への空気の流入の仕方については特に考慮されていない. そのためいかなる場合においても, 液体の流出に伴い, 流出した液体体積と等しい体積の空気が常にその分割領域内に流入することになる (図 3.9 の (a)). 実世界においてこのような挙動を示すのは, 容器の素材がシリコーンゴムなどからできており, 液体は通過しないが気体は通過するという性質を持つ場合である. そこで, 容器の素材が気体の通過しないものである場合におけるモデルについても考える. その場合, 容器の傾きとそれに伴う液位の変化により, ある時刻の前後で分割領域内に空気が流入して液体が急激に流出する(図 3.9 の (b)). ここでは処理速度を重視し, 挙動の厳密な再現はせずに簡易的かつ効果的であると考えられる表現を行う. 先に述べたモデルからの変更点を以下に示す.

3 章節での液位の統一の条件は次式 (3.14),(3.15) を満たすときとする. ただし,highab は接続面 ab を構成する頂点の中で世界座標における鉛直方向 y 座標が最大となるものを選択したときのその y 座標である.

lowab ≤ Cay + Ha ≤ highab(3.14)

lowab ≤ Cby + Hb ≤ highab(3.15)

さらに, 分割領域 a の液位について次式 (3.16) を満たすのであれば分割領域 b からの液体の流出はないものとする.

Cay + Ha < highab(3.16)

これにより, 容器の傾きの変化に伴い, ある時刻を境に容器内に空気が流入して液体が急激に流出する, という様子を表現することが可能である.

第3章

液体操作モデルの凹形状容器への拡張

図 3.9: 空気の流入の仕方の違い

22

第3章

液体操作モデルの凹形状容器への拡張

3.4

3 つ以上の凸領域を含む凹形状容器へのモデルの適用

23

凹形状容器は大きく分けて直列型と分岐型の 2 つに分類できる. 直列型とは凸形状を一列に繋げることで表現可能なものであり, 分岐型とは枝分かれの構造をもつものである (図 3.10).
直列型であれば, 分割により生じる凸領域が 3 つ以上である場合でも, 先述したモデルに基づき実装可能である. また, 分岐型についても, ある程度は現段階でのモデルをそのまま適用可能であるが, 容器の形状により液体の流出先や液面の統一の場合分け等を考慮する必要があり, 汎用性といった面を考えると十分ではない. そこで, 分岐型への対応とその汎用的なモデルの作成を今後の課題とする.

図 3.10: 直列型, 分岐型の凹形状容器の例

24

第4章

4.1

実験とその結果

実験システムの構成

上述のモデルに基づいた仮想液体の対話操作のための実験システムを

CPU:Dual-Core AMD Opteron(tm)Processor 1210 1.8GHz
上で C 言語により実装した.
本実験システムでは, 仮想容器として操作者が自由に移動, 回転操作可能である移動容器(図 4.1 右側の容器) と, 操作不可能な固定容器 (図 4.1 左側の容器) の 2 種類を実装する. 移動
容器の位置と傾きは低周波の磁界を利用したモーションセンサまたはマウスにより入力される. 本実験システムでは, モーションセンサとして POLHEMUS 社の 3SPACE ISOTRAKIIを用いた.
固定容器と移動容器の形状はあらかじめ設定しておく. 画面右上には水源があり, そこから

1frame あたり 1cc 相当の自由落下状態の液体が無限に流出することとする. 以下の図 4.1 は仮想容器を操作して流れ落ちる液体を受けとめている様子である.
地面より下方に落下した液体については全て消滅するものとする. また, 自由落下状態の液体の粒子数と静止状態の液体の体積の換算率 N は 10 粒子数/cc とする. 本実験においては液面の波および色の拡散の表現は行われていない.

第4章

実験とその結果

図 4.1: 仮想空間内で液体を受けとめる様子

25

第4章

実験とその結果

4.2

実験の様子

26

実際に実験を行っている様子を以下の図 4.2 に示す. 操作者は, モーションセンサをコップに取り付けたコップ型デバイスを手に持ち, それを動かすことで仮想容器をより直感的に, 自由に操作することが可能である.

図 4.2: 実験の様子

第4章

実験とその結果

27

まず例として, 凸形状容器から液体が流出する様子を図 4.3, 4.4 に示す. 図 4.3 では容器がある程度傾いているがこの時点では液体の流出はない. さらに容器を傾けていくことで, 図4.4 のように容器外へ液体が流出する.

図 4.3: 容器内の液体図 4.4: 液体が容器外へこぼれる様子

第4章

実験とその結果

28

次に, 移動容器の形状を凹形状へと変更し, それを用いて仮想液体の操作を行う.
以下の図 4.5, 4.6, 4.7 は容器の傾きの変化にともない容器内で液体が移動している様子である.

図 4.5: 容器内での液体の移動

また, 図 4.7 においては一つの容器内で液体が液位の異なる 2 つの集まりとなり分かれて存在している.

第4章

実験とその結果

29

図 4.6: 容器内での液体の移動

図 4.7: 容器内で液体が移動し,2 箇所に分かれている様子

第4章

実験とその結果

30

図 4.8, 4.9, 4.10 は容器内への液体の流入につれ内部の液体体積が増加し, 液面が上昇していく様子である. 図 4.9 は容器内で液体がある領域から別の領域へと流入している様子をあらわしている.

図 4.8: 液体の流入にともなう液面の上昇

図 4.10 では次第に容器内の液体体積が増加した結果, 液位と液面の統一がなされている.

第4章

実験とその結果

31

図 4.9: 液体の流入にともなう液面の上昇

図 4.10: 液体の流入にともなう液面の上昇, 液位と液面統一

第4章

実験とその結果

32

さらに移動容器の形状を別のものへと変更し, それを用いた仮想液体の操作の様子を以下の図 4.11, 4.12, 4.13 に示す.

図 4.11: 別の凹形状容器による液体操作とその液面の様子

容器の傾きの変化にともない容器外へ液体が流出し, 液面が変化していく様子がわかる.

第4章

実験とその結果

図 4.12: 別の凹形状容器による液体操作とその液面の様子

図 4.13: 別の凹形状容器による液体操作とその液面の様子

33

第4章

実験とその結果

4.3

実験結果

34

本研究におけるモデルの有用性についての検証を, 従来の粒子・体積に基づく液体操作モ
デルでの凸形状容器での仮想液体操作時と描画更新速度について比較することにより行う.
仮想容器の操作をマウスおよびモーションセンサを用いたコップ型デバイスそれぞれで行い,得られた結果について比較する. 凸形状および凹形状の仮想容器はそれぞれ等しくポリゴン
数 14 のものとした. 以下にその結果を示す.
表 4.1: 提案モデルにおける描画更新速度についての実験結果
描画更新速度
マウス使用

凸形状容器
凹形状容器

平均約 850fps
平均約 820fps

モーションセンサ使用

凸形状容器
凹形状容器

平均約 30fps
平均約 30fps

この結果からも分かるように粒子・体積ベースの液体操作モデルは対話操作性の面で非常に優れている. 凹形状容器による操作時においても描画更新速度は速く, 対話操作性を維持しつつモデルの凹形状容器への対応がなされたといえる. また, 液面の波の表現 (文献 [10]),色の拡散表現 (文献 [11]) を適用しても十分な処理速度で実行できると考えられる.
実際に数名の被験者に凹形状容器による液体の対話操作を体験してもらったところ, 容器
内での液体の移動といった挙動や液面が特に注目され, 違和感は感じられず実際に液体を扱っているという印象を受けるといった意見をいただくことができた. 凹形状容器での対話操作を実現したことによって, より臨場感の高い, 対話操作可能な化学実験システムなどの VR コ
ンテンツの構築を行うことができると考えられる.

35

第5章

むすび

液体の対話操作において, その臨場感の向上のためには, 液体の流れや波などの挙動に関する改良はもちろんであるが, すくう, 混ぜるといった人が液体を扱う際に自然と行う動作そのものを実現することも非常に重要である. 本研究では, 粒子・体積ベースの液体対話操作モ
デルにおける容器の形状について着目し, 容器の形状がより身近なものになることは液体を実際に操作しているという感覚が高まると考え, 凹形状容器への対応モデルを作成すること
で臨場感の向上を目指した. 提案モデルによる実験システムでは, 凹凸のある様々な形状の容器での液体の対話操作を行うことが可能である. 今後は, 容器の形状といった面での改良をさらに進めると同時に, 液体の挙動そのものに関する研究も行っていきたい. そこで今後の課題として以下のようなことを挙げておく. これらはすべて対話操作での実現を前提としたものである.

•分岐構造をもつ凹形状容器による液体の対話操作の実現
枝分かれフラスコのような容器内での液体の移動が多岐にわたるものによる仮想液体の操作を実現する.

•

凹形状液面での波の表現及び色の拡散の表現
凹形状の液面においても, 波や色の拡散の表現を実現することにより臨場感や液体らしさの向上を目指す.

• 様々な仮想物体と液体との相互作用
仮想空間内において, 重力や浮力により物体が上下に運動するといった挙動を実現する. 例として, 水中に浮きを沈め手を離したときの挙動が挙げられる.

•固体を含む液体をかき混ぜる操作の実装と液体の流れの表現
液体をかき混ぜることにより, その内部および液面には複雑な流れが生じる. それらの互いの干渉などを考慮したうえでの液体及び固体の挙動の表現を行う.

第5章

むすび

36

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

37

謝辞

本研究を進めるにあたって, 日頃から多大な御尽力をいただき, ご指導を賜った名古屋工業
大学 舟橋健司 准教授に心から感謝致します．また, 本研究に対してご検討, ご協力頂きました名古屋工業大学

山本大介 助教, 名古屋工業大学

伊藤宏隆

助教に心から感謝致します．最後に, 本研究を進めるにあたり多大な協力を頂いた舟橋研究室諸氏に心から感謝致
します．

38

参考文献

[1] 日本バーチャルリアリティ学会
http://www.vrsj.org/main.html[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] 中林功一, 伊藤基之, 鬼頭修己,“流体力学の基礎 (1)”, コロナ社,1993.

[6]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.

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

[8] 舟橋健司, 岩堀祐之,“仮想容器による仮想液体の対話操作モデルと一実現法”, 日本バー
チャルリアリティ学会論文誌,Vol.5,No.4,pp.1087-1094,2000.

[9]Kenji FUNAHASHI,Yuji IWAHORI,“Representation of Swinging Liquid on Virtual
Liquid Manipulation”,Proc.ICAT2001,pp.179-184,2001.

[10] 棚橋拓也, 舟橋健司,“粒子・体積モデルに基づく仮想液体操作システムにおける波の表現” 平成 19 年度名古屋工業大学卒業研究論文,2008.

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

[12] テックジャム:メスフラスコ 3L
http://www.tech-jam.com/