平成 22 年度

修士学位論文VR 調理学習システムのための存在確率の遷移に基づく固体群の上下動の表現

指導教員
舟橋健司 准教授

名古屋工業大学

大学院工学研究科

博士前期課程 情報工学専攻
平成 21 年度入学 21417632 番
森井 敦士

i

目次
第 1 章 はじめに
第2章
2.1
2.2
2.3
2.4
2.5
2.6

1

従来の固体群操作モデル
4
格子法モデルの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
調理容器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
固体群表現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
正の変形曲面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
曲面加算後の処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
存在確率に基づく固体群 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.6.1 移動過程の表現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

第 3 章 固体群の上下動の表現
3.1 提案モデルの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 調理容器内部領域の固体群 . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 固体群表現と調理容器形状 . . . . . . . . . . . . . . . . . . . . . . .
3.2.2 テクスチャスライディング . . . . . . . . . . . . . . . . . . . . . . .
3.3 調理容器上部領域の固体群 . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 確率的表現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 存在確率フィールド . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.3 固体群描画 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.4 存在確率フィールドの配置 . . . . . . . . . . . . . . . . . . . . . . .
3.3.5 変換領域の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 調理容器外部領域の固体群 . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5 各領域の固体群挙動計算 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 調理容器上部領域の固体群挙動 . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1 変形曲面の拡張 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.2 上部固体群への変形超曲面の適用 . . . . . . . . . . . . . . . . . . .
3.6.3 楕円球状変形超曲面 . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.4 生成位置と密度の計算 . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.5 回転による速度と変形超曲面の姿勢の変化 . . . . . . . . . . . . . .
3.6.6 初期状態 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.7 調理容器との交差判定による生成位置の更新 . . . . . . . . . . . . .
3.6.8 調理容器面を横断した加算の制限 . . . . . . . . . . . . . . . . . . .
3.6.9 超曲面生成点の存在確率フィールドからの離脱 . . . . . . . . . . .
3.6.10 多角柱状変形超曲面 . . . . . . . . . . . . . . . . . . . . . . . . . .

12
12
13
13
14
15
15
16
18
18
19
20
21
21
21
22
23
24
24
24
25
27
29
29

ii

3.7

第4章
4.1
4.2
4.3
4.4

3.6.11 初期状態の計算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
各領域の固体群間の変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.1 外部固体群から上部固体群への変換 . . . . . . . . . . . . . . . . . .
3.7.2 上部固体群から外部固体群への変換 . . . . . . . . . . . . . . . . . .
3.7.3 内部固体群から上部固体群への変換 . . . . . . . . . . . . . . . . . .
3.7.4 上部固体群から内部固体群への変換 . . . . . . . . . . . . . . . . . .
3.7.5 容器内部領域と上部領域が保持する固体群量の更新 . . . . . . . . .

31
33
34
37
39
42
45

実験および結果
実験システム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
処理速度についての評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
存在確率に基づく固体群表現の評価 . . . . . . . . . . . . . . . . . . . . . .
固体群挙動の自然さについての評価 . . . . . . . . . . . . . . . . . . . . . .

47
47
53
53
54

第 5 章 むすび

57

謝辞

59

参考文献

60

発表論文リスト

62

1

第 1 章 はじめに
バーチャルリアリティ (Virtual Reality:以下 VR) とは, “実態そのものではないが, 本質的あるいは効果として実態であるもの”[1] を意味する. 人間は VR 技術を利用することにより, 物理的に存在しない物を, 本物を使った時と変わらないように体験, 操作することが可能となる. このように, 人間は VR 技術を使うことでさまざまな恩恵を得ることができる. 例えば, 体験したい環境や操作したい物を準備するためのコストの削減, 環境再現の低コスト化による実体験を必要とする訓練の効率性の上昇, 実際の環境や物を使った際に起こりうる危険性の回避などが挙げられる. 現在までに, これらの利点を生かして, さま
ざまな分野で訓練, 教育を目的とした VR システムが開発されている. 例として, 小学校
での理科の授業 [2] や手術に関するシミュレータ [3, 4] などが挙げられる. これらのシステ
ムを使う事は, 実際に訓練を行う事に比べて, 効率的で有効である. しかし, このようなシステムは必要とする装置が巨大, 高価となるため利用されている分野が限定的で, 一般家
庭までに広くは普及しているとは言えない.
近年, 技術革新により, かつては高価だった機械が安価で手に入るようになり, 高性能な機械を利用するための敷居が低くなっている. 一般家庭で使われる家電機器も高性能化
し, 従来にはなかった一般家庭向けの新サービスの創出が期待されている. そのような状況の中で, 「料理 (調理)」を支援するためのシステム [5, 6] が開発されている. 料理とは,人間の日常生活において一般的な作業であるが, 食物の加工に刃物や火を用いるため危険性を伴う. そのため, ある程度の経験や技術を必要とする行為である. 近年は少子化, 核
家族化の進行, 共働き家庭の増加などにより, 誰でも自分自身で料理をしなければならな
い状況になる可能性が増えているため, 料理の訓練を目的としたコンテンツのニーズが高まっている. 近年までに, 多岐の分野にわたりコンテンツが開発されているが, 例として,ゲームの「クッキングママ」[7] が挙げらる。これは, 楽しみながら料理の手順を学ぶことを目的として作られている. また, バーチャルリアリティの分野においても, 料理の訓練を目的としたシミュレータ [8] が開発されている. このシミュレータでは加熱調理を体感することができ, 加熱した食物の状態を視認することができる.
当研究室でも, 一般家庭向けのコンテンツとして料理を取り上げ,「バーチャルお料理教室」の開発を進めている. この「バーチャルお料理教室」は, 料理の手順を学習することを目的としている. 手順とは具体的に, 食材の準備から, 切断などの「加工」, 加熱などの「調理」, そして盛り付けというような, 料理における一連の作業の事を指す. 当研究室はこれまでに, 「調理」の工程での使用を応用例の 1 つとした, 固体群の操作モデル [9, 10]を提案した. ここで, 固体群とは「小さな固体からなる集まり」の事を指し, 砂, 溶岩, 米などいったものが例として挙げられる. 文献 [9] における固体群は, 「炒飯」を想定しており, フライパンなど（以下, 調理容器と呼ぶ) の中に入った固体群を, 容器を傾けることによって操作することができる. また文献 [10] は, 剛体 (例えばヘラ) を用いて固体群を操作

2

することができるモデルである. このモデルでは, ヘラなどの剛体を「調理器具」として扱い, 剛体を使って調理容器内の固体群に, 「押す」,「かき混ぜる」といったような操作を行う事ができる.
固体群の挙動モデルは文献 [9, 10] 以前から研究されている. 固体群の想定対象として
は, 溶岩 [11], 砂 [12] など多岐にわたり, 応用として映画などで映像の臨場感演出のために使われている [13]. 文献 [11] のモデルは粒子法を用いたモデルである. 粒子法を用いたモ
デルでは, 固体群を構成する固体を粒子で近似し, それぞれの粒子にかかる力を計算している. 粒子法を使ったモデルは現実に近い挙動を再現することが可能だが, 計算量が多くなる問題点がある. 一方, 文献 [12] は粒子法を用いないモデルではあるが, 対話操作ができるほど高速ではない. このように従来の固体群挙動モデルは計算量が多いため, テレビ
ゲームなどの対話操作性が求められるコンテンツには応用されていない.
粒子法が使われている文献 [11] のような手法に対して, 当研究室が提案した文献 [9, 10]の固体群操作モデルは, 厳密な挙動の再現よりも計算の高速性に重点をおいた手法であり,これらのモデルでは, 固体群を粒子ではなく, 調理容器内の底面に配置した 2 次元格子上のハイトフィールドで表現している. さらに, 同様にハイトフィールドで固体群を表現している文献 [12] のモデルよりも高速である. 以降は, この固体群操作モデルを「格子法モデル」と呼称する. 格子法モデルでは, 固体群を構成する固体 1 つずつにかかる応力を計算せずに, 固体群全体を 1 つの操作対象として扱うことで, 対話操作的に固体群を操作することができる.
また, 格子法モデルは操作範囲を調理容器内に限定していたため「こぼれ」などの調理容
器外における固体群挙動を表現するために, 格子法モデルに粒子法を取り入れた固体群操
作モデルを提案した [14]. この固体群操作モデルはハイトフィールドで表現された固体群と粒子によって表現された固体群を共存させ, 調理容器外に出る固体群挙動を粒子を使って表現している. 以降は, この固体群操作モデルを「格子・粒子法モデル」と呼称する. 格子・粒子法モデルは, 粒子法を用いているが, 使用する粒子数を必要最低限に抑えることで, 対話操作性を損なわずに固体群操作を行うことができる. このように当研究室では, 格子法モデルに加えて, 格子・粒子法モデルで, 操作容器を傾けて固体群を「こぼす」ような調理容器外での固体群挙動を実現した.
対話操作的に固体群を操作することができる格子・粒子法モデルではあるが, 粒子法の計算コストが高いという問題点がある. 格子・粒子法モデルを単体で使用することのみに限れば, 対話操作が可能である. しかし, 他のシステムと併用する場合, 対話操作性が損なわれてしまうことが考えられる. さらに, 調理容器外の挙動モデルは粒子を使った手段に限られているため, 「バーチャルお料理教室」をはじめとした, 対話操作性が求められるコ
ンテンツへ応用するのは困難である. そこで, 本研究では従来の粒子法を用いずに, 図 1.1のような「固体群を舞い上げて調理容器で受け止める」というような調理容器外での上下動表現を実現するための, 対話操作が可能な固体群操作モデルを提案する. 従来の格子法
モデルで用いられていた固体群表現に加えて, 調理容器上部に新たな固体群表現を定義し,格子法モデルで用いられていた手法や考え方を拡張して取り入れることによって, 固体群
上下動表現を実現する. 本提案モデルにより, 調理容器の中に入っている固体群を舞いあげてから調理容器で受け止める, 容器を逆さまにして容器内の固体群を全て落下させるというような操作が対話操作で可能となる. 本提案モデルでは, 調理容器に堆積した固体群

3が, 崩落によって容器縁から落下するような「こぼれ」が原因で起きる挙動は考慮しない.
このような, 固体群の「こぼれ」によって起きる挙動は, 現在当研究室で固体群操作モデ
ルの一部として別途, 開発中である.
第 2 章において, 従来の格子法モデルについての概要を説明する. 第 3 章では提案モデ
ル, 第 4 章では提案モデルについての実験と結果, 第 5 章にむすびを述べる.

図 1.1: 固体群を舞いあげて, 調理容器で受け止める様子

4

第 2 章 従来の固体群操作モデル
本章では, 当研究室でこれまでに提案されてきた従来の固体群操作モデルについて説明する. 当研究室で提案されてきた固体群操作モデルは, 格子法モデル, 格子・粒子モデルがあるが, ここでは, 格子法モデル (文献 [9]) の概要について述べる. 格子法モデル, または他のモデルの詳細についてはそれぞれ文献 [9, 10, 14] を参照されたい.
従来の固体群操作モデルである格子法モデルは, 固体群を構成する固体 1 つずつの応力を計算せずに, 固体群全体をひとつの操作対象とみなすことにより高速な挙動計算を実現している. このモデルは厳密な挙動の再現よりも, 計算の高速性に重点をおいている. そのため, 厳密な固体群挙動を表現することはできないが, 体験者にある程度の自然らしさを認識させることが可能である. 本モデルでは, 体験者はフライパンのような調理容器内にある固体群を容器を傾けたり, 左右に振ることで操作することができる. なお, 本モデル
は調理容器外での固体群挙動は考慮しておらず, 固体群の操作は調理容器内のみに限定し
ている.

2.1

格子法モデルの概要

格子法モデルでは, 調理容器の中に存在する固体群全体を 1 つの操作対象とみなしている. 具体的には, 固体群全体をひとつの物体とみなし, 重力などの力がかかる事により起きる形状変化を, 曲面を利用することにより求める.
例えば, 時刻 t において, 傾いた容器の中央に固体群が存在する時 (図 2.1-1), この固体群は, 重力により容器下方方向 (図 2.1-1 左方向) に滑り落ちる. この場合, 固体群が力を受けて挙動した後 (時刻 t + ∆t) の固体群形状は図 2.1-3 のようになる. 本モデルではこの形状を, 図 2.1-2 のように, 調理容器内に曲面を生成して, 既存の固体群に加算することにより求める. 生成した曲面はその部分によって, 調理容器内の 1 地点に存在する固体群体
積を増加させたり (図 2.1-2 a 部分), 減少させる (図 2.1-2 b 部分) 働きをする. このような単純な処理により高速に固体群挙動を計算する. 以降は, 生成する曲面を「変形曲面」と呼称する.
このモデルは処理が単純であるため, 固体群挙動を高速に計算することができる. しかし, 実際には図 2.1-2 のような変形曲面の形状を求めるのは困難である. そこで, 格子法モ
デルでは代替の処理を段階的に行うことで, 図 2.1-1 から図 2.1-3 までの処理を近似的に実現する. 以降は, この代替的に行う処理を, 図 2.1 と同様に, 傾いた調理容器に固体群が存在する様子の断面図を使って説明する.
時刻 t において, 傾いた容器の中央に固体群が存在する時 (図 2.2-1), 固体群に力がかかった結果滑り落ちる方向 (図 2.2-2 矢印部分) に, 調理容器内の 1 地点に存在する固体群体積を増加させる働きを持つ変形曲面 (正の変形曲面) を生成して, 既存の固体群に加算する.

5

図 2.1: 曲面による固体群の形状変化の計算

次に, このままでは調理容器内に存在する固体群体積が増加するので, 正の変形曲面を加算する前の体積と等しくなるように, 調理容器の各地点に存在する固体群体積を修正する(図 2.2-3) (第 2.5 節参照). この処理によって, ∆t 後の, 固体群の調理容器内の移動した結果を表現する (図 2.2-4).
生成する正の変形曲面の形状は, 計算量の削減のため図 2.3 のような半楕円柱とする.

図 2.2: 正の変形曲面を用いた代替処理

2.2

調理容器

格子法モデルでは, 固体群を構成する固体 1 つずつにかかる力を考慮せずに, 固体群全体を 1 つの固体のように扱うことで, 固体群挙動の計算を削減している. 固体群が調理容器の側面から抗力を受けた結果, 1 つの塊とみなしていた固体群が分断されるのを防ぐ事
や, 固体群が調理容器側面から受ける抗力を単純化するために, 固体群が入っている容器(調理容器) の形状を以下のように定義する.

6

図 2.3: 半楕円柱状の正の変形曲面• 容器の底部 : 凸多角形の平面図形• 容器の側面 : 底部に対して垂直, 高さを h とする

2.3

固体群表現

固体群は調理容器内に定義したハイトフィールドによって表現する. 図 2.4 に調理容器の形状が円柱で, 内部に固体群が存在する時の例を示す. また, 調理容器内に存在する固体群の総体積 Vc を以下のように定義する.

Vc =

N
∑

f (xi , yj )(2.1)

ここで f (xi , yj ) は調理容器内に定義されたハイトフィールドの格子 (xi , yj ) が持つ値であり, N は調理容器内にある格子の総数である. ハイトフィールドの各格子の値を変化させることにより, 調理容器内の固体群挙動を表現する.

2.4

正の変形曲面格子法モデルで生成する正の変形曲面は半楕円柱であるため, 変形曲面を定義する変数は図 2.5 のように, 以下のパラメータを定めることで定義する.

• 半楕円柱の断面となる楕円の長半径 a• 半楕円柱の断面となる楕円短半径 b• 調理容器内での位置 oD

7

図 2.4: 例:円柱形状の容器の中に固体群がある時• 調理容器内での向き LD• 楕円柱の長さ rD

図 2.5: 変形曲面の定義

なお, 半楕円柱の断面となる楕円の大きさを表す a, b のうち, 容器の底面に平行な a を
長半径, 底面に垂直な b を短半径とする.
調理容器を移動させたり, 傾けたりすることによって, 調理容器内の固体群に, 調理容器
底面を構成する面に平行な力 Fb がかかるとする. この時, 固体群は重心 Gc に集まっていると仮定し, 変形曲面の生成位置を, 重心 Gc から力がかかった方向 Fb に位置するよう設定する. 半楕円柱の生成点 oD は以下のように求める.

oD = Gc +

Fb
νa
|Fb |

(2.2)

8

ここで, Gc はハイトフィールドの重心であり,

1 ∑
Gc =
f (xi , yj )mij
Vc
N

(2.3)

で求められる. mij はハイトフィールドの格子 (xi , yj ) の座標であり, ν は任意の定数である. 半楕円柱の断面となる楕円の長半径 a は, 格子法モデルにおける, 固体群の移動距離と移動する体積量の双方に関係するパラメータである. a = 0 ならば, 半楕円柱は存在しな
いことになり, 固体群は移動しない. a の設定には, 調理容器端での固体群挙動を考慮に入れる. 固体群は剛体とは違い, 図 2.6 の様に容器の端に達しても移動し続ける. そのため,固体群の大部分が容器の端まで移動し終えるまで, a > 0 にするべきである. そこで, a は

図 2.6: 固体群の容器の端での動き
容器の端に接している固体群の量に対して減少するよう, 以下のように設定する.
(
T − |Fn′ | (T ≥ |Fn′ | のとき, T : 定数)a=0(T < |Fn′ | のとき)

(2.4)

ここで, Fn′ は調理容器側面からの抗力 Fn のうち, Fb に平行な成分である. 格子法モデル
では Fn を, 容器の側面に接する固体群量とその重心から近似的に求める. ここで, Fn′ は
以下のように求める.
Fb(2.5)
Fn′ = −|Fn |cos(ψ)|Fb |また, Fn は以下のような条件を満たす 2 次元ベクトルとする.
(|Fn | = T1′ Vcside
Fn
|Fn |

=

Gside
c
|Gside
|
c

(2.6)

は
ここで, T1′ は定数である. Vcside は調理容器側面に接している格子が持つ値の総和, Gsidec
調理容器側面に接している固体群の重心であり, それぞれ以下のように求める.

Vcside
Gside
c

=
=

N
side
∑

f (xi′ , yj ′ )1VcsideNside∑f (xi′ , yj ′ )mi′ j ′

(2.7)

9

式 2.7 における, Nside は調理容器内に定義されたハイトフィールドの格子のうち, 調理容
器側面に接する格子 (xi′ , yj ′ ) の総数であり, mi′ j ′ はそれらの格子の座標である. ψ は Fb とFn がなす角度であり, cos(ψ) は内積を用いて以下のように求める.

cos(ψ) =Fn · Fb|Fn ||Fb |(2.8)

長半径 a は固体群が容器の側面から受ける抗力を考慮に入れて定義されたパラメータであるが, 固体群が受けた力や調理容器内に存在する固体群体積がパラメータの設定に大きく影響しない. よって, これらを補うために短半径 b を以下のように設定する.
(√
T2′ (|Fb | − µ′ ) Vc (|Fb | ≥ µのとき)
b=(2.9)
0 (|Fb | < µのとき)
なお, T2′ は任意の定数, µ は最大静止摩擦力, µ′ は動摩擦力を表すパラメータである.
半楕円柱の姿勢は, 楕円柱の芯となる直線 LD で定義される. LD は oD を通り, 方向ベ
クトルが lD である直線とする. lD は以下の条件を満たす二次元ベクトルである.

Fb· lD = 0|Fb |(2.10)

楕円柱の長さ rD は, 調理容器底面を構成する平面図形と直線 LD が交わってできる線分の長さに等しくなるように設定する.
これらの変数により, 半楕円柱 (正の変形曲面) を定義して固体群に加算する. 変形曲面
による加算は, 対象の格子 (xi , yj ) の座標 mij と直線 LD との距離 lij が lij ≤ a となる格子に行う. 正の変形曲面によって加算が行われた後のハイトフィールドの格子 (xi , yj )add が持つ値は以下のように求める.
(√
)

lij 2
1 − ( a ) b (lij ≤ a のとき)
f (xi , yj ) +f (xi , yj )add = (2.11)f (xi , yj )(lij > a のとき)

2.5

曲面加算後の処理

格子法モデルでは, ハイトフィールドで表現された固体群の形状を変形曲面で変化させることにより, 固体群の挙動を表現する. 正の変形曲面をハイトフィールドに加算するが,加算後, 固体群体積が曲面加算前に比べて増化するので, 元の体積と等しくなるように, ハ
イトフィールドの全格子が持つ値に修正を行う. 修正後の格子 (xi , yj ) が持つ値 f (xi , yj )′は以下のように求める.
Vc(2.12)f (xi , yj )′ = add f (xi , yj )add
Vc

Vcadd は, 変形曲面を加算した後のハイトフィールドの持つ値の総和であり,Vcadd =N∑f (xi , yj )add

(2.13)のように求める. f (xi , yj )add は, 変形曲面を加算した後のハイトフィールドにおける格子(xi , yj ) が持つ値である. このように処理を行う事で, 調理容器内の固体群体積を保存する.

10

存在確率に基づく固体群

2.6

現実世界における固体群の最小構成要素は微小な固体であり, 有限の大きさを持っている. 一方, 格子法モデルにおける固体群はハイトフィールドによって表現されているため,最小構成要素が定義されていない. そのため, ハイトフィールドで表現されている固体群
では, 無限小の固体が存在することになり, 現実の固体群と差異が生じる.
そこで, ハイトフィールドで表現された固体群の最小構成要素 α を定め, それ以上の大きさの固体群のみを描画する. f (xi , yi ) < α である格子 (xi , yi ) が存在する場合は, その格子における固体群の存在を f (xi , yj ) を用いて確率的に判定し, 結果に従って固体群描画を行う. このような確率的に存在が決定される固体群 (存在確率に基づく固体群) の描画のために, 独立なハイトフィールド (描画ハイトフィールド) を定義する. この独立なハイト
フィールドの形状を, 最終的に調理容器内に存在する固体群として描画する. 描画ハイト
フィールドの各格子が持つ値は, 調理容器内に定義されたハイトフィールドから以下のように求める.

• f (xi , yi ) < α のとき
描画ハイトフィールドの格子 (xi , yj ) が持つ値 f e (xi , yj ) は以下のように求める.
{(P (xi , yj ) の確率で)0
f e (xi , yj ) =(2.14)(1 − P (xi , yj ) の確率で) α
格子 (xi , yj ) に固体群が存在する確率 P (xi , yj ) は以下のように求める.

f (xi , yj )α(2.15)f e (xi , yj ) = f (xi , yj )(2.16)

P (xi , yj ) =• f (xi , yj ) ≥ α のとき

毎フレーム, 変形曲面でハイトフィールドの形状を変化させた後, 以上のように存在確率に基づく固体群を反映した容器内における固体群分布を計算する. 計算結果を描画ハイト
フィールドに代入して描画する事で, 調理容器内の固体群を表現する.

2.6.1

移動過程の表現

格子法モデルでは, 調理容器を急に傾けた場合, 図 2.7(左) のように変形曲面を生成すると, 固体群が離れた位置に瞬時に移動してしまう. そこで, hb < α である高さ hb の板状の変形曲面を容器中央部に生成する (図 2.7 中:斜線部). このようにして, 固体群と半楕円柱型の変形曲面の間に存在確率に基づく固体群を生成することにより, 短時間で固体群が容器上部から下部へ移動している様子を表現する (図 2.7 右).

11

図 2.7: 移動過程の表現

12

第 3 章 固体群の上下動の表現
小さな固体の集まりである固体群の挙動計算には粒子法が多く利用されている. 粒子法
は固体を粒子で近似し, それぞれの粒子にかかる力の計算を行う手法である. 粒子法は厳密な挙動計算を行うことができる. さらに, 計算のタイムステップを短くしたり, 単位粒
子の大きさを小さくすれば, より厳密な計算を行うことができる. しかし, 計算の詳細度が増加するほど, 計算時間が長くなる問題点がある. 当研究室では, 粒子法を用いない高速な固体群操作モデルを提案したが, 操作範囲が調理容器内のみであり, 調理容器外の挙動は考慮していなかった. それに対して, 格子・粒子法モデルは粒子法を限定的に取り入れる事により, 対話操作性を維持しながら「こぼれ」などの調理容器外での固体群挙動を実現した. しかし, 格子・粒子法モデルは粒子法を限定的に取り入れても計算コストが高
く, 他のシステムと併用する場合は対話操作性が損なわれてしまう問題点があった. そこで本研究では, 上述の粒子法のような手法を用いない高速な固体群上下動表現モデルを提案する. 本研究は応用の 1 つに「ＶＲお料理教室」への利用を考えており, 固体群を「炒飯」のような食材片の集まりと想定している. そのため, 本モデルでは固体群の上下動を,「舞い上がり」のような一般的な調理の間に固体群に起きる挙動とする. 本提案モデルでは様々な固体群上下動のうち, 調理容器を使う作業 (例:加熱調理など) の時に食物や調理器具が存在し得る空間 (例えば調理容器内, 調理容器の上の空間, 調理容器の縁回り, 調理
容器の取っ手周辺) の一部である, 調理容器の上の空間を占める挙動を考慮する. 固体群
が調理容器からあふれたり崩落して容器縁から落下する「こぼれ」の挙動も「固体群の上下動」の 1 つと考えられるが, 「こぼれ」挙動は「容器縁回り」の空間を占める挙動であるため, 本モデルでは考慮しない. 「こぼれ」の挙動モデルは, 現在, 本研究室で固体群操
作モデルの一部として別途, 開発中である.

3.1

提案モデルの概要

提案モデルの概要図を図 3.1 に示す. 本研究では固体群上下動のうち, 「舞い上がり挙動時に固体群が占める空間」に関係する挙動を考慮する. そのため, 本モデルでは調理容
器周辺の領域を「通常時に食物が存在する空間」,「舞い上がり挙動時に関係する空間」,「それ以外の空間」の 3 つに分けて, それぞれ独立に固体群を表現することにより, 固体挙動を表現する. 具体的には, 「調理容器内部領域」,「調理容器上部領域」, 「それ以外の
領域 (以下, 調理容器外部領域)」の 3 つに分けて固体群を表現する. ここで, 調理容器上部方向を, 「調理容器底面を構成する平面図形の法線方向」と定義する. 「調理容器上部領域」と「調理容器外部領域」の固体群を組み合わせることで「舞い上がり」のような固体群の上下動を表現する. 本モデルで表現する固体群の「舞い上がり」の範囲は, 一般的な

13

調理時に固体群が舞い上がる程度の高さまでとする. それ以上の高さの「舞い上がり」挙動については考慮しない.
固体群はそれぞれの領域でそれぞれ表現され, 状況に応じて異なる固体群表現に変換される. 固体群変換については, 固体群表現によって変換先となる固体群表現が固定されている. 例えば, 図 3.1 のように,「調理容器内」の固体群を「調理容器外部領域」の固体群には変換はしない. 逆の場合も同様である (なお, 別途開発中の「こぼれ」表現のためのモデルでは, 固体群の内部領域から外部領域への変換も考慮している).
また, 格子法モデルの考え方である「固体群全体をひとつの操作対象とする」という概念を, 「調理容器上部領域」の固体群挙動に適用する. 具体的には, 格子法モデルで用いられていた変形曲面を拡張して挙動計算に用いる. 固体群を 1 つの物体のように扱う事で,挙動計算にかかる計算コストを削減する.
さらに, 格子法モデルにおける「存在確率に基づく固体群」を拡張して, 「調理容器上部領域」の固体群表現に取り入れる. これは, 具体的には, ある格子における固体群の存在
量を確率的に決定する固体群表現方法である. 特定位置の固体群存在量を確率的に決定することは, 物理法則に従わない固体群表現法である. しかし, 各格子ごとに複数の状態になる「揺らぎ」を残して毎フレーム状態決定の計算を行うことにより, 各格子ごとの「状態」に差が現れ, 領域全体から見ると, 部分的に差が現れるようになる. このように, 確率的に状態を保持して, 毎フレーム状態確定の計算を行うこと (存在確率に基づく表現) により, 固体群分布状況に差をもたせ, 固体群挙動の自然らしさを表現する.
調理容器内部領域の固体群は, 格子法モデルを取り入れることによって表現する. また,
調理容器外部領域では, 相互干渉を考慮しない自由落下粒子として表現する. 表 3.1 に本提案モデルにおける, 各領域での固体群表現についてまとめた表を示す.
表 3.1: 各領域の固体群表現
領域

固体群表現

調理容器内部領域
調理容器上部領域
調理容器外部領域

高さ分布 (ハイトフィールド)存在確率
自由落下粒子第 3.2 節に調理容器内部領域の固体群 (以降, 内部固体群と呼称), 第 3.3 節に調理容器上部領域の固体群 (以降, 上部固体群と呼称), 第 3.4 節に調理容器外部領域の固体群 (以降,
外部固体群と呼称), 第 3.6 節に「調理容器上部領域」の固体群挙動計算, 第 3.7 節に各領域の固体群間の変換について述べる.

3.2

調理容器内部領域の固体群

3.2.1

固体群表現と調理容器形状

調理容器内に存在する固体群 (内部固体群) は, 格子法モデルを取り入れることで表現する. そのため, 内部固体群はハイトフィールドによって表現する. また, 調理容器形状も格14

図 3.1: 領域別による固体群表現

子法モデル同じく, 底面を構成する面が凸多角平面図形, 側面が底面に対して垂直な形状とする.
調理容器の中心座標 Cc を, 底面を構成する凸多角形の表面に設定する. 調理容器の姿勢
はピッチ回転 θx とロール回転 θy にて定義する. 本モデルでは回転の対象性から調理容器のヨー回転 θz は考慮しない.

3.2.2

テクスチャスライディング

内部固体群は描画時にテクスチャマッピングを行うことにより表現するが, 本モデルでは固体群操作の臨場感向上のために, 文献 [12] のテクスチャスライディングを内部固体群の描画に取り入れる. 文献 [12] におけるテクスチャスライディングは, 固体群の崩落を視覚的に表現するための手法である. ハイトフィールドの 4 つの格子点からなるポリゴン
メッシュに定義したテクスチャ座標を, ハイトフィールドの変化に従って変化させること

15により, 固体群の挙動を視覚的に表現することができる.
本モデルにテクスチャスライディングを適用するにあたって, 容器内に定義されたハイトフィールドに, (xi , yj ), (xi+1 , yj ), (xi , yj+1 ), (xi+1 , yj+1 ) の 4 つの格子点からなるポリゴン
メッシュ (xI , yJ ) を定義し, ポリゴンメッシュごとに, テクスチャ座標 TIJ とテクスチャ座
標更新速度 vIJ を記憶させる. 毎フレーム各ポリゴンメッシュのテクスチャ座標 TIJ (t) を以下のように更新する.
TIJ (t) = TIJ (t − 1) + DOTvIJ (t)(3.1)

DOT は, 内部固体群の挙動方向にテクスチャスライディングを行うための制限で, 以下のように求める.
(
1 (vIJ (t) · (Gc (t) − Gc (t − 1)) > 0 のとき)
DOT =
(3.2)
0 (vIJ (t) · (Gc (t) − Gc (t − 1)) ≤ 0 のとき)
Gc (t) はハイトフィールドの重心座標である. さらに, テクスチャ座標更新速度についても以下のように更新を行う.
vIJ (t) = λvIJ (t − 1) + ∆vIJ
(3.3)
λ は更新速度を減衰させるためのパラメータであり, 0 < λ < 1 である任意の定数とする.
∆vIJ は以下のように求める.
∆vIJ = −(∆f (xi , yj )m′ij+∆f (xi+1 , yj )m′(i+1)j+∆f (xi , yj+1 )m′i(j+1)+∆f (xi+1 , yj+1 )m′(i+1)(j+1) )(3.4)∆f (xi , yj ) は各格子が持つ値の変化, m′ij はポリゴンメッシュの重心から各格子点座標 mij
までの相対ベクトルであり, 以下のように求める.
1m′ij = mij − (mij + m(i+1)j + mi(j+1) + m(i+1)(j+1) )4

3.3

調理容器上部領域の固体群

3.3.1

確率的表現

(3.5)

固体群は小さな固体の集まりであるため, 固体 1 つずつの挙動を逐次計算すれば, 固体
群挙動を表現することが可能である. しかし, この手法は膨大な計算時間がかかるため, 対話操作性を重視している本モデルに取り入れる事はできない.
一方, ここで注目する対象を固体群自体から, 固体群が挙動している空間の 1 点に変更
する. 注目点は固体群挙動の経路上に設定し, 固体群挙動が終わらない程度の短い時間の間に観察を行うとする. すると, その点において, 固体が複数存在する状態や 何も存在しない状態など, 様々な状態を観察する事ができる. ここで, もし観察者が固体群挙動について無知とするならば, 注目点の次の状態は一意に定める事が出来ないと考えられる. これ16は, 量子力学における「シュレディンガーの猫」の話題と類似している. 端的に「シュレディンガーの猫」を説明すると, 観察者は対象を観測するまで対象物の状態を一意に認識できないので, 対象物の状態は複数の状態が「重ね合わさった」状態と認識できるという話題である. 以上に述べた通り考えると, 挙動している固体群が通る空間上の 1 点についても, 微小時間後の状態は, 複数の状態が「重ね合わさった」状態と捉えることができる.
調理容器上部領域に存在する固体群 (上部固体群) は, 調理容器から離れていて, 調理容
器からの抗力を受けない状況下にある. そのため, 上部固体群は常に加速している状態にあり, 放物運動時の極大点を除けば, 固体群は静止することはないと考えられる. 以上から, 上部固体群が挙動する空間は「重ね合わせ」の状態にある点の集合と見なすことができる. そこで, 本提案モデルでは上部固体群を「重ね合わせ」の状態で保存し, 毎フレー
ム各座標における状態を確率的に計算して表現する. 以降は. この「重ね合わせ」の状態で保存された, 各座標点の上部固体群の存在状況を示す度合いを「存在確率」と呼称する.
調理容器上部領域における固体群の分布状態の変化は, 各座標が保持している存在確率を遷移させる事で表現する. これは, 物理法則にのっとった表現ではない. しかし, 視覚的な変化が常に起こる為, 固体群挙動の自然らしさの表現に効果的であると考えている.

3.3.2

存在確率フィールド

上部固体群は図 3.2 のような三次元格子に, それぞれの位置における存在確率を保持させて表現する. ある時刻における上部固体群の分布状況は, 存在確率フィールドにおける

図 3.2: 三次元格子
存在確率から上部固体群体積の期待値を求め, さらに固体群体積の期待値から存在量を計算することで求める. 以降は, この存在確率を保持する三次元格子を「存在確率フィールド」と呼称する.
存在確率フィールドの各格子の存在確率から固体群体積の期待値を導出するために, 存
在確率フィールドが保持する確率に基づく, 固体群体積の期待値の総量 Eup を定義する.

17

存在確率フィールドの格子 (XI , YJ , ZK ) における, 上部固体群体積の期待値 E(XI , YJ , ZK )は次のように求める.
E(XI , YJ , ZK ) = Eup f (XI , YJ , ZK )(3.6)

f (XI , YJ , ZK ) は格子 (XI , YJ , ZK ) が持つ値である. また, Eup と各格子の存在確率に基づく固体群体積の期待値には以下のような関係が成り立つ.
′

Eup =

N
∑

E(XI , YJ , ZK )(3.7)

さらに, 上部固体群の重心 GE を以下のように定義する.
N′

1 ∑
GE =
E(XI , YJ , ZK )MIJK
Eup

(3.8)

N ′ は存在確率フィールドに存在する格子数であり, MIJK は, 存在確率フィールドにおける格子 (XI , YJ , ZK ) の座標である.
毎フレーム, 存在確率フィールドの各格子の存在確率に基づいた固体群体積の期待値か
ら固体群存在量を計算することによって, 確率的な表現を行う. 存在確率フィールドの格子 (XI , YJ , ZK ) に存在する固体群体積 V (XI , YJ , ZK ) は以下のように求める.
{
Vmax(E(XI , YJ , ZK ) ≥ Vmax のとき)
V (XI , YJ , ZK ) =(3.9)′
V (XI , YJ , ZK ) (E(XI , YJ , ZK ) < Vmax のとき)
Vmax は, 存在確率フィールドの 1 格子に存在することができる固体群体積の最大値である. Vmax は, 存在確率フィールドの格子間距離 l を用いて以下のように定義する.
Vmax = l3(3.10)

また, Vmax は, 固体群表現の変換に際して, 変換率として用いる. 詳細は後述の 3.7 節を参照されたい. なお, Vmax で格子に存在できる固体群体積に上限を設定しているが, 存在確率に基づく固体群体積の期待値 (E(XI , YJ , ZK )) には最大値は設定しない. V ′ (XI , YJ , ZK )は確率 P (XI , YJ , ZK ) によって格子 (XI , YJ , ZK ) に存在する固体群体積を計算した結果であり, 以下のように求める.
{(P (XI , YJ , ZK ) の確率で)(d + 1)α′V ′ (XI , YJ , ZK ) =(3.11)(1 − P (XI , YJ , ZK ) の確率で) dα′α′ は固体群体積の単位であり, 次のように定める.
Vmax(3.12)α′ =D
D は粒子体積詳細度であり, 上部固体群, 外部固体群 (第 3.4 節参照) として描画される固体群粒子 1 つが持ち得る体積の最小値を設定するパラメータである. なお, D は任意の自然数とする. 上部固体群の描画については第 3.3.3 節を参照されたい. また, d, P (XI , YJ , ZK )は以下のように求める.
E(XI , YJ , ZK )⌋(3.13)d=⌊α′
E(XI , YJ , ZK ) − dα′
P (XI , YJ , ZK ) =(3.14)
α′

18

3.3.3

固体群描画

上部固体群は存在確率フィールドの各格子ごとに, 固体群体積 V (XI , YJ , ZK ) に応じて固体群粒子を描画することで表現する. 描画される固体群粒子は, 固体群を構成する固体
1 つではなく, ある程度の固体が集まった塊として扱う. また, 固体群挙動の臨場感を出すため, 固体群粒子は MIJK を中心にして一定の範囲内のランダムな位置に描画する. 今回
は固体群粒子を数種類用意し, V (XI , YJ , ZK ) に応じて段階的にスケール変換を行って描
画した.

3.3.4

存在確率フィールドの配置

本モデルでは, 領域別に固体群表現を定義し, 固体群挙動に応じて, ある固体群表現を異なる表現へ変換する. 上部固体群は図 3.1 のように, 外部固体群と内部固体群の 2 通りに変換される. 内部固体群との変換を実現するために, 存在確率フィールドと調理容器を三次元空間で関連付ける. 具体的には, 調理容器内に定義されたハイトフィールドの格子を,存在確率フィールドの格子に一致させる. そのため, ハイトフィールドが存在確率フィールドの内部に含まれるように配置する. さらに, 外部固体群への変換を実現するため, 存在
確率フィールドの外縁に存在する格子群を変換領域として定義する. 変換領域を確保するため, 調理容器は存在確率フィールドの外縁に存在する格子群と交わらないように配置する. 存在確率フィールドと調理容器の配置関係について図 3.3 に示す. 固体群の「舞い上が図 3.3: 存在確率フィールドと調理容器の配置関係

り」の挙動を実現するため, 調理容器を存在確率フィールドの下部 (存在確率フィールド座
標系の Z 軸負方向) に配置し, 調理容器の上部空間幅 Lup が大きくなるようにする. なお,

19

Lup は通常の調理時に固体群が「舞い上がり」をして到達する程度の長さとする. さらに,変換領域として定義する空間を確保するため, 図 3.3 の様に, 調理容器と存在確率フィー
ルドの外縁の間に, 格子 1 つ分以上の間隔を空ける.
図 3.3 における, XY 平面の断面図を図 3.4 に, XZ 平面の断面図を図 3.5 に示す. C ′ は存在確率フィールドの中心座標である. 図 3.4 ように, XY 平面において, 調理容器の中心
座標 Cc を C ′ に, ハイトフィールドの格子点を存在確率フィールドの格子点に一致させる
ように配置をする. なお, ハイトフィールドの格子間隔 lh と存在確率フィールドの格子間隔 lp は lh = lp = l と等しい値に設定する. また, 調理容器の底面を図 3.5 のように, XY 平
面と平行にし, 存在確率フィールドの格子の境目に位置するように配置する. 以上のように, 存在確率フィールドは調理容器に対して固定して配置されるため, 調理容器の姿勢が変化した時は, 存在確率フィールドも付随して姿勢が変化する.

図 3.4: XY 平面の断面図

3.3.5

図 3.5: XZ 平面の断面図

変換領域の設定

前節で述べたように, 上部固体群から外部固体群への変換は, 存在確率フィールドの外縁に, 変換領域を設定して行う. 本節では, 変換領域について説明する. 上部固体群から外部固体群への変換は第 3.7.2 節を参照されたい.
変換領域は, 存在確率フィールドの外縁に位置する格子群で定義する. 具体的には, 存
在確率フィールドの外縁に位置する格子群によってできる面 HBi (存在確率フィールド全体を直方体とみなすと, 直方体を構成する 1 面に相当) に接する, 厚さが l となる板状の格子群として設定する. 結果的に存在確率フィールドに, 図 3.6 のような, 計 6 つの変換領域
B1 . . . B6 が定義される. 各変換領域 Bi につき, Bi の中心座標から存在確率フィールドの20

中心までの相対ベクトル nBi を保存する. nBi は以下のように求める.

nBi =(C ′ − CBi )|C ′ − CBi |(3.15)CBi は変換領域 Bi の中心座標, C ′ は存在確率フィールドの中心座標である.

図 3.6: 存在確率フィールドに定義される変換領域

3.4

調理容器外部領域の固体群

調理容器内部領域と調理容器上部領域以外の領域 (調理容器外部領域) における固体群(外部固体群) は粒子のように扱うことで表現を行う. 外部固体群は 1 つにつき, 「固体群

21を構成する固体」1 つとはせずに, 「ある程度の固体が集まった固体群」として扱う (上部領域と同様に固体群粒子と呼ぶ). 外部固体群 Q は以下のパラメータによって定義する.

• 中心座標 CQ• 速度 vQ• 総体積 VQ
• 分布半径 rQ
使用する粒子数を抑えるため, 外部固体群 1 つにつき, 複数の粒子が挙動しているように描画を行う. 外部固体群は中心座標 CQ の半径 rQ 圏内に複数の固体群粒子を描画することで表現する. 描画する固体群粒子の数, 大きさは総体積 VQ に応じて変化させる.
今回は, 外部固体群の描画も上部固体群と同様に, 数種類の固体群粒子をスケール変換
して複数描画することで表現した.

3.5

各領域の固体群挙動計算

本モデルでは, 領域別にそれぞれ異なる挙動計算をして固体群挙動を表現する. 本モデルにおける, 各固体群表現の挙動計算法は以下のようになる.

• 内部固体群;(格子法モデルの) 変形曲面
• 上部固体群; 変形曲面を拡張した方法• 外部固体群; 固体群同士の衝突を考慮しない自由落下
計算量の削減のため, 外部固体群の挙動は, 固体群同士の衝突を考慮しない簡略化した方法で計算する. また, 以下の節では上部固体群の固体群挙動計算について説明し, 内部固体群の挙動計算については省略する. なお, 内部固体群の挙動計算については, 第 2.1 節,
文献 [9] を参照されたい.

3.6

調理容器上部領域の固体群挙動

3.6.1

変形曲面の拡張格子法モデルでは変形曲面を生成して, ハイトフィールドの形状を変化させることにより, 内部固体群の挙動を表現していた. 本モデルでは, 格子法モデルで用いられていた変形曲面を 1 次元拡張して上部固体群の挙動計算に用いる. 具体的には, 4 次元超曲面を用
いて 3 次元空間に存在する固体群分布を変化させる.
4 次元超曲面を用いた, 3 次元空間における固体群の分布を変化させる方法は図 2.2 と同様である. まず, 図 3.7-1 のように, 時刻 t において, ある 3 次元空間内に固体群が分布している時に, 固体群が移動する方向へ, 固体群分布量を増加させる働きをする 4 次元超曲面

22を生成する (図 3.7-2). 超曲面を 3 次元に投影した立体の中に含まれる座標は, その座標における超曲面の第 4 次元成分の値に従って値が加算される (図 3.7-3). その後, 定義空間に存在する固体群の総量が, 超曲面加算前と比べて増加するので, 超曲面を生成する前の固体群総量と等しくなるように全体を修正する. このようにして, 時刻 t + ∆t における固体
群分布を求める (図 3.7-4). 以降は, このような超曲面を「変形超曲面」と呼称する.

図 3.7: 超曲面を用いた固体群分布変化の近似

3.6.2

上部固体群への変形超曲面の適用

上部固体群の挙動表現は, 変形超曲面を存在確率フィールドに適用することで実現する.
格子法モデルと同様に, 上部固体群全体をひとつの操作対象とみなす事で, 固体群挙動の計算量を削減する. なお, 存在確率フィールドに変形超曲面を適用するために, 図 3.7 の処理は, 存在確率に基づいた固体群体積の期待値に対して行う. 存在確率フィールドにおける各格子の存在確率と, その格子における上部固体群体積の期待値の関係は第 3.3.2 節に述べた通りである. 存在確率フィールドから, 各格子における上部固体群体積の期待値を求めて変形超曲面の処理を行った後, その結果を存在確率フィールドに反映することで存在確率の遷移を実現する.
本モデルで利用する変形超曲面は 3 次元に投影した形状が, 楕円球となる超曲面と多角柱となる超曲面である. 以降は単純化のため, 生成する変形超曲面を, 3 次元投影時の立体形状で呼称する. すなわち, 先述の変形超曲面に対して, 前者を楕円球状変形超曲面, 後者
を多角柱状変形超曲面と呼称する.
上部固体群の挙動は楕円球状変形超曲面を用いることで表現する. 存在確率フィールドの重心の単位時間辺りの移動量を上部固体群の速度と見立て, 速度と上部固体群にかかる力から変形超曲面の生成場所を計算する. また, 調理容器を貫通して上部固体群が挙動しないように, 曲面生成点と調理容器との交差判定を行い, 交差している時は, 調理容器を貫通しないように曲面生成点を更新する. なお, 本モデルでは固体群にかかる力を, 重力と調理容器の並進による慣性力の合力とする. 調理容器の回転による上部固体群が受ける慣性力や, 内部固体群が調理容器から受ける力は考慮しない.

23

図 3.8: 楕円球状変形超曲面

多角柱状変形超曲面は, 上部固体群が存在確率フィールドの外に出る挙動表現のために利用する. 本モデルでは, 上部固体群を外部固体群へ変換することで, 存在確率フィール
ドの外へ固体群が出る挙動を表現している. 多角柱状変形超曲面はこの時, 変換を促す働きをする. また, 多角柱状変形超曲面の生成は, 上部固体群の静止を防ぐことも目的としている.
以下, 第 3.6.3 節以降に楕円球状変形超曲面, 第 3.6.11 節以降に多角柱状変形超曲面について説明する.

3.6.3

楕円球状変形超曲面

楕円球状変形超曲面は図 3.8 のように, 以下のパラメータを定める事で定義する.

• 中心座標 Oe• 3 次元投影時の楕円球の大きさを示す a, b, c
• 3 次元投影時の楕円球の姿勢を表す基底ベクトル ea , eb , ec
• 超曲面内の座標 (X, Y, Z) における第 4 次元成分の値 w(X, Y, Z)
以降は, 単純化のため変形超曲面によって加算される値 w(X, Y, Z) を「密度」と呼称する.

24

3.6.4

生成位置と密度の計算

存在確率フィールドの重心の単位時間あたりの移動量 GE (t) − GE (t − 1) を上部固体群の速度, 上部固体群が受ける力を加速度と見立てることで楕円球状変形超曲面の生成位置を求める.
時刻 t における楕円球状変形超曲面の生成位置 Oe (t) は以下のように求める.
{
}
F (t)
Oe (t) = Oe (t − 1) + β (GE (t) − GE (t − 1)) +(3.16)
2
ここで, F (t) は時刻 t における上部固体群にかかる力である. また, β は任意の定数である. β は自由落下で挙動する外部固体群と上部固体群の挙動の視覚的な「ずれ」を小さくするためのパラメータであり, 経験的に定められる.
上部固体群の分布密度は, 挙動中は変化しないと考え, 楕円球状変形超曲面の密度 w(X, Y, Z)
を以下のように設定する.
Eup (t)w(X, Y, Z)(t) =(3.17)Ne (t)

Eup (t) は時刻 t における, 存在確率フィールドが保持する確率に基づく, 上部固体群体積の期待値の総量, Ne (t) は, 時刻 t における f (XI , YJ , ZK ) > 0 となる存在確率フィールドの格子の総数である.

3.6.5

回転による速度と変形超曲面の姿勢の変化

楕円球状変形超曲面は存在確率フィールド座標系で定義されている. そのため, 図 3.9 のように, 存在確率フィールドが調理容器の姿勢変化に合わせて回転した時, ワールド座標系から見ると, 楕円球状変形超曲面の姿勢が変化してしまう. また, 速度ベクトルについても同様のことが言える.
そこで, 前時刻から調理容器が ∆θx , ∆θy 回転した時, ワールド座標系の変形超曲面の姿
勢に変化が起きないように, 変形超曲面の各軸の基底ベクトルを以下のように更新する.

ea (t) = R(−∆θx , −∆θy )ea (t − 1)

(3.18)eb (t) = R(−∆θx , −∆θy )eb (t − 1)

(3.19)ec (t) = R(−∆θx , −∆θy )ec (t − 1)

(3.20)

R(−∆θx , −∆θy ) は −∆θx , −∆θy 回転から求められる回転行列である. また, 変形超曲面の生成位置についても以下のようにして求める
{
}
F (t)
Oe (t) = Oe (t − 1) + β R(−∆θx , −∆θy )(GE (t) − GE (t − 1)) +(3.21)
2

3.6.6

初期状態

楕円球状変形超曲面は, 上部固体群が存在しない状態で, 他の固体群表現から上部固体群への変換が行われたときに初めて生成される. このような事態は以下の 2 通りの場合が考えられる.

25

図 3.9: 回転による変形曲面の姿勢変化• 外部固体群が存在確率フィールドに入った時• 内部固体群が容器から離れるような力を受けた時生成する楕円球状変形超曲面の初期状態は, 変換される固体群表現の分布を楕円球に近似して求める. 変形超曲面の初期状態の計算は, 本節では説明を省略する. 外部固体群が存在確率フィールドに入った時の変形超曲面初期状態の計算法を, 第 3.7.1 節, 内部固体群が容器から離れるような力を受けた時の計算法を, 第 3.7.3 に後述する.

3.6.7

調理容器との交差判定による生成位置の更新

上部固体群が, 調理容器を貫通して挙動するのを防ぐため, 変形超曲面の生成位置 Oe (t)を計算したのち, 線分 Oe (t)Oe (t − 1) と, 調理容器を構成する面との交差判定を行う. 線分が調理容器と交差していた場合, 線分 Oe (t)Oe (t − 1) が調理容器と交わらないように Oe (t)を更新する. この時, 計算量を削減するため, 上部固体群と調理容器間の摩擦力は考慮しない. 線分 Oe (t)Oe (t − 1) と調理容器の面との交差は以下の 3 通りが考えられる.

1. 容器の内側から, 容器の底面と交差する
2. 容器の内側から, 容器の側面と交差する
3. 容器の外側から, 容器の側面, または底面と交差する
ここで, 「容器の内側から面と交差する時」とは, Oe (t − 1) が以下の 2 つの条件を満たす時と定義する.

• Z 軸成分において, Oe (t − 1) > Zbottom

26• XY 平面において, Oe (t − 1) ⊆ Hbottom
ここで, Hbottom は調理容器の底面を構成する平面図形であり, Zbottom は Hbottom の Z 軸成分における値である. 図 3.10 に, 調理容器の底面を構成する平面図形が楕円の時の, 上の条件を満たす存在確率フィールドの範囲を例として示す. XY 平面において, 調理容器を構成する平面図形に含まれる範囲は図 3.10 右の斜線部であり, 調理容器の底面に接する楕円柱の内部が条件を満たす範囲となる (図 3.10 左).

図 3.10: 容器の内側と判定される範囲 (調理容器の底面が楕円)

線分 Oe (t)Oe (t − 1) が調理容器の底面と交差する時の断面図を図 3.11 に示す. 更新後の変形超曲面の生成点 Oe′ は以下のように求める.

Oe′ = IB + γnbottom(3.22)

ここで, IB は線分 Oe (t)Oe (t − 1) と調理容器の底面を構成する平面図形 Hbottom の交点であり, nbottom は Hbottom の法線, γ は任意の正の定数とする.

図 3.11: 容器の底面との交差

27

次に, 線分 Oe (t)Oe (t − 1) が調理容器の側面を構成する平面図形 HSide と交わる時の断面図を図 3.12 に示す. この時, Oe′ は以下のように求める.

Oe′ = IS + γnS + e(3.23)

ここで, IS は, 線分 Oe (t)Oe (t − 1) と調理容器の側面を構成する平面図形 HSide の交点であ−−−−−−−−−−→り, nS は HSide の法線, e はベクトル Oe (t − 1)Oe (t) の HSide への投影ベクトルである. Oe′
を求めた後, 線分 Oe′ (t − 1)Oe′ (t) と調理容器を構成する面との交差判定を行う. Oe (t − 1)′
は, 線分 Oe (t)Oe (t − 1) と容器側面が交わる点 IS から, 容器側面の法線方向に存在する点であり,Oe′ (t − 1) = IS + γnS(3.24)のように求める. 線分 Oe′ (t − 1)Oe′ (t) が調理容器を構成する面と交わるならば, 同様に新
たな生成点を求め, 調理容器を構成する面と交わらなくなるまで計算を行う.

図 3.12: 容器の側面との交差 (容器の内側から)最後に, 線分 Oe (t)Oe (t − 1) が調理容器の側面を構成する平面図形 HSide に容器の外側から交わる時の断面図を図 3.13 に示す. この時, Oe′ は以下のように求める.

Oe′ = IS + γ(−nS ) + e

3.6.8(3.25)

調理容器面を横断した加算の制限

上部固体群が調理容器を貫通して移動しないように, 調理容器の面を横断した超曲面による, 存在確率フィールドの格子への加算を禁止する. 存在確率フィールドの全格子座標
MIJK に対して, 線分 Oe MIJK と調理容器を構成する面の交差判定を行うと計算量が多くなり, 対話操作性実現の障害となる. そこで, あらかじめ存在確率フィールドの全格子に対して, 調理容器との位置関係に応じてラベルを付与する. 変形超曲面による加算の際に,

28

図 3.13: 容器の側面との交差 (容器の外側から)

Oe 付近のラベルと対象格子のラベルを比べて加算を行うか判断することで, 計算量を削減する.
以下に, 付加するラベル (番号) ごとに, 付与対象となる格子についての条件を列挙して述べる.
• ラベル (0) を以下の条件を満たす格子に付与する.
– XY 平面において, MIJK ⊆ Hbottom– Z 軸成分において
MIJK > Zbottom かつ, MIJK < Zbottom + h• ラベル (1) を以下の条件を満たす格子に付与する.
– XY 平面において, MIJK ⊆ Hbottom– Z 軸成分において MIJK ≥ Zbottom + h• ラベル (2) を以下の条件を満たす格子に付与する.
– XY 平面において, MIJK ⊆/ Hbottom• ラベル (3) を以下の条件を満たす格子に付与する.
– XY 平面において, MIJK ⊆ Hbottom– Z 軸成分において, MIJK < Zbottom
Zbottom は存在確率フィールド座標系における, 調理容器底面を構成する面の Z 軸成分における座標である. また, h は調理容器側面の高さである. 存在確率フィールドに振られるラベルを番号で示して XZ 平面における断面図で図示すると, 図 3.14 のようになる.
超曲面生成後, 格子のラベル s と超曲面生成位置 Oe のラベル so を比べて, 対象格子に加算を行うか判定する. 今回はラベルとして付与した番号を比較することにより判定を

29

図 3.14: 存在確率フィールドの格子に付与するラベル (番号表記)

行う. なお, so も同様に, 上述の条件でラベルを求める. 以下の条件を満たすとき, 格子(XI , YJ , ZK ) に値を加算する.
|s − so | ≤ 1(3.26)

3.6.9

超曲面生成点の存在確率フィールドからの離脱

上部固体群は楕円球状変形超曲面によって挙動するが, 短い時間の間に調理容器を大きく移動させた場合, 楕円球状変形超曲面の生成場所が存在確率フィールドの外に出る時がある. このうち, 図 3.15 のように, 時刻 t − 1, t の両時刻で楕円球状変形超曲面が変換領域と交わらないように生成されると, 上部固体群の分布に変化が起こらずに, 結果的に空中に静止してしまう. この事を防ぐため, 楕円球状変形超曲面の生成位置が存在確率フィールドの外に出た後は, 上部固体群が外部固体群へ変換されるようにする. 具体的には, 変
換領域に変形超曲面を生成することで, 楕円球状変形超曲面が外に出た後に固体群変換が行われるようにする (図 3.16). 生成する変形超曲面の 3 次元投影時の形状は, 楕円球状変形超曲面と変換領域が交わる領域を充たすように設定する. この変形超曲面の形状は, 凸多角柱で近似的に再現する (凸多角柱状変形超曲面). 凸多角柱状変形超曲面は, 楕円球状
変形超曲面の 3 次元投影時の立体表面上の点を各変換領域に投影し, それらの点を用いて凸多角平面図形を生成することで求める. 以下, 凸多角柱状変形超曲面について説明する.

3.6.10多角柱状変形超曲面

凸多角柱状変形超曲面は図 3.17 のように, 以下のパラメータによって定義する.

30

図 3.15: 急激な平行移動をした場合の変形超曲面生成

図 3.16: 変換領域における変形超曲面生成• 底面を構成する凸多角平面図形の重心座標 Op′• HBj を含む無限平面 HBj
表面上に存在する凸多角平面図形の頂点群 x′Bjei• 上述の凸多角平面図形の法線 np• 凸多角柱の高さ hp• 超曲面内の座標 (X, Y, Z) における第 4 次元成分の値 wp (X, Y, Z)
HBj は変換領域 Bj に接する. 存在確率フィールドの境界面の 1 面である. 簡単化のため,
以降は, 凸多角柱状変形超曲面でも同様に, wp (X, Y, Z) を「密度」と呼称する.

31

図 3.17: 多角柱状変形超曲面

3.6.11

初期状態の計算

楕円球状変形超曲面の生成座標 Oe (t) が存在確率フィールドの外に出た時, 多角柱状変形超曲面を以下の手順で生成する.

1. 投影する楕円球状変形超曲面表面上の頂点群 x′ei の計算′
2. 投影先となる無限平面 HBjの選出′
3. HBjへ x′ei を投影した点 xBjei の計算

4. xBjei からなる凸多角平面図形の計算
5. 凸多角柱状変形超曲面の生成
以下, 各手順について説明する.

1. 投影する楕円球状変形超曲面表面上の頂点群 x′ei の計算
投影する楕円球状変形超曲面表面上の点 x′ei は, 楕円球の形状定義で用いられている,
基底ベクトル 3 軸を用いて合計 6 点求める. 投影する点 x′e1 ∼ x′e6 は以下のように求める.
x′e1 = Oe (t) + aea (t)(3.27)

x′e2(3.28)= Oe (t) + a(−ea (t))

32x′e3 = Oe (t) + beb (t)(3.29)

x′e4 = Oe (t) + b(−eb (t))(3.30)

x′e5 = Oe (t) + cec (t)(3.31)

x′e6(3.32)= Oe (t) + c(−ec (t))′
の算出
2. 投影先となる無限平面 HBj′
nBj · e < 0 となる, 変換領域 Bj に接する存在確率フィールドの境界面 HBj をすべ−−−−−−−−−−→′て求め, 各 HBj を含む無限平面を HBjとする. なお, e′ はベクトル Oe (t − 1)Oe (t) の単位ベクトルである.
′へ x′ei を投影した点 xBjei の計算
3. HBj′投影ベクトルを −e′ , または e′ に設定し, 図 3.18 のように x′ei を各 HBjに投影して
xBjei を求める.

図 3.18: xBjei の算出

4. xBiei からなる凸多角平面図形の計算′
上に xBjei から成る凸多角平面図形を二次元凸包を用いて
x′ei を投影した各平面 HBj求める. なお, 本モデルでは凸包に Graham-Scan 法を用いた.
5. 凸多角柱状変形超曲面の生成
Op , hp , np , wp (X, Y, Z) を以下のように設定し, 各変換領域 Bj に対応する凸多角柱状
変形超曲面を生成する.
Op =1
NconvexN∑convexx′Bjei(3.33)

33

hp = lnp = nBj
Eup (t)wp (X, Y, Z) =Ne (t)(3.34)(3.35)(3.36)′
なお, Nconvex は平面 HBj
上の xBjei から成る凸多角平面図形の頂点数, x′Bjei はその凸多角平面図形を構成する頂点であり, l は存在確率フィールドの格子間距離, Eup (t)は時刻 t における存在確率フィールドが保持する確率に基づく上部固体群体積期待値の総量, Ne (t) は時刻 t における f (XI , YJ , ZK ) > 0 である格子の総数である.

凸多角柱状変形超曲面が生成された変換領域にて, 上部固体群が外部固体群に変換される
ことにより, 存在確率フィールド境界においての固体群挙動を表現する. なお, 上部固体群から外部固体群への変換の詳細は第 3.7.2 節に述べている. 多角柱状変形超曲面は初期状態を維持したまま, 上部固体群が存在しなくなるまで生成する.

3.7

各領域の固体群間の変換

本モデルでは, ある領域に存在する固体群が別領域に達した時に固体群表現の変換を行う. 図 3.1 より, 本モデルにおける固体群表現の変換は以下の 4 通りである.

• 外部固体群 ⇒ 上部固体群• 上部固体群 ⇒ 外部固体群• 内部固体群 ⇒ 上部固体群• 上部固体群 ⇒ 内部固体群
外部固体群から上部固体群への変換は, 存在確率フィールドに楕円球状変形超曲面を生成することで実現する. 生成する楕円球状変形超曲面の形状は, 存在確率フィールドの中に侵入した外部固体群の分布から近似的に求める.
上部固体群から外部固体群への変換は, 存在確率フィールドに定義された変換領域を用いて行う. 各変換領域ごとに, 領域内に存在する上部固体群を外部固体群に変換する. この時, 変換された外部固体群の速度に上部固体群の見立ての速度を適応する.
上部固体群, 内部固体群間の変換は, 時刻 t の固体群にかかる力 F (t) と調理容器の底面を構成する平面図形の法線 nbottom の内積によって変換の向きが変わる. 具体的には,F (t) · nbottom ≤ 0 の時は, 上部固体群を内部固体群に変換し, F (t) · nbottom > 0 の時に, 内部固体群を上部固体群に変換する. 上部固体群から内部固体群への変換は, ハイトフィー
ルドに変形曲面を生成することで実現する. また, 内部固体群から上部固体群への変換は,ハイトフィールドを存在確率フィールドの格子に代入し, 存在確率フィールドに楕円球状
変形超曲面を生成する事で実現する.
固体群表現の変換に伴い, 内部固体群の総量 Vc , 存在確率フィールドが保持する確率に基づく上部固体群体積の期待値の総量 Eup を更新する. これらの値は, 固体群変換によって増減し, 変形曲面, 変形超曲面生成後にハイトフィールドや存在確率フィールドに行う

34

処理 (格子法モデルで第 2.5 節に相当する処理) によって, 各領域に存在する固体群総量の変化が反映される.
なお, 本モデルでは, 上部固体群の重心の単位時間あたりの移動量を上部固体群の速度と見立てているため, 上部固体群が存在する時は他の領域からの上部固体群への変換は考慮しないこととする. これは, 上部固体群が存在する時に変換を行うと上部固体群の重心が大きく変化し, 上部固体群の挙動を正しく表現できないためである.
また, 本提案モデルでは, 内部固体群と外部固体群間の変換は考慮していない. 内部固体群と外部固体群間の変換は, 現実での調理容器を用いた固体群操作では「こぼれ」挙動に当てはまる. 「こぼれ」挙動とは, 調理容器の底部を鉛直上方向に向けている状態で, 内部固体群があふれたり, 崩落によって調理容器縁から自由落下するような挙動である. 当研究室では現在, 「こぼれ」挙動のためのモデルを固体群操作モデルの一部として別途開発中である.
以下, 各固体群表現の変換について説明する.

3.7.1

外部固体群から上部固体群への変換

外部固体群の上部固体群への変換は, 存在確率フィールドに楕円球状変形超曲面を生成することで実現する. 存在確率フィールドに上部固体群が存在せずに (Eup = 0), 外部固体群が存在確率フィールド内に侵入した時に楕円球状変形超曲面を生成する. 生成する変形超曲面の各パラメータは, 存在確率フィールド内に侵入した外部固体群数に応じて求める. 以下, 侵入した外部固体群数に応じた変形超曲面の導出方法を述べる. なお, 生成する
楕円球状変形超曲面の大きさを一定以上にするため, 楕円球状変形超曲面の大きさに関連する各パラメータ a, b, c について最低値 rmin を以下のように定める.
√
3rmin =
l(3.37)
2
ここで, l は存在確率フィールドの格子間距離である. また, 本節において用いている, 侵
入した外部固体群の中心座標 CQi や速度 vQi は存在確率フィールド座標系に変換した座標とする.

1. 侵入した外部固体群が 1 つのとき侵入した外部固体群 Q の分布半径 rQ に等しい半径を持つ球状の変形超曲面を生成する. 変形超曲面の各パラメータは以下のようにして定める.
Oe = CQ(3.38)

a = rQ(3.39)

b = rQ(3.40)

c = rQ(3.41)

ea = eX(3.42)

eb = eY(3.43)

ec = eZ(3.44)

35

EQIn1( 43 πabc)w(X, Y, Z) =(3.45)

上述の式のうち, eX , eY , eZ はそれぞれ存在確率フィールドの X, Y, Z 軸成分の基底In1ベクトルであり, EQ
は変換された「存在する固体群体積の期待値」であり, 外部固体群 Q の総体積量 VQ を用いて, 以下のようにして求める.

EQIn1 = VQ δ

(3.46)

ここで, δ は, 「外部固体群の総体積」と「存在確率フィールドが保持する確率に基づく上部固体群体積の期待値」間における変換率である.

2. 侵入した外部固体群が 2 つのとき存在確率フィールドに侵入した外部固体群をそれぞれ Q1 , Q2 とする. 線分 CQ1 CQ2を含む楕円球状変形超曲面を生成する. 楕円球状変形超曲面のパラメータは以下のように求める.
CQ1 + CQ2
2
|CQ1 − CQ2 |a =2′b = rQ

Oe =

c =

′
rQ

CQ1 − CQ2
|CQ1 − CQ2 |= ea × ec(3.48)(3.49)(3.50)

ea =(3.51)

eb(3.52)

ec = uw(X, Y, Z) =C

(3.47)EQIn2( 43 πabc)(3.53)(3.54)−CQ2· u = 0 となる任意の単位ベクトルである. また, ea × ec は ea
ここで, u は |CQ1
Q1 −CQ2 |′と ec の外積である. rQは侵入した外部固体群の分布半径の平均であり,′=rQ

rQ1 + rQ2
2

(3.55)

In2と求める. また, EQ
は以下のようにして求める.

EQIn2 = (VQ1 + VQ2 )δ

(3.56)

3. 侵入した外部固体群が 3 つのとき存在確率フィールドに侵入した外部固体群 Q1 , Q2 , Q3 の中心座標 3 点から求められる三角形を用いて楕円球状変形超曲面の形状を求める. 生成する楕円球状変形超曲面のパラメータは以下のように求める.
Oe =CQ1 + CQ2 + CQ3
3(3.57)

36

a = a′ ϵ(3.58)

b = b′ ζ(3.59)′
c = rQ
CQmax − Oeea =|CQmax − Oe |eb = ea × ec

ec = nQ
EQIn3
w(X, Y, Z) = 4( 3 πabc)(3.60)(3.61)(3.62)(3.63)(3.64)max
ここで, CQ
は, CQ1 , CQ2 , CQ3 のうち, 重心 Oe からの距離が最大となる点である.
′
また, a は以下のように求める.

a′ = |CQmax − Oe |(3.65)

また, b′ は CQ1 , CQ2 , CQ3 の 3 点から求められる平面三角形の面積 SQ を用いて以下のように求める.
SQb′ = ′(3.66)
πa
さらに, ϵ, ζ は生成する変形超曲面の大きさを調整するためのパラメータであり, 任In3意の定数とする. nQ は CQ1 , CQ2 , CQ3 の 3 点から求められる平面の法線である. EQ
は以下のようにして求める.

EQIn3 = (VQ1 + VQ2 + VQ3 )δ

(3.67)

4. 侵入した外部固体群が 4 つ以上のとき
存在確率フィールドに侵入した外部固体群の数が 4 つ以上の時は, 平面凸多角形を生成し, 近似的に楕円球状変形超曲面を求める. 平面凸多角形は, 各外部固体群の中′
心座標 CQi を平面 HQ に投影し, 得られた投影点 CQiと二次元凸包を用いる事により求める. さらに, 求めた平面凸多角形から, 生成する楕円球状変形超曲面の断面となる楕円を求め, 生成する変形超曲面の形状を求める. HQ は CQi の重心を表面上に含む任意の平面とする. 楕円球状変形超曲面のパラメータは以下のように求める.
1 ∑
Oe =
CQi
NQ
a = a′ ϵNQ′b = bζ

(3.68)(3.69)(3.70)

1 ∑
c =
LQi
NQ
CQ′max − Oeea =|CQ′max − Oe |eb = ea × ec
NQ

(3.71)(3.72)(3.73)

37

ec = n′Q
w(X, Y, Z) =EQIn4
( 43 πabc)(3.74)(3.75)

ここで, NQ は存在確率フィールドに侵入した外部固体群の総数である. n′Q は, 投影先となる平面 HQ の法線であり, 今回はn′Q = −

R(−θx, −θy)g|g|(3.76)とした. g はワールド座標における重力ベクトルである. 投影ベクトルを n′Q , または −n′Q′′に設定し, 外部固体群の中心座標 CQi を HQ に投影した点 CQiを求める. CQi
から得られる凸多角形は, 第 3.6.11 節と同様に Graham-Scan 法を用いて求める. 求めた凸多角形を構′max
成する頂点の内, Oe からの距離が最大の点 CQを求め, a′ , b′ を次のようにして計算する.

a′ = |CQ′max − Oe |SQconvex′b =πa′(3.77)(3.78)

convex
上述の式のうち, SQは求めた凸多角形の面積である. また, ϵ, ζ は前述と同様に任意の定数とする. LQi は, 侵入した外部固体群の中心座標 CQi から平面 HQ までの距離である.
In4
また, EQは以下のようにして求める.
NQ∑

EQIn4 = (VQi )δ

(3.79)

以上の通りに変形超曲面の形状を計算して, 存在確率フィールドに楕円球状変形超曲面を生成する. さらに, 次のフレーム時は, 変換された外部固体群の速度を, 上部固体群の速度と見立てて変形超曲面を生成する. 外部固体群が上部固体群に変換された次フレーム時(時刻 t′ + 1) の変形曲面生成点 Oe (t′ + 1) を以下のようにして求める.


NQ
∑
1
1
vQi + F (t′ + 1)
(3.80)Oe (t′ + 1) = Oe (t′ ) + β 
NQ
2

3.7.2

上部固体群から外部固体群への変換

上部固体群から外部固体群への変換は, 存在確率フィールドに定義した各変換領域で行う. 具体的には, 毎フレーム, 各変換領域に存在する上部固体群の期待値の総和と変換率の積に等しい量の外部固体群を各変換領域に生成する. このとき, 変換された外部固体群の速度 vQi に上部固体群の速度を適用する.
本モデルでは, 存在確率フィールドの重心の単位時間当たりの移動量を上部固体群の速度と見立てている. しかし, この値を上部固体群の速度として適用するだけでは, 「存在38

確率フィールドから離れる方向にかかる力」による固体群の加速を実現することができな
い. これは, 存在確率フィールドの重心が, 必ず存在確率フィールド内に含まれる事が原因であり, 一定方向に重心が移動する場合, 存在確率フィールドの重心が端に寄るほど, 移動量の取りうる値域が微小になるからである. そこで, 上部固体群が存在確率フィールドから離れる事が確定的となった後は, 予測速度を外部固体群の速度として適用する. 具体
的には, 凸多角柱状変形超曲面が生成された時を, 上部固体群が存在確率フィールドから離れる事が確定的となった時とみなす. この時, 存在確率フィールドの重心の移動量を記録する. 凸多角柱状変形超曲面生成以降は, 記録した値を更新しながら, 変換された外部固体群の速度として用いる.
時刻 t における, 各変換領域 Bj で変換された外部固体群の速度 vQi は以下のようにして求められる.
R(θx , θy )−1 (Ge (t) − Ge (t − 1)) + vc (t)(楕円球状変形超曲面が生成されている時)(3.81)
vQi = −1
 R(θx , θy ) vup (t) + vc (t)(凸多角柱状変形超曲面が生成されている時)

R(θx , θy )−1 は存在確率フィールド座標系をワールド座標系に変換するための変換行列である. また, vc (t) は時刻 t における調理容器の速度であり, vup は上部固体群の予測速度で0ある. vup の初期値 vup
は以下のように求める.
0vup= GE (tout ) − GE (tout − 1)

(3.82)

時刻 tout は凸多角柱状変形超曲面が生成された時刻である. また, vup の更新は以下のようにして行う.
vup (t) = vup (t − 1) + F (t)(3.83)
変換領域 Bj に含まれる格子の内, f (XI , YJ , ZK ) > 0 である格子が存在する場合, 上述の速度を持つ外部固体群を NBjQ 個生成する. この時, 以下の条件を満たすように外部固体群を生成する.
′
NBj
NBjQ
∑
∑
1
Bj
VBjQi =E(XIBj , YJBj , ZK)
(3.84)δNBjQ は変換領域 Bj で生成される外部固体群の総数, VBjQi は変換領域 Bj で生成された外′部固体群 Qi が持つ総体積, NBj
は変換領域 Bj に含まれる格子の総数, δ は上部固体群と
Bj
Bj
Bj
外部固体群の変換率, (XI , YJ , ZK
) は変換領域 Bj に含まれる存在確率フィールドの格子である.
各変換領域で生成される外部固体群数 NBjQ , 各外部固体群の中心座標 CQi , 総体積 VQi ,分布範囲 rQi は経験的に定められるパラメータである. 本モデルでは対話操作性に重点を置いているため, 今回は, 1 フレームで各変換領域に生成される外部固体群の最大数を
NBjQ = 12 とし, 生成数を毎フレーム乱数により決定した. また, 外部固体群の中心座標
Bj
CQi は乱数を用いて, f (XIBj , YJBj , ZK
) > 0 を満たす格子点座標をランダムに代入した. また, 分布半径は定数とした.

39

3.7.3

内部固体群から上部固体群への変換

本モデルでは, 以下の 2 つの条件を満たす時に, 内部固体群が調理容器から離れる挙動をすると判定し, 内部固体群を上部固体群に変換する.

• Eup (t) = 0• F (t) · nbottom > 0
Eup (t) は時刻 t に存在確率フィールドが保持する確率に基づく固体群体積の期待値の総量,
F (t) は固体群にかかる力, nbottom は調理容器の底面を構成する平面図形の法線である. なお, 「内部固体群から上部固体群への変換」は, 「上部固体群から内部固体群への変換」と背反関係にあり, 上記の条件を満たさない時は「上部固体群から内部固体群への変換」が行われる. 「上部固体群から内部固体群への変換」の詳細は後述の第 3.7.4 節を参照されたい.
内部固体群から上部固体群への変換は, 具体的には以下の手順で実現する.
1. ハイトフィールドを存在確率フィールドへ代入
2. 存在確率フィールドに変形超曲面を生成
ハイトフィールドの存在確率フィールドへの代入は, ハイトフィールドの形状に従って,代入を行う存在確率フィールドの格子を求める. また, 存在確率フィールドに生成する変形超曲面は楕円球状変形超曲面とする. 変形超曲面は, ハイトフィールドの形状や存在確率フィールドへの代入結果から求める. 以下各手順について述べる.

1. ハイトフィールドを存在確率フィールドへ代入
第 3.3.4 節で, 存在確率フィールドと容器内に配置されたハイトフィールドの位置関係について述べたが, この位置関係において, 調理容器の底面から, ハイトフィールドの表面付近までに存在する格子に代入を行う. 代入を行う存在確率フィールドの格子数は, ハイトフィールドの格子が持つ値 f (xi , yj ) に従って増減するので, 調理容
器内に定義されたハイトフィールドの各格子ごとに, 代入を行う存在確率フィール
ドの格子を求める.
ハイトフィールドの格子 (xa , yb ) について, 格子 (xa , yb ) に XY 平面で一致する存
在確率フィールドの格子群のうち, 代入が行われる格子を (XA , YB , Zbottom+n ) (n =0, 1, 2 . . . kab ) とすると, kab は以下のように求める.
kab = ⌊f (xa , yb )⌋l(3.85)

格子 (XA , YB , Zbottom ) は, 図 3.19 のように格子 (xa , yb ) に一致する存在確率フィールドの格子群のうち, Z 軸成分において調理容器の底面を構成する面 Hbottom との距離が最小となる格子である. また, l はハイトフィールド, 存在確率フィールドの格子間距離である.

40

図 3.19: 格子 (xa , yb ) に XY 平面で一致する存在確率フィールドの格子群

kab > 0 の時, (XA , YB , Zbottom ) . . . (XA , YB , Zbottom+kab ) の格子には以下のように代入を行う.
(
1(n = 0, 1, . . . kab − 1)convertEup(3.86)f (XA , YB , Zbottom+n ) =pab(n = kab )E convert
up

convert
ここで, Eupは変換によって得られる上部固体群体積の期待値の総量であり,convert
=
Eup

Vc
Vmax
l

(3.87)のように求める. Vmax は存在確率フィールドの 1 格子に存在できる固体群体積の最大量である. また, pab は以下のように求める.

pab =f (xa , yb ) − (kab − 1)ll(3.88)

kab = 0 の時は, 格子 (XA , YB , Zbottom ) に以下のように代入を行う.
f (XA , YB , Zbottom ) =f (xa , yb )convert lEup(3.89)

2. 存在確率フィールドへ変形超曲面を生成
ハイトフィールドを存在確率フィールドに代入した後, 現フレームにおいて固体群41が受けた力 F (t) による挙動を表現するため, 存在確率フィールドに変形超曲面を生成する. 生成する変形超曲面は楕円球状変形超曲面である. 楕円球状変形超曲面の3 次元投影時の形状は, 内部固体群を楕円球に近似することにより求める. 具体的には以下の手順で楕円球状変形超曲面を生成する.

(a) ハイトフィールドから凸多角平面図形を求める(b) 求めた凸多角平面図形から, 楕円球状変形超曲面を生成
まず, xy 平面において, 内部固体群の分布範囲を近似的に求めるため, 凸多角平面形を求める. 凸多角形は, f (xi , yj ) > η であるハイトフィールドの格子座標点 mij の集合に対して, 凸包である Graham-Scan 法を用いることにより求める. η は, η < l である任意の定数である. η は内部固体群の分布範囲よりも, 生成される変形超曲面の三次元投影時の形状が大きくならないために設定する. 凸多角形を求めた後は以下のように変形超曲面を設定し, 存在確率フィールドに生成する.

1
Oe = G′E (t) + F (t)β2′a = aϵ′b = bζ1c =f (xi , yj )max
2
m′max
− Gconvex
ij
ea =
′max
|mij − Gconvex |eb = ea × ec
ec = nbottom
convertEupw(X, Y, Z) =Ne′

(3.90)(3.91)(3.92)(3.93)(3.94)(3.95)(3.96)(3.97)

ここで, G′E は, ハイトフィールドを存在確率フィールドに代入した後における, 存
在確率フィールドの重心である. a′ , b′ は凸多角平面図形から近似的に求めた楕円の軸の長さであり, 以下のようにして求められる.

− Gconvex |a′ = |m′max
ij
Scconvexb′ =πa′(3.98)(3.99)

は,ここで, Gconvex は, Graham-Scan 法によって求めた凸多角形の重心であり, m′maxij
凸多角形を構成する頂点のうち, Gconvex との距離が最大となる点である. また, ϵ, ζは, 生成する変形超曲面の大きさを調節するための任意の定数であり. 経験的に定める. Scconvex は, 求めた凸多角形の面積である. f (xi , yj )max は, ハイトフィールドの格子が持つ値 f (xi , yj ) の最大値である. Vc (t) は現フレーム (時刻 t) における内部固体群の総体積である. Ne′ は, ハイトフィールド代入後の存在確率フィールドにおける f (XI , YJ , ZK ) > 0 となる格子の総数である.

42

3.7.4

上部固体群から内部固体群への変換

上部固体群から内部固体群への変換は, 以下の条件が満たされる時に行う.

F (t) · nbottom ≤ 0(3.100)F (t) は時刻 t において固体群が受ける力, nbottom は調理容器の底面を構成する面の法線である. 以上の条件を満たす時, 上部固体群は調理容器に堆積するとみなし, 固体群表現の変換を行う. 上部固体群から内部固体群への変換は, 調理容器内に定義されたハイトフィー
ルドに変形曲面を生成することで実現する. 具体的には以下の処理を行うことで変換を実現する.
1. 変換される固体群量の計算
2. ハイトフィールドに変形曲面を生成
まず, 調理容器内に定義されたハイトフィールドと存在確率フィールドの配置関係 (第 3.7.3
参照) から, 変換される固体群量を計算する. 変換される固体群量はハイトフィールドの表面よりも下に存在する上部固体群の総量を計算することにより求める. その後, ハイトフィールドに変形曲面を生成して固体群変換を行う. 以下各手順について述べる.

1. 変換される固体群量の計算変換される固体群量の計算は, 3.7.3 節における,「ハイトフィールドの存在確率フィールドへの代入」と同様に, ハイトフィールドの格子と存在確率フィールドの格子の配置関係から計算する. 存在確率フィールドに存在する上部固体群のうち, Z 軸成分において, ハイトフィールドの面付近の高さよりも下 (Z 軸負方向) に存在する上部
固体群が変換されるとみなす. 変換される上部固体群量は存在確率フィールドを走査することにより求める. ハイトフィールドの各格子ごとに, その格子が持つ高さ(f (xi , yj )) から, 走査対象となる存在確率フィールドの格子の範囲を計算する. ハイ
トフィールドの格子 (xa , yb ) に, XY 平面において一致する存在確率フィールドの格′子群のうち, 走査対象となる格子を (XA , YB , Zbottom+n ) (n = 0, 1, 2 . . . kab) とすると,′kab は以下のようにして求める.
′
=⌊
kab

f (xa , yb )⌋l(3.101)

図 3.20 に, 変換量計算のために走査対象となる存在確率フィールドの格子の範囲例を示す. 図 3.20 は XZ 平面における存在確率フィールドの断面図であり, 図 3.20 のようなハイトフィールドの形状では, 斜線部の格子群が走査対象となる.
走査対象となった格子の存在確率に基づいた上部固体群体積の期待値の合計が変換される固体群量となる. 上部固体群から内部固体群へ変換される固体群量 Vconvert は
以下のように求める.


′
kab
N
∑
∑
 l
Vconvert =E(XA , YB , Zbottom+n )
(3.102)
Vmax n=0

43

図 3.20: 走査対象となる存在確率フィールドの格子群の範囲例

44

図 3.21: 部分球状変形曲面

N は調理容器内に定義されたハイトフィールドの格子の総数, l はハイトフィールドと存在確率フィールドの格子間距離, Vmax は存在確率フィールドの 1 格子に存在することができる固体群体積の最大値である.
2. ハイトフィールドに変形曲面を生成生成する変形曲面の形状は図 3.21 のような部分球とする. 以降はこの変形曲面を部
分球状変形曲面と呼称する.
部分球状変形曲面は以下のパラメータにより定義する.
• 中心座標 oc• 底面の半径 rc• 部分球を含む球の半径 rc′
rc′ は部分球を一部に持つ球の半径である. 図 3.22 に部分球を含む球の断面図を示す.
図 3.22 において, 斜線部が部分球である. また, hc は図 3.21 のように部分球の高さを表すパラメータである.
中心座標 oc は, 前述の変換されるとみなした上部固体群の重心座標を, 調理容器底面を構成する平面に正射影した座標に設定し, 以下のように求める.



′
kab
N 

∑
∑
1
l


oc =
(3.103)E(XA , YB , Zbottom+n ) mab Vmax
Vconvertn=0

mab はハイトフィールドの格子 (xa , yb ) の座標である.
底面の半径 rc と部分球を含む球の半径 rc′ は, hc > rc とならないように, rc を長く設定する. これは, hc > rr であった場合, 部分球状変形曲面が同一座標 o′c に生成され続けると, ハイトフィールドが o′c を中心に半球状に盛り上がる形状となり, 固体群が堆積した結果の形状としては不自然になるからである.
部分球状変形曲面を生成した後, ハイトフィールドに変形曲面を加算する. ハイトフィールドの格子のうち, 部分球状変形曲面の内部に含まれる格子 (xi , yj ) の変形曲

45

図 3.22: 部分球を一部に含む球

面加算による増加量 f (xi , yj )inc は以下のように求める.

f (xi , yj )inc = rc′ (sin(θij ) − sin(θpart ))(3.104)

θij , θpart は以下のようにして求める.
|mij − oc |)rc′rc
= cos−1 ( ′ )rcθij = cos−1 (
θpart

3.7.5

(3.105)(3.106)

容器内部領域と上部領域が保持する固体群量の更新

固体群表現の変換に伴い, 内部固体群の総量 Vc と存在確率フィールドが保持する確率に基づく上部固体群体積の期待値の総量 Eup を更新する. 曲面加算後の各フィールドの格子全体に行う処理 (格子法モデルにおける, 第 2.5 節に相当する処理) に, 更新した Vc , Eupを用いることによって, 各領域ごとの固体群量の増減が反映される. 時刻 t における各領域が保持する固体群量は以下のように求める.

Vc (t) = (Vc (t − 1) + Vconvert (t − 1))UPconvert(t − 1)UP + EQin (t − 1)
Eup (t) = Eup (t − 1) + Eup
(
)
Vmax
out
− EQ (t − 1) +Vconvert (t − 1)UPl

(3.107)(3.108)UP は, 内部固体群から上部固体群への変換を表す. 時刻 t における UP は以下のように定める.
(
1 (Eup (t − 1) = 0 かつ F (t) · nbottom > 0 のとき)
UP =(3.109)0 (上記条件を満たさないとき)46

また, UP は以下のように定める.

(
UP =

1 (UP = 0 のとき)
0 (UP = 1 のとき)

(3.110)

EQin は, 存在確率フィールドの中に侵入した外部固体群が上部固体群に変換されることを表していて, 以下のように求める.
t−1
NQ

EQin (t − 1) = δ∑VQi(3.111)

NQt−1 は時刻 t − 1 における存在確率フィールドに侵入した外部固体群の総数であり, δ は上
in(t − 1) は第 3.7.1 節における, 時刻 t − 1部固体群と外部固体群の変換率である. また, EQ
In1
In2
In3
In4
out
での EQ , EQ , EQ , EQ のいずれかに相当する. EQ
は, 上部固体群から外部固体群への変換による上部固体群の減少を表していて, 以下のように求める.
 ′

NBn
NB
∑
∑
1
Bn 

EQout (t − 1) =E(XIBn , YJBn , ZK)
(3.112)
δ n=1′
NB は存在確率フィールドに定義された変換領域の総数であり, NB = 6 である. NBn
は変
Bn
Bn
Bn
換領域 Bn に含まれる存在確率フィールドの格子の総数, E(XI , YJ , ZK ) は時刻 t − 1
Bnにおける, 変換領域 Bn に含まれる存在確率フィールドの格子 (XIBn , YJBn , ZK
) の存在確率から求められる上部固体群体積の期待値である.
内部固体群から上部固体群への変換が行われるときは, 内部固体群が調理容器から離れる挙動をするので, 内部固体群が保持する固体群量 Vc すべてを上部固体群に変換する. 内部固体群から上部固体群への変換が行われない時, 上部固体群は外部固体群と内部固体群に変換される. 「内部固体群から上部固体群への変換」実行時からの時間経過に比例して,上部固体群が保持する固体群体積期待値の総量 Eup は減少する. これは, 上部固体群が再び調理容器に堆積するか, 存在確率フィールドから外に出ていく挙動をするからである.

47

第 4 章 実験および結果
4.1

実験システム以上に挙げた提案モデルを用いて実験システムを作成し, 提案モデルについて, 処理速度と固体群挙動の自然さの二方面から実験を行った. 入力装置には, 安価な入力装置として, 任天堂株式会社から発売されている “Wii リモコン” と “Wii モーションプラス”[15] を併用して用いた. “Wii リモコン” には, 赤外線センサと加速度センサが, “Wii モーションプラス” にはジャイロセンサが搭載されている. 今回の実験システムでは, 赤外線センサを使用せず, 加速度センサで調理容器の平行移動, ジャイロセンサで回転を行うように設計をした. 描画には DirectX を利用し, 以下の構成の計算機で構築した.

• CPU : Intel(R) Dual-Core E5200 2.50GHz• MEM : 1GB• OS : Microsoft Windows XP
実験システムでは, 調理容器を直径が 32.5cm, 側面の高さが 6.6cm の円柱形状のフライパン, また, 固体群を炒飯と想定している. 内部固体群はテクスチャマッピングにより表現
し, 上部固体群, 外部固体群は固体群粒子で描画している. 上部固体群は存在確率フィー
ルドの 1 格子につき, 固体群粒子が 1 つ描画されるようにした. また, 外部固体群と上部固VQ体群の変換率を δ = 1 とし, 外部固体群は１つにつき ⌈ Vmax
⌉ 個の固体群粒子を描画するように設定した. なお, VQ は外部固体群の総体積, Vmax は存在確率フィールドの 1 格子に存在することができる最大の体積である.
図 4.1 に実験の様子を示す. ハイトフィールドと存在確率フィールドの格子数はそれぞれ, 441, 12167(23 × 23 × 23) に設定した. なお, 予備調査を行った結果, ハイトフィール
ドの格子数が 441 点で固体群挙動が自然に感じられるとの評価が得られている. 体験者
は, Wii リモコンを操作することで, 調理容器を平行移動したり傾けたりすることができる. 本実験システムでは, 体験者は固体群に対して以下のような操作を行うことができる.

• 調理容器を傾けて, 容器内の固体群を滑らせる• (容器底部を鉛直上方向にむけながら) 容器を上下方向に振って固体群を舞いあげて再び受け止める, または落とす.
• 容器を逆さま (90 度以上傾ける) にして, 容器内の固体群を容器から落とす
図 4.2 に実験システムにおける, 外部固体群が上部固体群に変換されている様子を示す.
図 4.2 は調理容器上方向の存在確率フィールドと調理容器外部領域の境界面付近を拡大し

48

図 4.1: 実験の様子て示した図である. 図 4.2-1 中央の 1 塊の固体群は単体の外部固体群であり, 調理容器に向かって自由落下している. 図 4.2-2 では, 第 3.7.1 節に基づき, 外部固体群が存在確率フィールドに侵入して変換され, 上部固体群として表現されている. この場合は, 存在確率フィー
ルドに球の形状をした楕円球状変形超曲面が生成される. 図 4.2-3 以降の図は, 上部固体
群が, 変形超曲面により挙動している様子である. 図 4.2-3, 4.2-4 は塊であった外部固体群が散乱するかのように挙動しているが, これは, 変形曲面, または変形超曲面に基づいた表
現である. 以上のように, 外部固体群と上部固体群の変換が違和感なく行われている事が分かる.
図 4.3 に上部固体群が外部固体群に変換される様子を示す. 図 4.3 では, 固体群を調理容器の端に寄せて舞い上げてから, 再び調理容器で受け止める操作をしている. 図 4.3-1,
4.3-2 では, 上部固体群は楕円球状変形超曲面により挙動 (第 3.6.4 節参照) しているが. この時, 変形超曲面は調理容器左側 (図 4.3 における左方向) に定義された変換領域 (第 3.3.5
節参照) と交わっている. そのため, 交わった変換領域に含まれる存在確率フィールドの格子に上部固体群が移動し, 第 3.7.2 節に基づいた外部固体群への変換が行われている. 図
4.3-3 以降の図では, 順次変換が行われ, 舞い上がって落下する上部固体群の一部が, 外部固体群に変換されて調理容器外へ落下している様子がわかる.
図 4.4 に内部固体群と上部固体群の変換が行われている様子を示す. 図 4.4 では, 図 4.3と同様に, 容器内の固体群を舞いあげて再び容器で受け止める操作をしている. 図 4.4-1 における内部固体群は, 図 4.4-2 で鉛直上方向の力を受け上部固体群に変換される. これは,第 3.7.3 節に基づいた挙動である. 図 4.4-5 以降は, 舞い上がった固体群が落下に転じて,調理容器に堆積している様子を示した図である. これは, 第 3.6.7, 3.6.8, 3.7.4 節に基づいた挙動である. この時, 変形超曲面は重力に従って重力ベクトル方向に生成される. しかし, 第 3.6.7, 3.6.8 節に基づき, 超曲面生成点の軌跡が調理容器底面を構成する面と交差しないように超曲面が生成される. すると, 調理容器底部を構成する面の表面側に変形超曲49

図 4.2: 外部固体群から上部固体群への変換の様子

面が留まり, 調理容器底部を構成する面の表面に上部固体群が移動する. そして, これらの上部固体群は第 3.7.4 節に基づいて内部固体群に変換される. このように, はじめに調理
容器内にあった固体群がすべて上部固体群変換されて舞い上がり, 落ちてきた上部固体群が容器内固体群に再び変換されている様子がわかる.
図 4.5 に, 多角柱状変形超曲面が生成された結果に基づいた挙動の様子を示す. 図 4.5 では, 容器内にある固体群を, 容器を逆さまにして外に落とす操作をしている. 図 4.5-2 で調理容器の縁に寄っていた固体群は, 図 4.5-3 において, 上部固体群に変換され (第 3.7.3 節参照) , 重力方向に落下する. この場合, 楕円球状変形超曲面生成点は存在確率フィールドから離脱するように生成される. 超曲面生成点が存在確率フィールドから離脱した時に,第 3.6.11 節に基づいて, 存在確率フィールドの変換領域に多角柱状変形超曲面を生成する.
多角柱状変形超曲面が生成された後は, 上部固体群が変換領域に移動し, 図 4.5 -4, 4.5-5,4.5-6 のように外部固体群に変換されて調理容器外に落下している様子がわかる.

50

図 4.3: 上部固体群から外部固体群への変換の様子

51

図 4.4: 上部固体群と内部固体群の変換

52

図 4.5: 多角柱状変形超曲面に基づく固体群落下

53

4.2

処理速度についての評価

実験システムを用いて, 本提案モデルにおける, ハイトフィールドと存在確率フィール
ドの格子数と処理速度の関係について調べた. 実験中の操作を人間が行うと FPS はその時々によって大きく変化するため, あらかじめ操作データを記録しておき, その入力デー
タの元で各格子数を変更して実験を行った. 表 4.1 に各格子数における FPS の平均を示
す. なお, FPS は小数点以下を四捨五入した値を示している.
表 4.1: 処理速度についての実験結果
ハイトフィールドの格子数
2441(21 )
729(272 )1089(332 )
1521(392 )存在確率フィールドの格子数
312167(23 )24389(293 )42875(353 )
68921(413 )FPS(平均)
297
173
108
71

一般的に対話操作システムには 10 − 12FPS 以上の処理速度が必要だと言われている. 表
4.1 より, 本モデルはハイトフィールドと存在確率フィールドの格子数がそれぞれ 441(212 ),
12167(233 ) において平均 297FPS である. これは, 対話操作を行うには十分な処理速度であり, 他のシステムと併用する余地があると言える. また, 従来の固体群操作モデルと比べると, 加藤らが提案した砂を想定したモデル [12] の処理速度は 7 − 14FPS であり, 当研究室で提案した, 格子・粒子モデル [14] は 68FPS である. 以上より本提案モデルは, 従来モデルに比べて速い処理速度を出すことができるモデルであるといえる.

4.3

存在確率に基づく固体群表現の評価

本モデルにおける外部固体群と上部固体群はともに計算量の削減のため, 固体群同士の衝突は考慮していない. そのため, 外部固体群と上部固体群を区別せずに, 容器内部ではない空間においては全て, 相互干渉を考慮しない自由落下粒子 (無干渉粒子) で表現することも考えられる. そこで本節では, 上部領域の固体群を存在確率で表現する有効性を評価するため, 調理容器上部領域の固体群を無干渉粒子 (外部固体群に相当) で表現した場合と,存在確率に基づく (上部固体群に相当) 表現をした場合の挙動計算にかかる時間の比較を行った. 具体的には, 本モデルにおける, 同一量に相互変換できる外部固体群 (無干渉粒子
表現の固体郡) と上部固体群 (存在確立に基づく表現の固体郡) を用意し, それぞれの挙動
計算にかかる時間の平均を計測した. 無干渉粒子で表現した場合の挙動計算は• 保持する物理量の更新• 調理容器との接触判定の 2 つの処理にかかる時間と定義する. 存在確率に基づく表現をした場合の挙動計算は

54• 調理容器を考慮した変形超曲面の生成位置計算• 変形超曲面による存在確率の遷移計算の 2 つの処理にかかる時間と定義する. ハイトフィールドと存在確率フィールドの格子数
は, それぞれ 441, 12167 に設定した. この時, 格子間隔 l は約 1.54cm に相当し, 存在確率
フィールドの 1 格子に存在できる最大体積 Vmax は l3 ; 3.65cm3 である. また, 粒子体積
詳細度 D を 6 に設定する. 無干渉粒子 1 個の体積は, 上部固体群として描画する固体群粒
l3子のうち, 最小の体積である D; 0.6cm3 に設定する. 実験に用意する固体群量は, 茶碗 1杯の体積を 300cm3 , 炒飯 1 人前を茶碗 2 杯分と考え, 炒飯 1 人前を 600cm3 の固体群と設定して, 2 人前と 4 人前の 2 通りの実験を行う. なお, 用意する固体群量 (炒飯 2 人前, 4 人前) は, 無干渉粒子に換算すると約 2000 個 (2 人前), 約 4000 個 (4 人前) に相当する.
表 4.2 に上部領域の固体群を無干渉粒子で表現した場合と存在確率に基づく表現をした場合の挙動計算にかかった時間の平均を示す.
表 4.2: 挙動計算にかかった平均時間
固体群量 (無干渉粒子換算)

無干渉粒子の場合

存在確率の場合

2 人前 (2000 個)
4 人前 (4000 個)

約 3.4 × 10−4 sec
約 7.3 × 10−4 sec

約 7.2 × 10−4 sec
約 7.2 × 10−4 sec

表 4.2 より, 2 人前に相当する固体群量では, 存在確率に基づく表現の方が挙動計算に時間がかかるが, 4 人前の時は存在確率に基づく表現の方が計算時間が短い. 固体群は「炒飯」の他に, 「細かく刻んだ野菜の集まり」などの異なる食物, または, 調理以外のシステ
ムへの応用も考えられるので, 計算時間が扱う固体群量に依存しない存在確率に基づく表
現が有効であると言える. 一方, 本モデルでは外部固体群は無干渉粒子による表現であり,以上の実験結果の元では, 固体郡表現として無干渉粒子を用いる事の妥当性に疑問が生じる. しかし, 調理容器内に固体群が存在する場合は, 挙動計算時にすべての固体群を考慮するのに対して, 調理容器から上部領域を通して他の容器に固体群を移す場合は, 始めから調理容器内に存在した固体群全てが一斉に移動する場合に比べ, 一部の固体群が徐々に移動する場合が比較的多いと考えられる. そのため, 本提案モデルによる固体群の表現方
法では, 無干渉粒子で表現される固体群は全固体群量に対して一部の量に限られると考えられる. それ故, 上部領域の固体群を存在確率, 外部領域の固体群を無干渉粒子で表現する本提案モデルは有効であると言える.

4.4

固体群挙動の自然さについての評価

本提案モデルの固体群挙動について評価するため, 被験者 15 人に実験システムを体験してもらい, 簡単なアンケートを行った. ハイトフィールドと存在確率フィールドの格子数はそれぞれ, 441, 17986(23 × 23 × 34) に設定して実験を行った. 実験の手順は以下の通りに行った.

55

1. 被験者にシステムの概要と操作方法を説明し, 操作に慣れてもらうために, 数分間任意に操作してもらう.
2. 被験者に「舞い上がり」の操作を任意に行ってもらい, 舞い上がり挙動の自然さについて 7 段階評価のアンケートに答えてもらう.
3. 「舞い上がり」や「容器内での固体群挙動」を含めた, 全体的な固体群挙動 (先述の「こぼれ」挙動を除く) について 7 段階評価のアンケートに答えてもらう.
7 段階アンケートの評価の目安はいずれも,• 評価 1:全く自然に見えない• 評価 7:現実と同程度に見えるとした. 図 4.6 に舞い上がりについての評価結果, 図 4.7 に全体の固体群挙動についての評
価結果を示す.

図 4.6: 舞い上がりについての評価

図 4.6 より, 3 分の 2 の被験者から評価点 4 よりも高い評価が得られている. しかし, 評
価点 4 よりも低い評価を下した被験者も存在し, 本提案モデルで実現した上下動表現は,個人によっては不自然に感じられると考えられる. また, 評価点 4 よりも高い評価をした被験者からも「舞い上がった固体群の落ちる様子が不自然に感じられる」とのやや消極的な意見が得られている. これは, 上部固体群の挙動計算が現実の物理法則に則ったものではない事が原因であると考えられる. 通常舞い上がった固体群は, 固体群を構成する個々の固体に速度があり別々に自由落下をするが, 本提案モデルにおける上部固体群は, 固体
群全体をひとつの操作対象としているため, 1 つの塊になっているかのように表現される
時がある. また, 自由落下している固体群と比べると. 上部固体群の放物運動は極大点付

56

図 4.7: 全体的な固体群挙動についての評価

近に長く留まるように表現される. そのため, 自由落下している外部固体群と挙動に差が見られるようになり, 被験者には自然らしさが感じられなかった事が考えられる.
図 4.7 より, 固体群挙動の全体的な評価は 3 分の 2 以上の被験者が評価点 4 よりも高い評価をしている. これは, 従来の格子法モデルに比べて, 対話操作で上下動操作をすることができるようになった事が理由であると考えられる. 格子法モデルを提案した時に作成した実験システムでは, 本研究同様, 固体群と調理容器をそれぞれ「炒飯」,「フライパン」と想定していたが, 被験者の多くが調理容器内の固体群を「舞いあげる」ような操作を調理容器に行っていた. 格子法モデルは, 調理容器内の挙動のみ考慮していたので「舞い上がり」の操作はできなかった. 本提案モデルでは, 先述のように現実ほど自然な表現ではないが, 被験者が意図した方向に固体群を舞い上げることができるので, 被験者は, ある程度固体群を操作している臨場感を得ていたと考えられる.
以上より, 本提案モデルは, 被験者にある程度の固体群挙動の自然らしさを与える事ができると言える. しかし, 「舞い上がり」のような上下動については, やや消極的な意見が得られたので, 今後さらなる改良を加えていきたい.

57

第 5 章 むすび本研究では, 従来の格子法モデルでは考慮されていなかった「固体群を舞いあげて再び受け止める」, 「容器を逆さまにして容器内の固体群を落とす」というような調理容器外における固体群上下動を, 対話操作性を維持しながら行うことができる固体群操作モデルを提案した. 本モデルでは, 固体群上下動のうち, 「舞い上がり時に固体群が分布する空間」に関係する挙動を考慮するため, 調理容器周辺の空間を 3 つの領域に分割し, それぞれの領域に異なる固体群表現を定義した. そして, 異なる領域の固体群を組み合わせたり,状況に応じて固体群の変換を行うことにより, 調理容器外での上下動を表現した. また, 3つに分割した領域のうち, 調理容器上部領域の固体群の挙動計算に, 格子法モデルで用いた変形曲面を拡張して取り入れることにより, 高速な挙動計算を実現した. さらに, 調理
容器上部領域の固体群表現に, 格子法モデルで用いられていた確率的な固体群表現を取り入れる事により, 視覚的な固体群挙動の自然らしさの向上を図った.
本モデルを用いた実験システムでは, 従来モデル同様, 調理容器内の固体群を容器を傾けることにより操作できるだけでなく, 容器を上下方向に振る事で, 「固体群を舞いあげて落下したのを再び受け止める」というような固体群上下動の操作が可能である. また,
開口部が上を向いている容器を逆さまにすることで, 容器内に堆積していた固体群を外に落とす操作も可能である.
今後の課題点としては, 舞い上がり挙動の臨場感向上が挙げられる. 本提案モデルにより, 調理容器内に堆積している固体群を舞いあげる事が可能になったが, 挙動計算は厳密な物理法則に則っていない. そのため, 自由落下する固体群挙動と差が見られ, 臨場感演
出の妨げとなっている事が考えられる. 挙動の差を解消することで, さらなる臨場感向上が期待できる. また, 他には調理容器形状の拡張が挙げられる. 実験システムでは調理容器を「フライパン」, 固体群を「炒飯」と想定しているが, 現実では, 「炒飯」の舞い上がりは, 「中華鍋」のような, 調理容器を構成する面が平坦でないもので行う事が多いと考えられる. 本モデルを「中華鍋」などを想定した形状の調理容器に適応し, そのような調理容器で固体群操作を行うことが可能になれば, さらなる臨場感演出が期待できる. さらに, 現在当研究室で別途固体群操作モデルの一部として研究中である, 「こぼれ」挙動モ
デルの実装も挙げられる. 「こぼれ」挙動とは, 調理容器内に堆積している固体群があふれたり, 崩落して容器縁から自由落下する上下動の 1 つであり, 本モデルではこのような挙動は考慮していない. 「こぼれ」挙動モデルと本提案モデルを組み合わせる事により,現実における調理容器を用いた固体群操作のおおよそ大部分を実現することができると考えられる. 他には, 本提案モデルで新たに定義された固体群表現と「ヘラ」などの調理
器具間の干渉モデルを提案することも挙げられる.
本研究の最終目標は「ＶＲ調理学習システム」の構築である. そのため, 本モデルの他にも「食材を洗う」, 「食材を切る」というような他の調理工程のためのモデルを提案し,

58

本モデルと組み合わせることで, ＶＲ調理学習システムを完成させていく予定である.

59

謝辞
本研究を進めるにあたって, 日頃から多大な御尽力をいただき, 御指導を賜りました名
古屋工業大学, 舟橋健司 准教授, 伊藤宏隆 助教, 山本大介 助教 に心から感謝いたします.
また, 本研究に対して御討論, 御協力いただきました本学中村研究室の皆様ならびに中部大学 岩堀研究室の皆様に深く感謝致します.
最後に, 本研究に多大なご協力を頂いた舟橋研究室諸氏に心から感謝致します.

60

参考文献
[1] 舘暲 (2000) 「バーチャルリアリティの基礎 1 人工現実感の基礎」培風館[2] 瀬戸崎典夫, 森田裕介, 竹田仰: “ニーズ調査に基づいた多視点型 VR 教材の開発と授業実践”, 日本バーチャルリアリティ学会論文誌 Vol.11, No.4 pp.537-544, 2006.
[3] 向井信彦, 西村律郎, 小杉信: “手術シミュレータ向け出血表現の高速化手法”, 日本
バーチャルリアリティ学会論文誌 Vol.11, No.3 pp.371-376, 2006.
[4] 橋本宣慶, 加藤秀雄, 松井恭平, 石田洋子, 王亮: “シミュレータによる歯石除去の訓練
─シミュレータの構築と人口歯石除去による訓練効果の検討─”, 日本バーチャルリ
アリティ学会論文誌 Vol.11, No.4 pp.453-458, 2006.
[5] 宮脇健三郎, 佐野睦夫, 西口聡司, 池田克夫: “動作同期型調理ナビゲーションのためのユーザ適応型調理タスクモデル”, 情報処理学会論文誌, vol.50, No.4, pp.1299-1310,
2009.
[6] 椎尾一郎, 浜田玲子, 美馬のゆり: “コンピュータ強化キッチンとその応用”, コンピュー
タソフトウェア Vol.23, No.4, pp36-46, 2006.
[7] 株式会社スクウェア・エニックス クッキングママ,
http://www.square-enix.co.jp/cooking_mama_portal/[8] 加藤史洋, 三武裕玄, 長谷川晶一: “体験型料理シミュレータ”, 日本バーチャルリアリ
ティ学会第 15 回大会講演論文集, 2D2-2(DVD-ROM), 2010.
[9] 舟橋健司, 小栗進一郎: “家庭での利用を目的とした VR 調理学習システムのための固体群操作モデルの検討”, 日本バーチャルリアリティ学会第 13 回大会講演論文集,
pp.171-172 (DVD-ROM), 2008.
[10] 森井敦士, 森愛絵, 山本大介, 舟橋健司: “VR 調理学習システムのための剛体による固体群操作モデル”, 日本バーチャルリアリティ学会第 15 回大会講演論文集, 2C22(DVD-ROM), 2010.
[11] Stora D., Agliati P.O., Cani M.P., Neyret F., and Gascuel, J.D: “Animating lava
ﬂows”, In: Proc. of the Graphics Interface, pp.203-210, 1999.
[12] Onoue, K., and Nishita, T: “Virtual Sandbox”, In: Proc. of the 11th Paciﬁc Graphics,
pp.252-259, 2003.

61[13] Amman C., Bloom D., Cohen J. M., Courte J., Flores L., Hasegawa S., Kalaitzidis
N., Tornberg T., Treweek L., Winter B., and Yang C:“The Birth of Sandman”, In:
SIGGRAPH 2007 sketches, 2007.
[14] Morii, A., Yamamoto, D., Funahashi, K: “Interactive Manipulation Model of Groupof Individual Bodies for VR Cooking System”, In: Proc. of the ICEC2010, pp484-486,
2010.
[15] 任天堂株式会社 Wii,
http://www.nintendo.co.jp/wii/index.html

62

発表論文リスト
1. 森井敦士, 山本大介, 舟橋健司: “VR 調理学習システムのための格子・粒子法による固体群操作モデル”, 日本バーチャルリアリティ学会第 14 回大会講演論文集, 1D4-1(DVD-ROM), 2009.
2. 森井敦士, 森愛絵, 山本大介, 舟橋健司: “VR 調理学習システムのための剛体による固体群操作モデル”, 日本バーチャルリアリティ学会第 15 回大会講演論文集, 2C2-2(DVD-ROM), 2010.
3. Morii, A., Yamamoto, D., Funahashi, K: “Interactive Manipulation Model of Groupof Individual Bodies for VR Cooking System”, In: Proc. of the ICEC2010, pp484486, 2010.