粒子・体積モデルによる仮想液体の対話操作に関する検討
舟橋健司 *

岩堀祐之 ** 名古屋工業大学情報処理教育センター〒 466-8555

名古屋市昭和区御器所町 , Tel: (052)735-5527{kenji, iwahori}@center.nitech.ac.jp

本論文では，新たに提案する仮想液体操作モデルによる，仮想空間における液体の対話操作の実現方法について述べる．提案するモデルは計算機内部での液体をその状態により分類し，自由落下状態においては粒子に基づき，静止状態においては体積に基づき表現している．本モデルは対話操作を第一の目的としたものであり，CGによるリアリティの高い映像の生成や，挙動の厳密な再現を主たる目的とするものではない．作成した実験シス
テムでは，落下してくる液体を仮想の容器により受け止め，溜めておくことが可能である．また容器を傾けるなどして溢れ出させることも可能である．さらに，他の容器から液体をすくいとることも可能である．

仮想液体，対話操作，液体モデル，粒子・体積モデル

Interactive Manipulation of Virtual Liquid
Based on Particle and Volume ModelKenji FUNAHASHI*, and Yuji IWAHORI**Educational Center for Information Processing, Nagoya Institute of Technology
Gokiso-cho, Showa-ku, Nagoya 466-8555 JAPAN, phone: +81 52 735 5527
{kenji, iwahori}@center.nitech.ac.jp
This paper describes a new method to realize an interactive manipulation of virtual liquid using avirtual case. The proposed model represents the liquid in the free fall condition as particles, while it does that in thestay condition as volume. The main purpose of this model is the realization of virtual liquid manipulation, while thegeneration of high quality computer graphics images nor simulating the exact behavior of the liquid, are not themain. Our system with this proposed model makes it possible to catch the liquid using the virtual case, to hold theliquid in it, then to flow away the liquid with tilting it. Also the system realizes the manipulation to skim the liquidfrom another liquid case.
virtual liquid, interactive manipulation, liquid model, particle and volume model

１．はじめに

２．液体のモデル，状態の分類

近年のハードウェア技術の進歩にともない，バーチャルリアリティ(VR)技術の研究，開発分野

本文では仮想空間における液体の状態を以下のように分けて考える．

において仮想空間における様々な対話操作の実現(1) 自由落下（例えば，水道の蛇口などから流れ出の試みが行われている．筆者らを含め，これまでは仮想空間に存在する固体（剛体や弾性体）を対てくる水）(2) 静止状態（例えば，コップなどの容器の中に話的に移動，変型することを目的としていた（[1]-溜っている水）[3]など）．しかし，産業や医用などの分野において液体，気体の操作を行う場面は実在し，それを状態(1) の液体については粒子に基づく表現を行う．各粒子は，大きさを考えないものとし，粒子仮想的に体験したいという要望もある．また液

どうしの衝突などの干渉はおこらないものとす

体，気体に対する対話操作は，料理などのように，日常生活の仮想体験やアミューズメントの分野へる．各粒子の３次元仮想空間内での時刻 t における座標を Pi(t) (i = 1, 2, ... , N; N: 粒子数，すなわちの応用も期待できる[4]．

自由落下状態にある液体) とする．それぞれの粒

流体力学の分野においては，液体や気体などの挙動の分析を主とした研究が行われている（例え子は重力，慣性に従って移動する．すなわち，Pi(t)は，時刻 t-Δt における座標 Pi(t-Δt) に移動量 Pi(t-ば[5]）．この分野では計算速度に重点をおかずにΔ t) - Pi(t-2 Δ t) と重力による加速を考慮して厳密な過程，結果を求めることを最大の目的としている．仮想空間における対話操作の実現には速(1)Pi(t) = 2Pi(t- Δ t) - Pi(t-2 Δ t) + g Δ t2により決定する．ここで，g は下向きの重力加速い計算速度を必要とするため，仮想液体操作の実度ベクトルであり，Δt は描画更新間隔，すなわち現に流体力学に関する研究の成果を直接適用することはできない．また，コンピュータグラフィッ描画更新レート (frames/sec.) の逆数である．空気抵抗などによる広がりを表現する場合には，式(1)

クス(CG)の分野では，パーティクル（粒子）シスの右辺に微小乱数値 Ri(t) を加える．

テムによる霧や水流の近似的な表現が試みられているが，これも対話操作を実現するためには不十状態(2) の液体は体積に基づき表現する．
すなわ
ち，時刻 t において液体が仮想空間内に定義され分な計算速度である（例えば[6]）．

た容器の中に存在する場合，上述した粒子の性質

本研究では，新たな仮想液体操作モデルを提案することにより，仮想空間における液体の対話操は考慮せず，その容器の中に体積 V(t) の液体が存在していると表現する．それぞれの状態の換算は作を実現する[7]．
提案するモデルでは計算機内部N[粒子数/体積] によるものとする．例えば，あるで扱う仮想の液体をその状態により分類し，自由落下状態においては粒子に基づき，静止状態にお容器の中の体積 V の液体を容器を傾け全て落下させた場合，容器の中の液体の体積は 0 となり，自いては体積に基づき表現している．本モデルは対

由落下状態の液体としての粒子数は NV 増える．

話操作を第一の目的としたものであり，CG によるリアリティの高い映像の生成や，挙動の厳密な３．液体と容器との相互作用モデル再現を主な目的としていない．本モデルに基づき3.1 仮想容器のモデル作成した実験システムでは，落下してくる液体を操作者が自由に動かすことのできる仮想の容器で受け止め，容器の中に溜めておくことが可能である．また操作者が容器を傾けるなどして液体を溢れ出させ，落下させることも可能である．さらに，他の容器から液体をすくうことも可能である．
以下，2 節では仮想空間における液体の表現方法について述べる．3 節では仮想の容器と液体と仮想空間に定義する液体との相互作用を考慮すべき容器としては，操作者が移動することのできるものと，仮想空間内に固定されたものがある．
ここでは両者を同様に扱い，また容器は凸形状であるものと仮定する．将来的には，凹形状な容器を分割処理することにより，凸形状な容器が隣接しているものとして扱うことも考えていきたい．の干渉について述べる．作成した実験システムの図１に示すように，容器を内包する球を考える．容器が球に内接する必要はない．この球の中説明，操作例に対する考察を 4 節，5 節で行う．

心座標を C ，半径を r とする．容器の３次元空間

における位置は C により表現する．また，図２に示すように C を原点とする容器座標系（軸 xc, yc,合，その液体は状態(1) から状態(2) に変わる（図５）．実際の処理においては，判定すべき容器をzc）を設定する．軸 yc と球との交点（図中 d1）の内包する球の中に存在する各粒子，すなわち次式位置（極座標的な表現）により容器の傾きを表すものとする．具体的には，zc を軸として点 d1 がを満たす各粒子についてのみ詳細を判定する．
|| C - Pi(t) || < r.
(5)

点 d2 に移動するように容器を θ 回転し，さらに容器の口を通過した粒子が n 個 (n ≧ 0) の場合，

点 d2 と 軸 zc を含む平面内で C を中心として点d2 が点 d3 に移動するように φ 回転する．これに換算率 N により時刻 t における容器内の液体の体積を V(t- Δ t) からより，２つのパラメータ θ と φ で容器の傾きがV(t) = V(t- Δ t) + n/N(6)表現できる．ともに 0 の時は「傾いていない」状態である．さらに yc を軸として ψ 回転を行うが，へと変化させ，液面 H を変化後の体積と式(3) により求める．

これによる容器内に満たし得る液量の変化はな

その後，体積 V の変化や容器を傾けることによい．これら C , θ , φ , ψ は，それぞれの容器ごとに設定されるものであり，移動する容器についてる最大容積 Vm の変化にともない体積が最大容積を超えている場合，液体を N(V - Vm) 個の粒子とは時刻 t の関数として表される．

して点 F から流出させ，時刻 t における容器内の容器に液体が入っている様子を図３に示す．容器内で静止している液体の上面を液面と呼ぶ．容液体の体積を Vm とする．実際には，体積 V と後述する他の容器に押し上げられた体積 W の和器内に入り得る液体の最大量を表す液面を最上位が Vm 超えた場合，N(V + W - Vm) 個の粒子を流液面と呼び，このときの体積を最大容積 Vm とする．また，最上位液面を超えた液体が溢れ出てく出させ，容器内の体積を Vm - W とする．このとき，厳密な点において粒子を生成するのではなる点を流出点 F とする．厳密には，液体が溢れ出く，溢れ出る液量に応じて広がりを持たせる．てくる箇所が線分で表される場合もあるが，実際のシステムにおいて３次元位置センサなどを使用3.3 静止状態の液体との相互作用する場合には少ないと考えれれる．点 F を C を操作者が移動可能な容器と，固定された容器基準とする相対的な位置として次式により表す．
(2)
F = f( θ , φ , ψ ).

（以下では，それぞれを容器１，容器２と呼ぶ，また各記号も添字 1, 2 により区別する）の中に存在

また図４に示すように，時刻 t において容器にする液体との相互作用について述べる．このとき入っている液体の体積が V であるとき，液面は点C から鉛直方向へ H の位置に存在する（式(3)）．の様子を図６に，また水平方向から見た様子を図７に示す．まず詳細を判定すべきか否か，次式にH = h( θ , φ , V).

(3)

液面 H は -r < H < r の範囲であるが，容器の形状や傾きによっては，さらに狭い範囲に存在する．

より判断する．
(7)|| C1 - C2 || < r1 + r2.
時刻 t において次式が成立する場合，容器１が式(3) を体積 V について変型することにより次式

容器２の液面を押し上げていると考える．

が得られる．
V = v( θ , φ , H).

(4)

(8)
C1y - r1 < C2y + H2.
ここで，Cjy は Cj の鉛直方向の座標である．実際仮想の容器と他の容器内の液体との相互作用（後には，それぞれの容器同士の干渉判定も行う必要述）を容易に実現するために，式(4) において容器よりも下方の H を引き数として与えた場合は V =があるが，ここでは液体の対話操作の実現を目的としているため省略する．このとき，容器２の液0，点 F よりも上方の H を与えた場合は V = v(θ,面 H2 を次式を満たすように設定する．

φ , Fy) = Vm( θ , φ )（ただし，Fy は F の鉛直方向の座標であり，角度 ψ に依存しない）とする．

H2 = h2( θ 2, φ 2, V2 + W21),
W21 = v1( θ 1, φ 1, C2y + H2 - C1y).

(9)

ここで，W21 は容器２内の液体が容器１により押3.2 自由落下状態の液体との相互作用落下中の液体（粒子）が容器の口を通過した場し上げられている体積である．厳密には，容器の厚みを考える必要がある．その場合には式(4) にかえて，容器の体積を考慮した新たな関数を用意し，上式に適用することで対応が可能である．

大液量 Vm1(t) に，液面 H1(t) を r に設定し，液面は考えない（表示しない）ものとする．容器２の続いて，次式が成立する場合には容器２の液体液体の体積と液面は式(14)，および次式により決が容器１に流れ込む．
C2y + H2 > C1y + F1y.

定する．
H2 = h2( θ 2, φ 2, V2(t) + W21).

(10)

(15)

ここで，さらに次式が成立するならば，液体の流このように設定しておくことで，時刻 t+ Δ t におれ込みは容器２の液面が容器１の流出点に達した時点でとまる．

いて２つの容器の関係が式(10) を満たさなくなった場合，液体をすくい取る操作が実現できる．

V2+W21 - v2( θ 2, φ 2, C1y+F1y-C2y) < Vm1 - V1.(11)
容器２の液面が容器１の流出点となるように設定し（式(12)），それに合わせて各容器の体積を計算

flow liquid
as particles

し（式(13), (14)），また容器１の液面を式(3) より決定する．
H2 = (C1y + F1y) - C2y.

stay

(13)

the volume is overthe maximum volume(14)
V1(t) + V2(t) = V1(t- Δ t) + V2(t- Δ t).
式(11) が成立しないならば，容器１の流出点よりも上方に容器２の液面が存在することになる．こ

add the volumeof liquid in the case

図５ 液体の２つの状態の関係
Fig.5 Relation for two conditions of liquidのとき便宜的に，容器１の液体の体積 V1(t) を最

highest level ofliquid surface

over flowpoint

Cfall

exchange rate:
N [number of particles / volume](12)

V2(t) = v2( θ 2, φ 2, H2) - W21.

particles fall throughthe mouth of the caseliquid surfacervirtual case

図１ 仮想容器と容器を内包する球
Fig.1 Virtual case and sphere including it

図３ 仮想容器の流出点，液面
Fig.3 Over flow point and liquid surfaceof virtual case

図６

仮想容器と他の容器内の液体との相互作用Fig.6 Interaction between virtual case andvertical axis

liquid in other caseyc
d1d2d3ψφθ

C1yxcCFVzc

F1yr1C2yHCcase 1H2liquid surfaceof case 2case 2

図２ 仮想容器の傾きの表現
Fig.2 Representation of tilting

図４ 仮想容器内の液体の体積と液面Fig.4 Volume and surface of liquid

図７ 水平方向から図６を見た様子
Fig.7 View of Fig.6 from horizonatalof virtual casein virtual casedirection

４．システムの構築
4.1 システムの処理手順
本節では，前述した各処理を組み合わせて実際れの関数は以下のようになる．
v1(H) = π(-H3+3r12H+2r13) / 3, -r1 < H < F1y. (16)v2(H) = a2(H + a/2), -a/2 < H < a/2.

(17)にシステムを構築する際の手順について述べる．
なお，現時点における実験システムでは，仮想空容器１は半球状であり，容器２は仮想空間内に固定されているため，ともに傾きに依存しない関数

間内に定義する容器は，操作者が移動可能な容器となる．体積から液面を求める関数は，それぞれ１と固定された容器２の２つであるものとする．
時刻 t- Δ t における状態から時刻 t における仮想を H について代数的に解くことにより得られる．
容器１の流出点の座標も幾何的に求めることが可空間内の様子を決定する手順は以下のような逐次能であるが，複雑な式となるため記述を割愛させ処理になる．
1. ３次元位置センサなどにより，時刻 t におけるて頂く．容器２の流出点については，便宜的に特定の一つの頂点としてある．また，容器１により容器１の仮想空間内における位置，向き（C1(t),押し上げられている容器２の液面を求めるためのθ 1(t), φ 1(t), ψ 1(t)）を設定する．
2. 粒子として表現されている液体の重力，慣性に式(9) は，３次方程式となるため代数的に解くことが可能であるが，数値的に求めている．

よる移動処理を行い，Pi(t) を決定する．あるし将来的には，容器の形状を途中で変型しない任

きい値より下方へ移動した粒子は消滅させる．
3. 各容器の口を通過した 0 個以上の粒子 Pi(t) を意の凸多面体とし，システム起動時などに式(3),(4) の計算を行うための参照テーブルを自動生成消滅させ，その個数に応じて容器内の液体のすることを考えている．システム実行時には，こ体積 Vj(t) を決定し，液面 Hj(t) を設定する．
4. 容器１が容器２の液面 H2(t) を押し上げているの参照テーブル中の値を補間することにより各容器の液面と体積を関係付ける．式(2) で表されるならば，容器２の液面 H2(t) を変更する．

流出点については，容器の口を定義する多面体の5. 容器２の液体が容器１に流れ込む状態として液面 H2(t) が存在するならば，各容器の体積と液頂点に対する逐次探索により決定することを考えている．

面 Vj(t), Hj(t) を変更する．
6. 各容器内の液体の体積 Vj(t) と他の容器に押し上げられている体積の和が最大容積 Vmj(t) を超えているならば，体積 Vj(t) を変更し新たな粒子 Pi(t) を生成し容器から液体を流出させる．
7. 仮想の「蛇口」（後述）から流出する液体を生成する．
8. 容器の形状と上述の処理により決定された液面から，描画のための実際の液面の形状（領域）を生成する．このとき，容器１が容器２の液面に干渉している（式(8) が成立し，式(10)は成立しない）ならば容器２の液面から容器１の部分を取り除く必要がある．

５．実験例および評価5.1 実験システムの構成
上述のモデルに基づいた仮想液体操作のための実験システムを，グラフィックワークステーショ
ン SGI O2 上で C 言語により実現した．本システ
ムによる実際の操作の様子を図９に示す．操作者が自由に移動することが可能な仮想容器の位置と向きは低周波の磁界を利用したモーションセンサにより入力される．液体を表現するための粒子数と体積との換算率は N = 10 粒子数/cc としている．
操作者が移動する仮想容器は半径 5cm の半球とし，仮想空間内に固定されている容器は一辺が9. 各粒子や，各容器とその液面を表示する．

30cm の立方体としている．また，液体が無限に4.2 仮想容器の構築

流出してくる仮想の「蛇口」を用意し，画面右上のあたり半径 3cm の領域から，画面中央方向への実際にシステムを構築する際には，
式(2) - (4) で表される各関数を各仮想容器の形状に応じて設定する必要がある．本システムにおいては実験的に，容器１を半球状の，容器２を立方体形状の容器とする（図８）．液面から体積を求めるそれぞ

初速度を持たせた自由落下してくる液体を 1 frameにつき 1cc 生成している．固定された容器よりも下方へ移動した液体粒子は消滅させている．重力加速度は 0.1 cm/frame2 としている．

5.2 実験結果の一例
実際の操作の様子を図10に示す．同図(左) から性を示した段階にあり，今後は，半球や立方体形状の容器だけでなく，任意な形状の容器による操は，落下してくる液体を容器で受け止めることが作が可能なシステムへと改良する必要がある．ま

可能であり，また容器から液体が流出している様子が確認できる．同図(右) は，固定された他の容た，川を流れている水，水槽の中で対流している水などの状態の液体と容器との相互作用の実現す

器内の液体を操作者の移動する容器によりすくっるために，新たに状態(3) を考え，モデル化を行っている様子を表している．
実際に研究室内の10名の学生に体験実験をしてていくことが課題としてあげられる．
謝辞 最後に，研究を進めるにあたり有益な議もらったところ，「本当に水を触っている（容器論を頂いた本研究室諸氏に感謝する．

で操作している）感じがする」などの積極的な評
価を頂いた．計算速度に関しては，平均 24 frames/[1]

sec. の描画更新が可能であった．
[2]

６．むすび
本論文では，仮想空間における液体操作を目的とした粒子，体積に基づいたモデルを提案し，実験システムを作成した．本システムでは仮想の容器により落下してくる液体を受け止め，溜めてお[3]くことが可能である．また，容器を傾けるなどして液体を流出させることも可能である．さらに，他の容器内の液体をすくうことも可能である．

[4]

本システムは現在，仮想液体の対話操作の可能(θ1, φ1)

[5]
[6]

r1 C1
C2
case 1a図８case 2[7]

実験システムで定義する２つの仮想容器

Fig.8 Shape of two cases defined in experiment system

図９

実際の操作の様子

Fig.9 Appearance of proposed system

図 10

文献
M. Shinya and M.-C Forgue: Laying out objects
with geometric and physical constraints, The Visual Computer, vol.11, no.14, pp.188-201 (1995)
D. Braff: Interactive simulation of solid rigid bodies, IEEE Computer Graphics and Applications,vol.15, no.3, pp.63-75 (1995)
舟橋健司，安田孝美，横井茂樹，鳥脇純一郎：
仮想空間における仮想手による道具操作のための知識とモデル，日本バーチャルリアリ
ティ学会論文誌, Vol.3, No.3, pp.167-176 (1998)
松下温：風と香りを感ずる仮想空間システム−息を吹きかけるインタフェースを持つ仮想空間−，第５回知能情報メディアシンポジウ
ム論文集 , pp.133-138 (1999)神部勉：流体力学，裳華房 (1995)
N. Chiba, S. Sanakanishi, K. Yokoyama, I.
Ootawara, K. Muraoka, N. Saito: Visual Simulation of Water Currents Using a Particle-based
Behavioural Model, The Journal of Visualization
and Computer Animation, Vol.6, pp.155-171(1995)
舟橋健司，岩堀祐之：仮想液体の対話操作のための粒子・体積に基づいたモデル，1999 電気関係学会東海支部連合大会講演論文集 ,p.398 (1999)

仮想容器による仮想液体の操作例

Fig.10 Examples of manipulation of liquid using virtual cases