平成 20 年

卒業研究論文粒子・体積モデルに基づく
仮想液体操作システムにおける色の表現

指導教員
舟橋健司

名古屋工業大学

工学部

平成 17 年度入学

蒲

情報工学科

17115052 番

将寛

准教授

i

目次
1

はじめに

１

2

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

４2.1

液体のモデル５

2.2

仮想容器のモデル

６2.3

流出点,液位および液面

７

2.3.1

波の表現

８

2.3.2

液面の形成

９

2.3.3

容器揺動時の液面

９

2.4

3

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

１０

2.4.1

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

１０

2.4.2

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

１０

2.4.3

他の容器内の液体との干渉

１２

2.4.4

容器からの液体の流出

１３

色の変化を考慮した粒子・体積モデル

１４

3.1

液面のモデル１５

3.1.1 拡散方程式

１６

3.1.2 液面色の拡散の表現

１７

3.1.3 液面色の生成

１８

ii

4

5

3.2

自由落下状態の液体と液面色の相互作用モデル

２０

3.3

静止状態の液体の流入における液面色のモデル

２２

実験及び結果２３

4.1

実験システムの構成

２３

4.2

実験の様子

２４

4.3

実験結果及び評価

３２

むすび

３３

謝辞

３５

参考文献

３６

１

第1章

はじめに

近年，バーチャルリアリティ(Virtual Reality：以下 VR) 技術の発展により，我々の生活環境は大きく変化してきている．従来の我々の生活環境と言えば，多くの製品や建造物などの実際に存在する物体（実物体）に囲まれているのが通常であった．しかし VR 技術は，この旧来の生活環境の概念ではない全く新しい環境，新しい物体の概念を形成しつつある[1]．ここで言うVR とは，CG（Computer Graphics）のようにコンピュータの画面上にグラフィックスを表示するだけの技術ではない．コンピュータ上に仮想的に，現実ではないが現実と感じられる人工的な環境及び人工的な物体を作り出し，あたかもそこに存在しているかのような感覚を与える技術のことである．つまりは，現実と等価な仮想環境，仮想物体を生み出すことが可能であり，これによりコンピュータの世界に我々の生活環境を再現することで，新たな世界観を生みだしつつあるのである．
VR 技術の 1 つの例として，テレイグジスタンスというものがある[2]．この技術は，ネットワー
クを利用して，遠隔地の環境を操作者の近くに仮想的に構築し，操作者が遠隔地にいるかのように感じながら操作を行うことができる技術やその操作自体のことを言う．この技術の応用が期待される分野として医療の分野がある．特殊な技能を持った医師の手術が必要な患者がいる際に，その医師を訪れることなく，ロボットを用いた遠隔操作で手術を受けることができるのである．また，そういった技術を遠隔地にいる医師に教育する場面への利用も考えられ，今後の医療技術の発展及び充実につながっていくものと思われる．この技術により，貴重な医療技術をより多くの人が享受することができるようになる可能性を秘めている．
こういった VR 技術を用いた仮想空間における様々な対話操作の研究も進められている．
主な研究として，剛体や弾性体の移動,変形を行うものがある[3][4]．また一方で， 産業や医療などの分野において， 液体， 気体の操作を行なう場面があり，それを仮想的に体験したいという要望がある[5]．実際の液体ではなく， 仮想的に液体を扱える利点は， 実験コストの削減， 貴
重な物質の実験等をより容易に体験できるようになることなどがあげられる．また， 液体， 気体の対話操作は， 料理などの日常生活の仮想体験やアミューズメントの分野への応用も期待２
できる．これらは主に，実際の正確な挙動を観測するという目的と， 実験などの過程において液体や気体の操作をより臨場感ある状態で対話的に行いたいという目的の 2 つに大別できる．前者のような液体の正確な挙動を観測する目的については，流体力学に基づいた計算を行うことで観測することが可能である[6]．しかし，こういった計算には多くの計算時間が必要であり，リアルタイムの処理に応用することは難しい．
後者の対話操作を主な目的とした代表的な研究として Smoothed Particle
Hydrodynamics(以下 SPH 法)を改良して用いた M．Muller らの研究がある[7]．SPH 法とは，液体や気体を粒子の集合として考え，粒子１つ１つの挙動を流体力学などの物理法則を用いて計算し表現することで，液体の大きな変形や水しぶきの表現を可能にした手法である．この手法は主に解析などの分野で用いられており，流体力学に近い精度で液体や気体の挙動を計算することが可能である．またこの手法は，井村らにも取り入れられ仮想流体の対話操作の研究が行われている[8]．これらの研究では，液体の表現に関しては，大変優れた表現を可能にしている．しかし一方で，計算に膨大な時間を要するため，その処理速度は決して速いものではない．人は 10­12fps 以上の描画更新速度が保たれれば，リアルタイムに対話操作をしている感覚を得られると言われている．井村らの GPGPU を用いた研究では平均して約 15fpsの処理速度を実現しており，対話操作と感じられる限界に近い処理速度であるといえる．しかし，実際のシステムを構築する際には，液体の表現のみでなく，それ以外の剛体の扱いなどの様々な処理を行う必要がある．その場合，多くの処理時間が必要な SPH 法を一連の対話操作
システムの１つの要素として，組み込むことは難しいと考えられる．
一方で，当研究室ではこれまでに，仮想液体の操作に重点をおいた研究を進めており，非常に速い処理速度で仮想液体の対話操作を実現している[10][11][12]．この研究では，液体を，粒子と体積という２つの状態としてとらえ計算する新たなモデルを提案しており，
・落ちてくる液体を容器で受け取る・容器内の液体をこぼす
・容器内の液体を他の容器ですくう
・水面の波の表現
といった液体を操作する際の基本的な動作を実現している．これらの操作を実現することで，操作者は液体の対話的な操作を行い，あたかも液体が存在しているかのように感じることが３
できる．この研究での描画更新速度は，約 120fps を実現しており，対話操作に十分な処理速度を保っているといえる．
しかし，これまでの研究では色の表現や，液体内部の表現，流れの表現などの課題を残している．そこで本研究では，実用的なシステムに用いることが可能で高速に処理を行うことができる臨場感の高い仮想液体の対話操作モデルを提案する．具体的には，前述の仮想液体の対話操作が可能な粒子・体積モデル[10][11][12]を基に，静止状態における液面の色の変化する様子を表現可能にし，対話操作に十分な処理速度を保ちながら液体としての臨場感を向上させた仮想液体対話操作モデルを提案する．本モデルの応用例の 1 つとして，当研究室で開発している料理学習システム「バーチャルお料理教室」への利用が考えられる．これは料理の手順を仮想空間内で体感的に確認することが可能なシステムであり，液体の厳密な挙動を必要としない．しかし，利用者にとって，高い臨場感は直感的に手順を把握する手助けになると考えている．
以下，2 章では提案モデルの基となる粒子・体積モデルの概略を説明する．また３章ではそれらのモデルに，仮想容器で対話操作可能な仮想液体の液面における色の表現を実現した手法の説明をする．4 章では，実験及び結果，5 章では本研究のまとめを述べる．

４

第2章

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

本章では，当研究室でこれまでに提案されている粒子・体積モデルについて述べる．（文献[10][11][12]を参考）．
粒子・体積モデルとは仮想液体を粒子と体積の２つの状態に分けて考えることにより，対話操作を非常に早い処理速度で実現したモデルである．本モデルは液体としての厳密な挙動の再現を主たる目的としていないが，落ちてくる液体を容器で受け取る，容器内の液体をこぼす，
容器内の液体を他の容器ですくう，液面を波立たせるという操作が可能である．

５

2.1

液体のモデル

仮想空間における液体のモデルは,液体を以下の２つの状態に分けて考えている．

状態（1）・・・自由落下状態（水道の蛇口から落ちる水，容器から落下する水など）
状態（2）・・・静止状態（コップなどの容器に溜まる水など）

状態（1）の液体は粒子に基づいた表現を行う．また，液体の微妙な挙動の再現ではなく対話操作を第一の目標としているため，各粒子の大きさは考えないものとし粒子同士の衝突など干渉はおこらないものとしている．各粒子の 3 次元仮想空間内での時刻ｔにおける座標をPi(t)（ｉ= 1，2，．．．，Ｎ；Ｎ：粒子数・・・自由落下状態の液体）とし，それぞれの粒子は重力，慣性に従って移動する．これより，Pi(t)は 次式
Pi t =2 Pi t− t−Pi t −2  tg  t 2 . ・ ・ ・ 1

により決定される．ここで，ｇは下向きの重力加速度ベクトルであり，Δt は描画更新間隔，
すなわち描画更新レート（frames/sec．）である．空気抵抗による広がりを表現する場合は，式（1）の右辺に微小乱数値 Ri(t)を加える．
状態（2）の液体は，体積に基づいた表現を行う．すなわち，ある時刻ｔにおいて仮想空間内に定義した容器内に液体が存在している場合は，その容器内に体積 V(t)の液体が存在している，と表現する．この時，先に述べた粒子としての液体の性質は一切考慮しない．また，この状態の液体は，容器内の対流などの大きな挙動は考慮しないが，臨場感を出すために表面的な挙動として液面に波の表現を付加している．2.3.1 節以下にて波の表現方法の詳細を述べる．
なお，上記 2 つの状態の換算は換算比 N[粒子数/体積]によって行っている．例えば，容器を傾けることにより容器内に存在している体積 V の静止状態の液体をすべて落下させると，容器内の体積は 0 となり,自由落下状態の液体の粒子数が NV 個増加する．

６2.2

仮想容器のモデル

液体との相互作用を考慮すべき仮想空間に定義する容器としては，操作者が移動させるとのできるもの（以下移動容器）と，空間内に固定されたもの（以下固定容器）の２つがある．この研究では両者を同様に扱い，容器は凸形状であるものと仮定し以下のように各パラメー
タを設定する．
このモデルでは図 2.1（左）に示すように，仮想空間内に存在する容器を内包する球を考え，球の中心 C，半径 r とする．また，図 2.1（右） に示すように C を原点とする容器座標系（軸Xc ，Yc，Zc）を設定する．
軸 Yc と球との交点（図中 d1）の位置の変化（極座標的な表現）により容器の傾きを表す．具
体的には，Xc を軸として点 d1 が点 d2 に移動するように容器を角度 φ だけ回転し，更に Zc を軸として点 d2 が点 d3 に移動するように角度 θ だけ回転する．これにより，2 つのパラメータ θ とΦ で容器の傾きを表現することができる．ともに値が 0 の時には，容器は「傾いていない」状態である．更に，容器の方向の変化として Yc を軸として 角度 ψ だけ回転を行うが，これによる容器内に満たしうる液量の変化はない．これら C，φ，θ，ψ は，それぞれの容器ごとに設されており，移動する容器については時刻 t の関数として表されている．

図 2.1:仮想容器を内包する球（左），傾きの表現方法（右）

７

2.3

流出点,液位および液面容器に入っている液体の体積が最大容積を超えた場合に液体が流れ出す点を流出点 F とする．厳密には流出点が線分になる場合もあるが,本研究ではそういった例は少数であると考え，液体は一点の流出点から溢れるものとしている．流出点 F を点 C を基準とする相対的なベクトル F として次式により表す．

F =f  ,  ,  ・ ・・ 2
容器内で静止している液体の液面の高さを液位と呼ぶ．本モデルにおける静止状態では，液体が完全に静止している状態における液面を基準に，波の表現も行う．以下，この基準とす
る液面を基準液面と呼ぶ．また，単に液面と呼ぶ場合は波の表現を含む液面を指すものとする．また液位が容器の最上部に達したときの体積を最大容積 Vm とする．容器内の液体の体積が V（V≧0）であるとき，液位 H は点 C から鉛直方向へ H の位置に存在するものとする．

H= h  ,  , V  ・・ ・ 3
液位 H の存在範囲は，容器を内包する球の半径がｒであることより-r<H<r となるが，容器の形状や傾きによって更に狭い範囲に存在する．式（7）を体積 V について変形することにより次式を得る．

V = v  ,  ,H  ・ ・・ 4

式(8)において容器より下方の H を与えた場合 V=0，点 F よりも上方の H を与えた場合はV = v(θ， φ， Fy) = Vm(θ， φ)としている．このとき F ｙは F の鉛直方向の座標であり，角度ψ に依存しない．

V  = v   ,  ,H  ・・ ・ 5

また，液位 H のときの基準液面よりも下方に存在する容器の厚みを考慮した体積を式（5）の++ようにし，同様に液位が最大となるときは V =Vm と表現する．容器の厚みを考慮しない場合+

は V =V として扱う．

８

2.3.1

波の表現

以下に，静止状態の液体の液面に，波の表現を付加するための手法を述べる．
この手法では，液面を格子状に分割した平面として考えることで波の表現を試みている．各
格子点は上下方向のみに移動可能とし，時刻 t における格子点（i，j）の高さを h[i][j]とする．格子点による波の伝播を，２次元波動方程式を差分方程式として解くことで表現している．式（6）に，2 次元波動方程式を示す．なお，2 次元波動方程式は，リアルタイムで計算可能なため対話処理を目的とする本研究に適している．



2

2

2

∂ z 2 ∂ z ∂ z
=v
 2
2
2
∂t
∂z ∂y



･ ･ ･ 6式（6）の v は波が液面上を伝播する速度であり座標(x，y)における波の高さ z の関係を表している．これを格子点間隔 d で中央差分で近似することにより次式を得る．

h [i][ j]t t−2 h [i][ j]th[i][ j]t− t/ t 2=h [i1][ j] th [i−1][ j]th [i ][ j1]th [i][ j−1] t−4 h [i][ j]tv 2 / d 2 ･ ･ ･ 7

ここで，⊿t に対して次式が成立するように v と d を設定すると仮定する．
2

v t
d2

2

=

1
･ ･ ･ 8
2

これにより，h[i][j]に関する漸化式を得る．実際には波の減衰を考慮する必要があるため，次の漸化式に示すように右辺に減衰係数 c を乗じる．

h [i][ j ]t t =h [i1][ j]t h [i−1][ j]t h [i ][ j 1]t h [i ][ j−1]t /2−h [i][ j ]t− t×c･ ･ ･ 9

９

2.3.2

液面の形成

上述のモデルは，格子状に区切られた各格子点において計算を行うため，その液面を表示
する際は格子を連続して表示する必要がある．そのため，正方形，長方形の液面のみに対応している．しかし液面は，その液量や容器の傾きによって様々な多角形になると考えられるため，容器内の液面を表示するには，容器内に存在する格子だけを液面として表示する必要がある．
また,このモデルでは，仮想空間内の仮想容器は凸形状のものを考えているため,液面は凸多角形として考えている．
このモデルでは，凸多角形と各格子点について外積を用いて内外判定を行い，内側と判定された格子点を含む格子を表示している．これにより，凸多角形の液面の表示を可能にしている．また，凸多角形の辺は仮想容器の壁面に相当するため，辺上に存在する格子点には高さを
常に 0 とすることで波を反射させるという特徴を持たせている．また，液面と容器の境界付近において，アンチエイリアス処理を行うことにより，境界付近における表示の不自然さを低減さ
せている．

2.3.3

容器揺動時の液面

現実でコップに入った水などの液体は，コップの動きに合わせてその液面が揺れ波立つ．これは，容器が移動した際，その移動方向に加速度が生じるためである．この加速度は，１ frame
前の容器の速度と現在の速度から求められる．この加速度で仮想容器に生じさせている下向きの重力加速度 g を擬似的に変更することにより,容器内の基準液面は平らのままであるが揺れ動くという挙動を実現している．また，この操作と共に，簡単なベクトル計算をすることで液面に波を発生させている．
時刻ｔにおいて基準液面（コップなど移動容器）が動いた方向ベクトルをｄとし，容器が移動し|ｄ|＞0 となったとき，液面において挙動を変化させる．波の発生地点は,容器の移動方向において後ろに当たる辺を計算し，その辺から波を発生させている．また，この研究では厳密な挙動

１０の再現を第一の目的としていないため経験的な値により波を発生させている．これらの計算はとても単純なものであり，対話操作性には影響しない．

2.4

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

2.4.1

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

落下中の液体（粒子）が基準液面に達した場合，その液体を状態(1) から状態(2) に変換する．つまり， 粒子としての液体を消滅させ，体積としての液体に換算する．実際の処理においては，判定すべき容器を内包する球の中に存在する各粒子についてのみ詳細を判定し，ある容器の口を通過した粒子が n 個 (n ≧ 0) の場合，その容器内の時刻 t における液体の体積を次式により仮に設定している．

V  t  0= V  t − t n / N. ・ ・・ 10

次節で述べる静止状態の液体と容器との干渉がなければ，時刻 t における容器内の液体の(1)(0

体積を V(t) =V(t) とし，H  t =h  ,  , V  t 1  ・・ ・ 11

により液位を決定している．
また，自由落下してきた液体が基準液面に達した際に，液面には波が形成される．その際の挙動の再現については，仮想容器の口を通過する⊿t 秒前の粒子の座標 Pi(t-Δt)を容器座標系へと変換し，この座標において液面の格子点の高さを減少させることにより初期の波を発生させている．その後，2.3.1 節で述べた手法により波を伝播する．

2.4.2

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

移動容器（容器 1）と固定容器（容器 2）の中の液体との相互作用について述べる．各記号の添字 1，2 は各容器 1，2 に対応している．時刻 t において式（12）が成立する場合，容器 1

１１と容器 2 内の液体は互いに干渉しているものとする．

C1y −r1C2y  h2  2 , 2, V 20  . ・・ ・ 12

ここで，Cjy は容器 j の位置 Cj の鉛直方向の座標である．このとき，容器 2 内の液体の液位が容器 1 により上昇させられている体積を U21≧0 とし，容器 2 の液位が他の全ての容器により上昇させられている体積を上昇体積を式（13）としている．

U 2= j U 2j ・・ ・ 13

容器と液体が干渉しており，かつ次式が成立する場合は，容器 1 の流出点よりも下の部分と容器 2 の基準液面が干渉している．

C2y h 2 2 , 2, V 2 0 Vm 1 C1y F 1y . ・ ・・ 14

上式が成立しない時は，容器 2 内の液体内に容器 1 の流出点が入り込んだと見なし，容器 1に容器 2 内の液体を流入させている．また，容器 1 が容器 2 内の液体に干渉しているとき，容器 1 内に含まれる容器 2 の液面部分は，本来存在しないため表示されてはいけない．つまり，
時刻 t において式（12）が成立する場合，容器２の液面は図 2.2 のように容器 1 に干渉された部分の形をした穴をあける必要がある．

１２
この研究での液面表示は，2.3.2 節で述べたように内外判定を用いて多角形の内側の格子
点を表示させているため，容器 1 の液体内に入り込んだ部分の多角形を求めその多角形内の点を意図的に外側であるとすれば良い．また，基準液面に仮想容器が触れたり液体内で容器が動いた際に液面には，波が発生する．その波の挙動は，次のような手法で実現されている．
容器２内の液面のある格子点が時刻 t-Δ ｔで容器１内に含まれ，時刻ｔで含まれないとき格子点の高さを増加させる．その反対で，ある格子点が時刻ｔ-Δ ｔで容器 1 内に含まれず，時刻t で含まれるとき格子点の高さを減少させる．また，時刻ｔ，ｔ-Δ ｔの両方において容器 1 内に含まれる場合はその格子点の高さを 0 としている．これにより，容器 1 に波が衝突した際の反射波の生成と，容器 1 が動くことによる波の生成を可能としている．

2.4.3

他の容器内の液体との干渉

容器と基準液面が干渉している場合には，容器 1 が容器 2 の液位を上昇させる．このとき，
容器 2 の液位 H2 を式（15）を満たすように設定している．また，それぞれの容器内の液体の体積を Vj(1)=Vj(0) とし，容器 1 の液位を式(11) により求める．

H2= h2 2 , 2 , V 20 U 21 . ・・ ・ 15
U 21= v1 1 ,  1 ,C2y H2−C1y  . ・ ・・ 16

式(17)を満たす時に，容器 1 に容器 2 の液体が流入する．またその時，さらに式（18）が成立す
る場合は，液体の流れ込みは容器 2 の基準液面が容器 1 の流出点に達した時点でとまる．

C2y H2C1y F 1y ・ ・・ 17

V 20 U21 −v 2 2 , 2 ,C1y F 1y −C2y  Vm1− V 10 . ・・ ・ 18

この時，液体が流入する場合には容器 2 内の液位は容器 1 により上昇されている．これを考慮し容器 2 の基準液面を式(19)により決定する．また，それに合わせて各容器の体積を計算し

１３（式（20）, （21）） ，容器 1 の液位は式(11)により決定する．

H2= C1y F1y −C2y . ・ ・ ・ 19
V 21 =v 2 2 , 2 ,H2 −U 21 . ・ ・ ・ 20
V 11 V 2 1= V 1 0 V 2 0 . ・・ ・ 21式（18）が成立しないとき，容器 1 の流出点より容器 2 の基準液面が上方に存在する．このときは容器 1 の液体の体積 V1(1)を最大容積 Vm1，液位 H1 を r1 に設定し液面は表示しないものとする．容器 2 の液体の体積と液位は式（20）と式（22）により決定する．

H2= h2 2 , 2 , V 21 U 21 . ・・ ・ 22

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

2.4.4 容器からの液体の流出

上述の干渉や容器の傾斜により，時刻 t において式（23）をみたす場合は，液体が容器から流(1)出する．その際に，容器内に存在する体積としての液体の一部を N(V + U – Vm)個の粒子として点 F から流出させ，時刻 t における容器内の液体の体積を式（24）により決定する．なお，
式（23）を満たさない場合は,液体粒子の流出はなく V(t)=V(t)(1）である．

V1 U  Vm . ・ ・・ 23H2= h2  2 , 2 , V 21 U 21 . ・・ ・ 24

１４

第3章

色の変化を考慮した粒子・体積モデル

ある液体の液面に，インクなどの色のついた液体が流入すると，流入地点のまわりの色と混合しながらゆっくりとその領域が広がっていく．実際の厳密な挙動を再現するには，液面の流れ,内部の対流，流入液体の特徴など様々な要因を考慮しなければならない．こういった厳密な挙動を再現するには，流体力学などの手法を用いることで可能である．しかし，これらの手法
は，非常に多くの計算量を要するためリアルタイムで描画処理を行うことは難しい．よって，本章では，液面の色の変化を考慮した仮想液体の対話操作モデルを提案する．
本研究では，リアルタイムで計算可能な拡散方程式[13]を用いて，粒子・体積モデルに基づ
く仮想液体の液面の色が変化する様子を表現する．

１５

3.1

液面のモデル

本研究では，液体の液面にインクなどの色がゆっくりと広がっていく様子を表現することを目的としている．また，対話操作を第一の目的としいるため，従来の粒子法などではない新しい手法を提案する．そのため， リアルタイムで計算可能な拡散方程式を用いることにより，そう
いった表現を試みる．
また,本研究の基となった粒子・体積モデルでは，液面を格子状に分割し，その各格子点において 2 次元波動方程式を計算することで波の表現を行っている（2.1.1 節参照）．本モデ
ルで用いる拡散方程式は 2 次元波動方程式と式の形状が類似しており，平面上のある点における値の変化を計算する式であるため，同様の格子状の液面を想定する．そして，各格子点に色の情報を持たせることにより液面の色の表現を可能にする．各格子点は，色の情報として色のベクトル値 C(RGBA 値)と，色の伝播を実現するための重みを表す変数 P（以下，重み P） を持つ．例えば，ある格子点は重み P で色 C である，というように表現する．図 3.1 に概念図を示す．なお，色のベクトル値 C（RGBA 値）とは，光の三原色である赤（R），緑（G），青（B），の値に透明度を表す Alpha 値（A）を加えた，色を表現する際に用いられる手法の一つである．以下に，液面色を変化させる方法を述べる．

図 3.1:同色における重み P の違いによる色の濃淡の違い

１６

3.1.1

拡散方程式

本節では，色の自然拡散の表現に用いる拡散方程式について述べる．
自然界において，静止状態の水の中に静かにある液体が流入した場合，その液体は時間とともに水全体に広がり，やがて混ざり合い均一な状態になる． これは流入液体内の微小粒子や溶媒内の微小粒子が衝突を繰り返しながら，ランダムに熱運動し，溶媒中に広がっていくためである．このような現象は拡散現象と呼ばれ，それを数学的に記述した式が拡散方程式である．拡散方程式は，物質中における温度の伝わり方のシミュレーションなどにも用いられる．
次式に，２次元拡散方程式を示す．

∂ Q x , y , t
∂ 2 Q x , y ,t  ∂ 2 Q  x , y , t=D
. ･ ･ ･ 25
∂t
∂ x2
∂ y2

ある多量の粒子が時刻とともに拡散していく状態を考えると，Q は時刻 t の x,y 平面上における粒子の濃度分布，D は拡散係数と言い粒子が拡散する速度を調整する定数である．この式（25）を，格子点間隔 d を用いて中央差分で近似することで式（26）を得る．
Q[i ][ j ]t t −Q [i][ j]t/ t=Q[i1] [ j] tQ[i−1][ j]tQ[i][ j1]tQ[ i][ j−1]t−4 Q[i][ j ]t  D/ d 2 ･ ･ ･ 26

ここで Δt について，D t= D ' ･ ･ ･  27
d2とおき，簡略化し式を整理することで式（２８）の漸化式を得る.

１７
Q[i][ j ]t t =Q[i][ j]tQ[i1][ j] tQ[ i−1][ j]tQ[i][ j1]tQ[i][ j−1]t−4Q[i][ j ]t  D '･ ･ ･ 28この D’の値を調節することで，Q の値が拡散する速度を調節することができる．式（28）により，
時刻 t+Δt における位置 i,j の粒子の濃度を求めることができる．以下の節に，拡散方程式を用いた色の拡散方法を述べる．

3.1.2

液面色の拡散の表現

液面において，重み P を拡散させる手法を以下に述べる．まず液面を格子状に分割する．この格子は，２章の格子と同じものである．この格子状の液面に対して，上述の拡散方程式を差分方程式として解いたものを適応し，重み P を拡散させる．なお今回は液面のみでなく，液体内部に液面から下に Δh 間隔で数枚の液面を想定し，それらの情報も液面に反映することにより，よりリアリティの高い液面の表現を目指す．そのため，上述の 2 次元拡散方程式を基に，３次元拡張したモデルを提案する．なお，液体内部における液面の計算は，図 3.2 の様に液面以下に数枚程度の仮想の液面があると仮定し計算を行っている．また，描画速度の問題から,液体内部の液面の描画は行わない．式（29）に重み P についての 3 次元拡散方程式を示す．



∂Px ,y ,z ,t 
∂ 2 P  x , y , z , t ∂2 P  x , y , z , t  ∂2 P  x , y , z , t=D
. ･ ･ ･ 29
∂t
∂ x2
∂ y2
∂ z2

今回の実験では，3 枚の液面を想定し実装している．以下に，式（29）を中央差分により近似し簡略化した漸化式を示す．
 P [i][ j ][k]tt− P [i][ j ][k]t / D '=P [i1][ j][k]t P [i−1][ j][k]tP [i][ j1][k]tP [i][ j−1][k]t
P [i][ j ][k1]tP [i][ j][k−1]t−6P [i] [ j ][k]t・ ・ ・ 30

１８
各格子点には,初期状態では色のベクトル値の初期値と,容器内に存在する体積としての液体を換算比 N[粒子数/体積]で粒子数に直したものを容器内の格子点数で割った値を重み P の初期値として用いている.

図 3.2:液面と液体内部の仮想液面の関係

3.1.3

液面色の生成上述手法により毎フレームごとに各格子点の重み P が拡散する．それに伴って，各格子点の持つ色の値 C も変化させる必要がある．以下に重み P を用いて，液面の色を生成する手法を述べる．
各格子点の時刻 t + Δt における色の値 C を式（31）を用いて決定する．

１９
C [i ][ j ][k]tt −C [i ][ j ][ k]t∗P [i][ j ][k]t t/ D '=C [i1][ j][k]t  P [i1][ j][k]tC [i−1][ j][k]t  P [i−1][ j][k]t 
C [i ][ j1][k]t P [i ][ j1][k]tC [i ][ j−1][k]t  P [i ][ j−1][k]t 
C [i ][ j ][k1]t P [i ][ j ][k1]tC [i ][ j ][k−1]t  P [i ][ j ][k−1]t −6P [i][ j ][k]t・ ・ ・ 31

各格子点の色の時刻 t+Δt における値は，式（30）により求めた時刻 t+Δt の重み P の値と，
時刻 t における近傍格子点の色 C および重み P の値により表される．
毎フレームごとに，重み P を求め，それに合わせて色 C を生成し液面に表示させることで，液面の色が徐々に拡散していく様子を表現することができる．また拡散が進み，各格子点に重みP の値が均等に分布し，格子点間の重みの勾配が小さくなった場合および初期状態においては，拡散は行われるが，重み P の値が平衡状態に近くなるため液面の色は変化していないよ
うに見える．

２０

3.2

自由落下状態の液体と液面色の相互作用モデル

各容器内に存在する液体と，自由落下状態の液体との相互作用モデルについて述べる．本
研究では，粒子・体積モデルと同様に，自由落下状態の液体を粒子として考えている．落下中の液体（粒子）が各容器の基準液面に達した際は，粒子としての液体から体積としての液体に換算され，容器内の体積が増加する（2.4.1 節参照）．粒子としての液体が液面に達したとき，その粒子が持つ色と容器液面の色とを混合する必要がある．以下に，その手法を述べる．

図 3.3:自由落下液体と液面の干渉時の色の変化図

自由落下状態の液体の粒子は，３次元仮想空間内での時刻ｔにおける座標が Pi(t)（ｉ= １，
２，．．．，Ｎ；Ｎ：粒子数）で表される．各粒子の座標は重力，慣性および描画更新レート Δt に従い式（1）のように計算される（2.1 節参照）．時刻 t において，ある粒子状態の液体が体積状態の液体へと変換された場合，その位置座標(流入地点)は，t­Δt の粒子状態の液体の位置座
標を，容器座標系に変換することで近似的に求めることができる．その点において，次式を用いて流入地点の座標 x,y,z における色の重み P を更新する.

２１

P[ x ][y ][ z ]t t =P [ x ][ y ][z ]t ･ ･ ･ 32V は流入した粒子の色の値(RGBA 値)であり，α は濃度の増加量で，通常は計算する液面の数で 1 を割ったものを用いている．式(32)で求めた重み P の値を用いて，次式で流入地点の色の値を決定する．

C [ x ][ y ][ z ]t t=C [ x ][ y][ z ]t  P [ x ][ y][z ] tV･ ･ ･ 33P [ x ][ y][z ] t

上式で計算した色の値が(3.1.2 節および 3.1.3 節)の拡散方程式により，毎フレームごとに更新されることで液面に流入した色が広がっていく様子が再現される．また，式（23）を満たすとき，
仮想容器から液体が流出する．その際，流出する粒子状態の液体の色は，液面の色の平均の値とした．液面色の平均値の算出は，容器内に存在する格子点の数 L と色の値から次式の様に算出する．

∑ C [i][ j ][k ]t

AVERAGE = L

L･ ･ ･ 34

２２

3.3

静止状態の液体の流入における液面色のモデル

時刻 t において式（17）が成立する場合，容器 2 内の液体が容器 1 に流入する．このとき，
容器 1 の液面色は,容器 2 から流入してきた液体の色により変化させる必要がある．本研究では,流入は厳密な液体が流れ込む挙動は考慮せず，容器間の体積の移動のみにより表現
している（2.4.3 節参照）．そのため，液面の色の表現に 3.2 節に述べた自由落下状態の液体との干渉の手法をそのまま用いることができない．よって，以下の手法により流入時に液面色が変化する表現を試みる．
容器 2 内の液体が容器 1 に流入している時，容器 1 の液面における流入地点を x1，y1，z1とし，容器 2 の液面の流出地点を x2,y2,z2 とする．容器 2 の流出地点と，容器 1 の流入地点およびその近傍点で液面間の色の伝播を行い，3.1 節の手法で液面色を拡散し，流入時の液面を表現する．伝播は，流入地点およびその近傍点に，流出地点の色の値 C を与え，また重み Pとして，流入による容器 1 の増加体積を換算比 N[粒子数/体積]で粒子数に直した値を，伝播する格子点数で割った値を与える．
容器 1 内に液体が存在している状態で流入があった場合は，上述の手法で容器 1 の液面に流入液体の色が拡散する．また，容器 1 内に液体が存在していない状態で流入があった場
合は，容器 1 の液面色は容器 2 の液面色の平均値を用いる．

上記の手法により液体の流入時に液面色を変化させることができる．

２３

第4章
4.1

実験及び結果

実験システムの構成

上述のモデルに基づいた仮想液体の対話操作のための実験システムを
CPU:Dual-Core AMD Opteron(tm) Processor 1210 1.8GHz
GPU:GeForce 7600 GT 256MB
上で C 言語により実装した．なお，GPU は GPGPU としては利用していない．
本実験システムでは，仮想容器として操作者が移動可能である移動容器と，操作および移動が不可能な固定容器の２種類を実装する．移動容器の位置と傾きは低周波の磁界を利用したモーションセンサまたはマウスによって入力される．本実験システムでは, モーションセン
サとして POLHEMUS 社の 3SPACE ISOTRAK Ⅱ を用いた．
固定容器には初期状態で 8500cc 相当の仮想液体が入っているものとし，各仮想容器の形状は図 4.1，2 に示す形に設定する．また自由落下状態の液体の粒子数と静止状態の液体の体積の換算率 N は 10 粒子数/cc とした．液面を表示する際の格子点間隔は 4cm 相当とし，計算する液面数は 3 枚とした．また，画面右上に仮想的な蛇口を作成した．ここから
1frame あたり 1cc 相当の液体を無限に流出させる．この蛇口から流出した液体は,地面より下方に落下した時点で消滅させている．ここで述べる単位は仮想空間内で仮に設定したものであり，現実の大きさに合わせたものではない．

図 4.2:移動容器

２４

4.2

実験の様子

実際に実験を行っている様子を以下に示す．モーションセンサをコップに取り付けたコップ
型のデバイスを用いて実験を行った．これにより,操作者は感覚的に仮想容器を操作することが可能である．

図 4.3:コップ型デバイスを用いた実験の様子

２５

仮想液体の操作を行う仮想空間は，初期状態で図 4.4 のようになっている．図中にあるよ
うに，仮想空間には蛇口が設置され，そこから絶えず粒子状態の仮想液体を発生させている．
また，仮想空間内の床面に設置された固定容器には一定量の仮想液体が入っており傾きはない．移動容器は画面中央にあり，仮想液体は入っておらず傾きもない状態である．

図 4.4:初期状態

２６

次に，仮想容器から液体が流出する様子を図 4.5（a），（b）に示す．図 4.5（a）は，容器を傾けた状態であり，図 4.5（b）は，傾きにより流出点に達した液体が流出している様子がわかる．

（a）

（b）
図 4.5:液体がこぼれる様子

図 4.6（a）には移動容器の静止状態の液面を，図 4.6（b）には容器の揺動により波立った状態の液面を示す．

（a）
図 4.6:移動容器の液面が波立つ液面の様子

（b）

２７

以下の図 4.7 に，固定容器の液面が波立つ様子を示す．図 4.7（a）は，液面が波立つ様子を示している．図 4.7（b）では，移動容器で固定容器液面に干渉した際に液面が波立つ様子がわかる．
図 4.7（c），（d）には，自由落下状態の液体と液面が干渉した際の液面が波立つ様子を示す．自由落下状態の液体の落下地点に図 4.7（c）で波が発生し，図 4.7（d）でその波が広がっていく
様子が分かる．

（a）

(b)

(c)

(d)
図 4.7 固定容器の液面が波立つ様子

２８

移動容器の液面に自由落下状態の液体が流入した際に，自由落下状態の液体の色と移動容器液面の色が混合しながら，液面に広がっていく様子を図 4.8（1）〜（６）に示す．液面は，自由落下状態の液体の流入した地点から混合しながら徐々にその色の領域を広げていく．また，容器から溢れ出た液体の色は，液面の平均色（3.2 節参照）となっていることが分かる．

(1)

(2)

(3)

(4)

(5)

(6)

図 4.8:自由落下状態の液体の流入に伴う移動容器の液面色の変化

２９

上述の自由落下状態の液体による移動容器の液面色の変化と同様に，固定容器も液体の流入によりその液面色を変化させる．以下の図 4.9（1）〜（4）に液体が流入してから徐々に拡散し，やがて一定の色に近づいていく様子を示す．

（1）

（2）

（3）

（4）

図 4.9 : 自由落下状態の液体の流入に伴う固定容器の液面色の変化

３０

固定容器内に 2 色の液体を流入させた場合の時間変化に伴う液面色の変化を，図4.10（1）〜（4）に示す．2 種類の異なった色が時間経過と共に混合していく様子がわかる．

(1)

(2)

(3)

(4)

図 4.10:固定容器の液面における異なる２色の液体が混合する様子

３１

固定容器内の液体が移動容器内に流入する際の，液面色の変化を図 4.11（1）〜（6）に示す．
流入地点から色が全体に拡散していく様子が分かる．

(1)

(2)

(3)

(4)

図 4.11:容器干渉時の流入による液面の変化する様子

３２

4.3

実験結果及び評価

本モデルの処理速度を，描画更新速度（fps）の観点から計測した．速度の計測は，マウスにより操作した場合と，モーションセンサを用いたコップ型デバイスを操作した場合の２つのケースを考えた．ここで，各々について色の変化がない状態（従来モデル）で描画を行った場合と色の変化を行う状態（提案モデル）で描画を行った場合の描画更新速度を計測し比較した．結果を以下の表に示す．

表 4.1:描画更新速度についての実験結果
描画更新速度
マウス使用

モーションセンサ使用

色の変化なし平均 170fps

色の変化あり平均 130fps

色の変化なし平均 30fps

色の変化あり平均 25fps

一般的に，対話操作を操作者が実感するためには，約１５ fps 以上の処理速度が必要とされている．本粒子・体積モデルは,対話操作を第一の目的としたモデルであり，上記の結果からも十分に対話操作が可能なシステムであると言える．モーションセンサを用いたコップ型デバイスを使用した場合は，センサの更新速度の制限によりマウス使用時より遅くなっているが，
１５ fps 以上の処理速度を保っており，センサの利用を考慮しても対話操作が可能であると言える．
また実際に，数名の被験者に色の変化を考慮した粒子・体積モデルの仮想液体を操作し体験してもらったところ，液体が混合する様子を実感でき実際の液体のように扱えるなど積極的な意見を頂いた．また，違和感なく仮想容器を動かすことができ，実物の容器を操作しているよ
うに感じるといった意見も多く得られ，第一の目的である対話操作も実現できたといえる．

３３

第5章

むすび

本研究では，仮想液体を対話的に操作できることを主な目的とし，高速な処理速度を維持
しつつ液体の色が混合し拡散する表現や挙動を実現した．液体の厳密な挙動を表現するには，さまざまな手法がある．しかし対話操作を考えた際,その処理速度の観点からリアルタイムで実現できる手法は多くはない．また，こういった仮想液体を一連の対話操作システムの 1 つの要素として用いるためには，さらに高い処理速度が必要である．そこで，本研究では新たな仮想液体のモデルを提案した．これを用いることで，自由落下してくる液体を仮想容器で受け止める，他の容器に入っている液体をすくう，容器内の液体をこぼす，という操作および，操作の際に液面を波立たせる，という表現がリアルタイムで可能となった．そして，容器内に液体が流入した際に，液面に流入液体の色が自然拡散し色が混合していく様子を表現することが可能になった．このことにより，より臨場感あふれる液体操作を実現することができた．
今後の課題を以下に挙げる．
●

水しぶきの表現
液面に落下してきた液体や剛体が干渉した際に，その勢いや波の高さに応じて水しぶきを発生させるといった挙動の実現．

●

流れの表現
実際の液体には液面の流れや，液体内部の対流などが存在する．それに伴って，液面の挙動が変化する．液体の入った容器をスプーンのようなものでかき回すと渦が巻くといった挙動の実現．

●

重さ情報を持つ仮想物体のとの相互作用容器だけでなく仮想空間内に操作可能な物体を作成し，それら物体が仮想液体に浮いたり沈んだりするような挙動の実現．

●

液体内部の表現
現在は，処理速度の観点から液面のみの描画を目的としている.対話処理が可能な液体内部の様子も計算および描画できるモデルの考案．

３４
また，仮想液体モデルを他の VR コンテンツへ組み込むことも今後の課題である．当研究室で開発している料理学習システム「バーチャルお料理システム」などにシステムの一部として仮想液体を組み込むことを検討中である．

３５

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

舟橋健司准教授に心から感謝致します．

また，本研究に対して御検討，御協力を頂きました名古屋工業大学 伊藤宏隆
古屋工業大学士

山本大介

准教授，愛知大学

助教,中部大学

福井真二

岩堀祐之

教授，名古屋工業大学

助教，名
中村剛

講師に心から感謝致します．

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

３６

参考文献
[1]日本バーチャルリアリティ学会,サイバースペースと仮想都市研究委員会,http://www.vrsj.org/main.html[2]多田隈理一郎,宗玄清宏,南澤孝太,上田佑介,園田哲理,千種大雅,関口大陸,梶本裕之,
川上直樹，舘すすむ,”相互テレイグジスタンスのための人型スレーブロボットの開発”,日本バーチャルリアリティ学会第１０回大会論文集,p ４８３-p ４８６,２００５.

[3]鈴木茂樹,山田雅之,宮崎慎也,長谷川純一,安田孝美,横井茂樹,”高速処理に適した弾性
プリミティブモデルによる仮想弾性物体とのリアルタイムインタラクション”,芸術科学会論文
誌,Vol.2,No.1,pp.8-14,2003.

[4]X.Guo,J.Hua，H.Qin,”Touch-Based Haptics for Interactive Editing on Point Set
Surfaces”,IEEE CG&A,pp.31-39,2004.

[5]VR 医学会,http://www.jsmvr.umin.ne.jp/[6]中林功一,伊藤基之,鬼頭修己,”流体力学の基礎（1）”,コロナ社,1993.

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

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

３７[9]小栗進一郎,舟橋健司,”一般家庭を対象とした VR 調理学習システムのための固体郡操作モデルの検討”,平成 19 年度名古屋工業大学卒業研究論文,2008.

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

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

[12]Takuya Tanabasi,Hirotaka Itoh,Kenji Funahashi,Yuji
Iwahori,”Representation of Wave Surface on Virtual Water Manipulation”,SCIS& ISIS ,pp.1460-1465,２００８.

[13]河合潤,”物理工学・化学工学を学ぶための熱・物質移動の基礎”,丸善,２００５