平成 20 年度

卒業論文

VR 調理学習システムのための粒子法を取り入れた
固体群操作モデルの改良

指導教員
舟橋健司 准教授

名古屋工業大学

工学部

情報工学科
平成 17 年度入学 17115150 番
森井 敦士

i

目次
1

はじめに

2

固体群操作モデルと粒子法について
3
2.1 従来の固体群操作モデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1 固体群操作モデルの構想 . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 固体群の表現方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.3 変形曲面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.4 各種補正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 粒子ベース剛体シミュレーション . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1 剛体が持つ変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2 各変数の関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.3 剛体の表現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.4 衝突検知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.5 衝突応答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3

提案する新たな固体群操作モデル
3.1 新たな固体群操作モデルの概要 . . . . . . . . . . . . . . . . . . . . . . . .
3.2 本手法での固体群表現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 新たな提案モデルの全体像 . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 合成用格子への代入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5 表面粒子の更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 格子表現から粒子表現への変換 . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1 変換の実行条件と変換位置 . . . . . . . . . . . . . . . . . . . . . . .
3.6.2 格子表現から粒子表現への変換 . . . . . . . . . . . . . . . . . . . .
3.7 粒子表現による固体群の位置の更新 . . . . . . . . . . . . . . . . . . . . . .
3.8 粒子表現から格子表現への変換 . . . . . . . . . . . . . . . . . . . . . . . .
3.8.1 変換条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8.2 変換時の格子表現への加算 . . . . . . . . . . . . . . . . . . . . . . .
3.8.3 付与番号について . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9 空間分割手法への配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.10 粒子表現による固体群の合成用格子への加算 . . . . . . . . . . . . . . . . .

14
14
15
16
17
17
19
19
19
20
21
21
22
22
23
23

4

実験
4.1 入力装置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 入力装置からの取得値とモデルの結合 . . . . . . . . . . . . . . . .
4.2 実験システム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 処理速度についての実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4 挙動の自然さについての実験 . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1 結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25
25
25
27
29
29
30
30

1

ii

4.4.2
5

むすび

考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

32

謝辞

33

参考文献

34

1

1

はじめに

近年, バーチャルリアリティ技術の発展に伴い, それを用いた訓練用システムが開発されている. バーチャルリアリティとは, 現実にある物体や環境を, 実際のものとは違った形
で, ユーザーの感覚への働きかけや操作などによって, 本質的には何の違いもないものを表現する技術や体系のことである.
バーチャルリアリティの応用は多岐に渡るが, 小学校での理科の教材 [1] や手術に関するシミュレータ [2] [3] といった教育, 訓練を目的としたシミュレータが開発されている. これらのシステムを活用することは, 実際に現実で訓練することに比べて, 失敗による損害の予防, 訓練の効率化, 指導教員の人件費を削減できるといった利点がある. これらの研究は医療などの一部の分野で実用化に向けて進んでいる. しかし, 装置が大規模, 高価になり, 設置場所が限られてしまい, 広く一般家庭に普及するまでには至っていない. 他に挙げられる理由としては一般向けを想定したコンテンツが現状では不足しているという面もある.
また, 近年 e-learning 用のコンテンツが注目を浴びるようになり, 任天堂株式会社から発売されている「Nintendo DS」[4] のソフトである「脳トレ」を筆頭に, 学習要素をとりこんだゲームソフトが話題を呼んだ. これらのハードウェアは広く一般家庭に普及しているが, 入出力が乏しく, ＶＲシステムを構築することができない. 一方, 同社から発売されている「Wii」[4] は入力に「Wii リモコン」と呼ばれる安価なハードウェアを用いており,体感的な操作を実現している. 例としては, 株式会社タイトーから発売されている「クッキングママ」[5] が挙げられる. このゲームでは楽しみながら料理を学習することが目的に作られている.
当研究室では, 一般家庭を対象としたコンテンツの 1 つとして料理をとりあげ, VR 調理
学習システム「バーチャルお料理教室」の開発を行っている [6]. また, 本システムのための固体群操作モデルの開発を行っている. なお, 本研究では「溶岩や砂などの複数の個体が集まって 1 つのものであるかのように振る舞う物」を固体群と称する.
この, 「バーチャルお料理教室」とは, 料理の手順を学習するためのものである. 最終的には, 調理を行う台所全体を用意し, 食材の用意から, 「食材の切断」といった加工, 「炒める」などの調理, 盛り付けといった料理における一連の手順を学習できるコンテンツの作成を目指している. そのために, 学習中に直接的もしくは間接的に操作できるものはす
べて挙動をリアルタイムに表現できる必要がある.
文献 [6] により提案された手法では, 固体群を調理器具内に存在する食物（例:炒飯）として想定しているが, 固体群の挙動を個々の動きを計算して求めるのではなく, 固体群全体を一つの対象として扱うことによって, 対話操作を実現している. しかし, この手法は開発途中であり, 固体群の挙動が調理器具内に限定されている. また, 調理器具からのこぼれや舞い上がりといった, 料理において調理器具を扱う時に起こる挙動が実装されていない.
そこで本研究では, この固体群操作モデルを田中らが提案している粒子ベース剛体シ
ミュレーション [7] を利用して, 従来の固体群操作モデルでは表現が実装されていなかった, こぼれなどの挙動を実装し, また, 固体群の挙動の過程を表現することによって, より
自然な, かつ対話操作が可能な固体群の表現を図る. 田中らが提案している, 粒子ベース
剛体シミュレーションは, 剛体をポリゴンで表現したシミュレーションよりも高速な計算2

手法であるが, 計算コストが高く, 対話操作向けではない. しかし, 提案する本手法では使用する粒子の数を極力抑えることにより, 対話操作を可能にしている. 文献 [6] と同様に,料理の手順を体を動かして学習することを主目的とした VR 技術による e-learning システ
ムの構築を目指すので, 固体群の動きは, 体験者が「自然である」と感じられる程度の挙動を表現することを目的とする. また, 一般家庭で導入できる安価な VR 入力装置として市販のゲームコントローラを利用している.
第 2 章において, 固体群操作モデルと粒子ベース剛体シミュレーションの概略を説明す
る. また第 3 章において, 固体群操作モデルに粒子ベース剛体シミュレーションを取り入れた新固体群操作モデルについて説明する.
第 4 章については, 実験システムについて, または実証実験, 提案手法の有用性について
述べる.

3

固体群操作モデルと粒子法について

2

本章では, 当研究室において提案された従来の固体群操作モデル, また田中らによって提案された粒子ベース剛体シミュレーションの概要を説明する. 詳しくは文献 [6] [7] を参照されたい.
従来の固体群操作モデルは固体群を 1 つの操作対象として定め, 計算時間を削減することにより, 対話操作を実現したモデルである. この手法では, 開発途中であるため固体群のの動きが調理器具内に限定されている. しかし, 使用者に操作している物が食物片であるという一定の認識をさせることを可能にしている. 一方, 粒子ベース剛体シミュレーショ
ンでは, 物体をすべて均一な大きさの粒子の集合として定め, 粒子同士の衝突判定を行う
ことによって, 仮想物体の物理シミュレーションを行っている.

2.1

従来の固体群操作モデル

本節では, 当研究室が提案した従来の固体群操作モデル [6] の概要について説明する.

2.1.1

固体群操作モデルの構想

このモデルでは, 固体群を調理器具内の食材片として想定している (例えばフライパン
内の炒飯). これらの固体群が容器が傾いた際に受ける力は, 直線であらわすことができるが, 固体それぞれが互いに影響する力を考慮すると, それらの力すべてについて計算しなくてはならず, 結果, 計算量が多くなり, 対話操作に向かなくなってしまう. そこでこのモ
デルでは, 固体個々の単位で力の計算をせずに, 固体群全体をひとつとして捉えて, 全体にかかる力による変化を曲面で近似表現している. 図 1 に概念を, 容器内に存在する固体群の断面図を例にして示す.

図 1: 変形曲面による固体群変形の過程°
1 この状態では固体郡は容器の底面に沿って下に移動すべきである.
°
2 よって黒い部分付近に曲面を発生させて固体郡に加算する.
°
3 加算によって体積が増加するので全体の高さを減少させ, 元の体積に戻す.
°
4 結果, 固体郡が以前よりも下の部分に移動する.

4

図 1 における °2 の, 黒い部分である曲面を, 以降, 変形曲面と呼ぶ. 実際に発生させる曲
面は, 形状の変形が容易な半楕円とする. 容器を傾けたとき, 定義する変形曲面は半楕円が容器の底面に均一に並べられ図 2 のように半楕円柱となる.

図 2: 調理器具を傾けたときに発生する変形曲面

2.1.2

固体群の表現方法

固体群は xz 平面に格子状になるよう配置された頂点群を用いて, その高さの値を更新することによって表現する. よって各点の高さ y は各座標 x, z を用いて

y = f (x, z)(1)のように表される. また, 格子の間隔を調整することで, 処理速度と精度を調整することできる.
各点の高さは, 一定の体積を保つために補正される. 図 2 のように, 変形曲面により全体の挙動を決定した後の高さを y とすると, 補正後の高さ y 0 は

y0 =

v
y
V

(2)

となる. なお, 挙動計算前の固体群全体の体積 v, 挙動決定後の全体の体積 V とする.
また, 図 3 のように, xz 平面で容器の向きと x 軸がなす角度 α, xz 面と容器がなす角度
β を設定し, 容器の姿勢を定義する.

5

図 3: 容器の姿勢を定義する α, β について

2.1.3

変形曲面

変形曲面は半楕円柱であるため, 変形曲面を定義する変数は以下のようになる.

• 底面の楕円柱の長半径• 短半径• 3 次元空間上での位置• 3 次元空間上での向き• 楕円柱の高さ
なお, 容器の底面に平行な半径を長半径, 垂直な半径を短半径とする.
まず, 楕円柱の 3 次元空間上での向きであるが, これは固体郡がすべる方向, すなわち容器が傾いている方向と同じように設定する.
楕円柱の高さについては, 固体郡が受ける力を容器の全体にかける必要があるため, 容
器の幅 R の 2 倍, 2R に設定する.
また, 3 次元空間上での位置については, 固体郡が重心に集まっていると仮定し, その重心から, 楕円柱の向きに平行移動させた位置に設定する. 平行移動の距離は, 後述する楕円柱の長半径 a の距離に比例するように設定する.
固体郡の重心 G = (xG , zG ) は容器内に存在する固体郡の分布と格子座標によって求められ, 固体郡全体の体積を V , xz 平面の (xi , zi ) に位置する格子の高さを f (xi , zi ), 固体郡

6が存在する ( f (x, z) > 0 である ) 頂点の総数を N とすると,
NN
f (xi , zi ) ∑f (xi , zi )1 ∑(xG , zG ) = ( xi
,
zi
)
N
V
V

(3)

とあらわされる.
また, 容器が傾いている方向 S とは上述の α によってあらわされ,S = (cos(α), sin(α))

(4)

となる.
よって, 楕円柱の発生位置 D は, 容器が傾いている方向 S を使ってD = G + Sa

(5)とあらわされる.
a は楕円柱の長半径の長さを表し, 固体群の移動距離に関係する変数である. a = 0 な
らば, 変形曲線柱は存在しなくなり, 固体群は移動しない. a を設定するには, 固体群の挙動を考慮しなければならない. 固体群は剛体とは違い, 図 4 の様に容器の端に達しても, 移動し続ける. よって固体群の大部分が容器の端まで移動し終えるまで, a > 0 にするべきである.

図 4: 固体群の容器の端での動き
そこで, a は容器の端に接している固体群の量に対して減少するように以下の様に設定
する.
(
∑
∑
T − n yi (T ≥ n yi のとき, T : 定数)
(6)
a=
∑
0
(T < n yi のとき)

∑nyi は容器の端に接している格子が持つ高さの値の総和であり, n は容器の端に接している高さが 0 以上の格子の数である.
a は固体群が容器の側面から受ける垂直効力を考慮に入れて定義されたものであるが,容器の姿勢や固体群の質量による影響が少ない. よってこれらを補うために短半径 b は以下のように設定する.
√({mgsin(β) − (mgcos(β)(1 − µ0 ))} V ∗ T (mgsin(β) ≥ µmgcos(β) のとき, T : 定数)b=0(mgsin(β) < µmgcos(β) のとき)
(7)

7

なお, 固体群全体の質量を m, 固体群全体の体積を V , 重力加速度を g, 静止摩擦係数を µ,
動摩擦係数を µ0 とする.
これらの変数により, 楕円柱 (変形曲面) を定義して固体群に加算する. 変形曲面による加算は, 対象の格子が生成された楕円柱の長半径以内にあるかどうかの判断で行われる.
式 5 より楕円柱の中心軸は, xz 平面格子の中心を原点としたとき,

sin(α)x − cos(α)y − sin(α)(xG + acos(α)) + cos(α)(zG + asin(α)) = 0(8)のようになる.A = sin(α), B = −cos(α) , C = −sin(α)(xG + acos(α)) + cos(α)(zG +asin(α)) とすると xz 平面のある点 P (xp , zp ) と中心軸との距離 L は以下のようにして求められる.
| Axp + Bzp + C |√L==| Axp + Bzp + C |(9)A2 + B 2
点Ｐが楕円柱の中に存在するとき, 楕円柱による, 高さの変化 Y は√LY =  1 − ( )2  ∗ ba(10)となり, 以前の高さに Y を加算した後, 体積補正をした値が点 P における高さとなる.

2.1.4

各種補正

固体郡は楕円柱の発生により移動するが, この手法だと, 図 5 のように, 容器が一方に傾いている状態から反対方向に急に傾けた場合, 固体郡が反対方向の離れた場所に, 中央を通らず突如として現れてしまう「ワープ」現象がおこる. この現象を防ぐため, 固体郡が端から端へ移動する際に, 各格子に微小乱数のノイズを加える. これによって, 固体郡が現れない領域の補間を実現している.
ノイズの発生条件は, 「固体群が容器の端から端に移動している」ではなく, 「傾いている容器の, その容器の中の上の方に固体群が存在する」という判断が容易な条件に設定している. 具体的な手順としては, 図 6 のように, 容器の中央を通り, 容器の傾きの向きに平行な直線を走査線として用意する. その走査線を容器の中央から楕円柱が生成される方
向とは逆方向に辿ってゆき, 直線上に存在する固体群の体積を調べる. そして, その体積の合計値が閾値よりも大きいければノイズによる補間を実行する.
また, 各固体の最少サイズを表現するために, 格子がもつ高さの値が一定未満の場合, その高さの値をを隣の格子点に加えることにより, 固体群の挙動らしさを表現している.

8

図 5: 固体郡が離れた場所に現れてしまう現象

2.2

粒子ベース剛体シミュレーション

本節では田中らが提案した粒子ベース剛体シミュレーション [7][8] の概要について説明する. この粒子法剛体シミュレーションはポリゴンベースの衝突検出手法に比べ計算コストが低いが, 対話操作が行えるほどには計算コストは低くない. よって本手法では使用する粒子数を極力抑えて, 対話操作を実現する.

2.2.1

剛体が持つ変数

剛体が持つ変数は次の通りである.

M : 質量x : 重心座標v : 並進速度
ω : 角速度P : 運動量L : 角運動量
I : 慣性テンソル q : クォータニオン R : 回転行列
このうち, 並進速度 v は運動量 P , 角速度 ω は角運動量 L, 回転行列 R と慣性テンソル Iの従属変数であるため, 剛体を定義するのに必要な変数は質量 M , 運動量 P , 角運動量 L,
クォータニオン q の計 4 つとなる.

2.2.2

各変数の関係

運動量 P と並進速度 v, 角運動量 L と角速度 ω はそれぞれ以下の関係にある.

v=

P
M

ω = I −1 L
I −1 は慣性テンソル I の逆行列である.

(11)
(12)

9

図 6: 固体群の体積を調べるための走査線

また, 運動量 P , 角運動量 L は外力 F を受けた際に変化が生じる. 外力 F を受けた作用
点の剛体重心からの相対位置ベクトルを rf とすると, それぞれの変化量 dP
, dL
は,
dt
dt

dP
=F
dt

(13)

dL
=τ
dt
となる. なお, τ は外力により働くトルクを表し,(14)

τ = rf × F(15)のように外力との外積によって求められる.
回転行列 R やクォータニオン q は剛体の姿勢を表す変数であり, 回転行列 R は 3 行 3 列の行列を用いて,rxx rxy rxz



(16)
R=
 ryx ryy ryz 
rzx rzy rzzのように表される.
ここで, 回転行列 R の初期状態 R0 を




1 0 0



R0 =  0 1 0 

0 0 1

(17)

10

とする. また, 初期状態における, ある剛体の重心からの相対位置ベクトルが p0 である点
P の, ある時刻 t における, 剛体からの相対位置ベクトル pt はその時刻の回転行列 Rt を用
いて以下のように求められる.
p t = R t p0
(18)
一方, クォータニオンはq = (s, vx , vy , vz )(19)のように 4 成分からなり, 初期状態を

q = (1, 0, 0, 0)(20)とする. クォータニオンは回転行列同様, 剛体の姿勢を表すための変数である.
剛体がある規格化された回転軸 A = (Ax , Ay , Az )(| A |= 1) の回りに θ だけ回転したとすると, クォータニオンの変化量 dq は以下のようになる.

θθθθdq = (cos( ), Ax sin( ), Ay sin( ), Az sin( ))
(21)
2
2
2
2
また, 更新後のクォータニオン q n+1 は更新前の q n を用いて以下のように表される.
q n+1 = dqq n(22)

また, A と θ は角速度 ω とタイムステップ ∆t を用いて, 以下のように求められる.
ω
A=
|ω|

θ =| ω | ∆t

(23)
(24)

クォータオンは更新後に規格化することによって, 誤差が蓄積しないという点で回転行列よりも優れている. 回転行列 R はクォータニオン q から求めることができ, q = (s, vx , vy , vz )とすると
1 − 2vy2 − 2vz2 2vx vy − 2svz 2vx vz + 2svy


2
2
R=
(25)
2vy vz − 2svx  2vx vy + 2svz 1 − 2vx − 2vz
2
22vx vz − 2svy 2vy vz + 2svx 1 − 2vx − 2vyのように求められる.
慣性テンソルは剛体の回転のしにくさを表し, 剛体内に存在する各質点 i を用いて求められる. 質点 i の質量を mi , 剛体重心からの相対位置ベクトルを




rix



ri =  riy 

riz
とすると,



(26)



2
−rix riy −rix riz
r2 + riz
∑

 iy
2
2

I=
mi  −riy rix rix−riy riz 
+ riz

i
2
2
+ riy
−riz rix −riz riy rix(27)のように求められる. 初期状態の慣性テンソルを I(0) とすると, 時刻 t における慣性テンソルの逆行列 I(t)−1 は同時刻の回転行列 R(t), その転置行列 R(t)T を用いて以下のように表せる.
I(t)−1 = R(t)I(0)−1 R(t)T
(28)

11

2.2.3

剛体の表現

粒子ベース剛体シミュレーションでは, 剛体はすべて半径が同一の粒子の集合として定義される. 図 7 のように, 粒子の大きさによって同じ剛体を構成する総粒子数が異なってくる. 粒子数が少なければ, データ量が少なくなり, 精度が悪くなる. 反対に粒子数が多ければ, データ量が多くなり, 精度が良くなる. 粒子の大きさは任意なので, 使用目的に応じて半径と総粒子数を変更することができる.

図 7: 立方体における粒子の配置の例

2.2.4

衝突検知

剛体について衝突検知を行うときは, 各剛体に属する粒子ごとに距離を計算し, 半径がr である, 2 つの粒子の距離 d が• d > 2r のとき 衝突していない• d ≤ 2r のとき 衝突しているのように判断する.
存在する粒子ごとの距離を計算するのでは計算量が O(N 2 ) になってしまうので, 空間分割手法を用いて, 計算量を O(N ) に削減している. 具体的には, 剛体が存在する空間を, 一辺が粒子の直径と同じ格子で分割する. そして, 粒子の挙動計算後に, 粒子がそれぞれどの格子に属するのかを毎回判定する. ある分割された, 格子に属する粒子について, 衝突検知を行うときは, その格子に隣り合った格子に属する粒子についてのみ距離を計算して判定を行う.
図 8 に二次元座標の場合の空間分割手法の例を示す. 粒子はそれぞれ中心座標で, どの格子に属するのかが決定される. 図 8 の場合は, 格子 (i, j) に属する粒子についてはその近傍に属する計 4 つの粒子について衝突検知を行う.

12

図 8: 二次元座標の空間分割手法の例

2.2.5

衝突応答

衝突応答については, 本手法ではペナルティ法を使用している. ペナルティ法とは, 物体のめり込みを許容し, そのめり込み量に応じた反発力を, 各物体に加える方法である. ペナ
ルティ法は反発力のみ考慮しているが, 本手法では摩擦力も考慮している. 各粒子ごとに相互作用を計算することになるので, 本手法は DEM[9] とほぼ同じ手法であるといえる.
衝突によって各粒子に与えられる力 F は以下のように反発力 Fn , 摩擦力 Fs , 減衰力のFd の 3 つに分けられる.
F = Fn + Fs + Fd
(29)
以下は衝突している 2 つの粒子を i, j とし, 衝突応答によって各粒子に与えられる力 Fを [F ]i , [F ]j のように表す.
反発力は, 粒子のめり込み量 p と, ばね定数 kn に比例する. 三次元空間における位置が−xiとするとxi , xj である粒子 i, j の衝突時の法線方向を nij = |xxjj −xi|[Fn ]i = −kn pnij

(30)

13

[Fn ]j = −[Fn ]i(31)のように表される.
以下に摩擦力について説明する.
i, j が初めて衝突したときのそれぞれの衝突点を ci (0), cj (0) とする. また, t 時間後での衝突点を ci (t), cj (t) とする. 摩擦力は衝突点の距離に比例する. 現時刻での衝突点の距離
cij (t) はcij (t) = ci (t) − cj (t)(32)
で求められる. なお, i, j 初めて衝突した時 (t = 0) は, cij (0) = 0 である. 静止摩擦力と動摩擦力を考慮するために cij (t) をせん断方向成分 [cij (t)]s と法線方向成分 [cij (t)]n に分割す
る. 摩擦力は, せん断方向のばね定数を ks とすると, 以下のように表せる.

[Fs ]i = ks [cij (t)]s(33)[Fs ]j = −[Fs ]i(34)

摩擦力が最大静止摩擦力よりも大きいとき, すなわち | Fs |> µs | Fn | のとき, (µs :粒子間静止摩擦係数) 代わりに以下のように動摩擦力が働く.

[Fs ]i = µk | F | ns

(35)

[Fs ]j = −[Fs ]i(36)

なお, µk は粒子間動摩擦係数, ns は以下のようにせん断方向の単位ベクトルを表している.

ns =[cij (t)]s| [cij (t)]s |(37)

減衰力は粒子 i, j の衝突点でのそれぞれの速度 ui , uj によって決まる. 減衰係数を η とすると減衰力 Fd は以下のように表せる.

[Fd ]i = η(uj − ui )(38)

[Fd ]j = −[Fd ]i

(39)

14

3

提案する新たな固体群操作モデル

3.1

新たな固体群操作モデルの概要

当研究室において提案された従来の固体群操作モデルは計算コストをかけずに固体群を操作することを可能にしている. しかし, 固体群の挙動は容器内に限定されており, こぼれ, 舞い上がり, などといった挙動は未実装である. また, ノイズによる補間で, 固体群の端から端までの移動を補間しているが, この操作は調理器具内全体にランダムに固体群が散ってしまい, 不自然に見えてしまう. 固体群が器具内を自然に移動しているようにする
ためには, ノイズによる補間だけでは不十分である. よって, より自然的に固体群が移動している過程を表現する手法が必要である.
本論文で提案する改良手法ではノイズによる補間が行われる時に, 従来の固体群操作モデルにおいて, 平面格子の高さで表現がなされている固体群の一部を粒子による表現に変換する. 粒子によって表現された固体群は,「固体群が塊になって粒子になったもの」であり, それぞれ固有に変換された時の体積を持たせる.
粒子によって表現された固体群は, 平面格子によって表現された固体群から独立した存在であり, 容器内での挙動を別に計算する. そして, 粒子が持つ体積分の固体群を, 平面格子で表現された固体群に加算して表示することによって, 固体群が容器の中を移動する過程を表現する. さらに, それらの粒子を一定の条件で容器の外に出るように設定し, その粒子が持つ体積と同じ体積を, 平面格子で表現された固体群から減らすことにより, こぼれによる体積の減少を表現する.
以後, 従来の固体群操作モデルにおいて, 平面格子の高さによって表現されている固体
群を「格子表現による固体群」, 本研究で新たに提案する, 粒子によって表現される固体群
を「粒子表現による固体群」と呼ぶ.

15

3.2

本手法での固体群表現

従来の固体群操作モデルの表現手法は, 平面格子で固体群の表現を行っていたが, 本手法ではそれに加えて, 粒子表現による固体群の表現を行う. 具体的な方法としては 3.10 にて後述するが, 従来のモデルにおける平面格子に, 粒子表現による固体群がもつ体積に応じて, 高さの値を加算する. 固体群を描画するときは, この加算結果を用いることによって,固体群の挙動を表現する.
図 9 に本手法の固体群表現の概要を示す. 粒子表現による固体群の移動は変形曲面の他に, 格子表現による固体群との衝突応答によって決定する. そして描画する際は, 格子表現
による固体群に粒子表現による固体群を加算して描画を行う.

図 9: 固体群表現の概要

16

3.3

新たな提案モデルの全体像

新たな提案モデルは図 10 のように動作する. はじめに調理器具に対する操作の取得を行い, その情報に従って固体群を表現する. これらの処理を各フレームごとに行っている. 以降はこれらの動作について説明する. なお,「変形曲面による固体群の変形」と「ノイズ補間条件の判断」は従来のモデルと変更点はないので, 説明は省略する.

図 10: 提案システムの動作手順

17

3.4

合成用格子への代入

格子表現による固体群と粒子表現による固体群を加算するための合成用格子を用意す
る. 合成用格子は格子表現による固体群が使用している平面格子と同一のものにする. この格子は, 従来のモデルで使用されている格子とは独立した存在である. 従来のモデルで使用されている格子の内容が代入されるが, 合成用格子の内容が従来のモデルで使用されている平面格子へ代入されることはない.
合成用格子は描画に用いられる他に, 粒子表現による固体群を発生させる際に, 固体群の分布を調べるために用いられる.
粒子表現による固体群が存在しない場合は, 従来のモデルで使用されている格子と同一の値が合成用格子に代入される. また, 粒子表現による固体群が直前のフレームで存在した
場合は, 直前のフレームに存在した, 粒子表現による固体群の体積の分だけ, 体積が減少されて合成用格子に代入される.
直前フレームで存在した, 変換粒子の体積の和を v 0 , 従来のモデルで使用されている格子に存在する固体群の総体積を V , 格子表現による固体群での位置 (x, z) における格子での固体群の高さを f (x, z) とすると, 合成用格子での位置 (x0 , z 0 ) での固体群の高さ f 0 (x0 , z 0 )は次のように表せる.
(V − v 0 )f 0 (x0 , z 0 ) =f (x, z)
(40)
V

3.5

表面粒子の更新

本論文で提案する改良手法では, 粒子表現による固体群を容器内で自由に動かすことにより, 固体群の移動の過程やこぼれを表現している. よって, 粒子表現による固体群を発生させる前に, 容器内に衝突のための粒子を配置する必要がある. これらの粒子は, 粒子表現
による固体群とは違って, 体積を持たないので, 固体群表現には一切影響を与えない. これ
らの粒子は, 合成用格子に存在する固体群の高さに合わせて配置する. 以後これらの粒子を表面粒子と呼ぶことにする.
表面粒子は, 容器内全体わたって配置され, 合成用格子における座標 (xi , zi ) に位置する
表面粒子 i は, 合成用格子の座標 (xi , zi ) における固体群の高さ f 0 (xi , zi ) と等しい高さに配置される. また, 合成用格子において高さが 0 である, 位置 (xj , zj ) に位置する表面粒子は容器の底に合わせて配置される.
図 11 に表面粒子の配置例を示す. 図 11 の左側のように, 容器の中央に固体群が存在している場合は, 図 11 の右側のように配置される. 容器の中央に位置する表面粒子は固体群に沿う形に配置されており, 固体群が存在しない位置にある粒子は, 容器の底に合わせて配置されている.

18

図 11: 格子表現による固体群に沿って配置される表面粒子
また, 配置される表面粒子の大きさや数は, 格子表現による固体群の平面格子の間隔に依存し, 平面格子が細かいほど粒子は小さくなり, 総数は多くなる. 図 12 の左側は格子間隔が大きく, 図 12 の右側は格子間隔がより小さい場合の配置例である.

図 12: 平面格子の間隔による表面粒子の大きさの違い

19

3.6

格子表現から粒子表現への変換

3.1 に述べたように, 従来の固体群操作モデルでのノイズによる補間だけでは, 全体に固体群が散ってしまい不自然な挙動となってしまう. よって, 本手法ではノイズによる補間が行われる時に, 格子表現による固体群の一部を粒子表現による固体群へ変換し, 連続的に移動させることで移動の過程を表現する.
3.6.1

変換の実行条件と変換位置

格子表現による固体群から粒子表現による固体群への変換は, ノイズによる補間が実行される時に行う. このとき, 合成用格子を横断する走査線を用意する. この走査線は, 従来のモデルで使用されている格子に存在する固体群の重心を通り, 変形曲面 (半楕円柱)の中心軸に平行な直線である. 固体群の重心を (xG , zG ), 変形曲面の中心軸となる直線をAx + Bz + C = 0 とすると捜査線の式は次のように表せる.

AA
x + z + (−zG − xG ) = 0
B
B

(41)

粒子表現による固体群の発生位置は, この走査線と合成用格子の中心を原点とする半径R(容器の半径) の円と交わってできる線分, また, 格子表現による固体群を粒子表現による固体群に変換する際に用いる調査範囲 r(以降変換半径と呼ぶ. 詳しくは後述.) によって決定する. まず, 円と走査線が交わってできた線分に対して, 変換範囲がいくつ入るかを計算する. その後, 直線と円の交点をもとにして, 線分を内分する点を求めて, それぞれの内分点を粒子の変換位置とする.
円と走査線が交わってできた線分の長さを L, L を変換半径の直径 2r で割った商の小数L
点以下を切り捨てた整数を I = b 2r
c とすると, 粒子表現による固体群の発生地点は, 図 13のように円と走査線が交わってできた線分を 1 : I − 1, 2 : I − 2, 3 : I − 3· · · と内分する点
となる.

3.6.2

格子表現から粒子表現への変換

変換位置が決定した後は, 変換位置から変換半径 r 以内に位置する格子を求め, それらが持つ高さを調べる. その後, 各格子の変換位置からの距離に応じて, 同座標の合成用格子から高さの値を減らし, 粒子を発生させる.
粒子表現による固体群の発生地点から対象格子 i までの距離を di , 変換する最大の体積を Vmax , 変換半径以内にある格子の数を n とすると, 合成用格子の各格子から減少される
高さの値 Mi は以下のように求められる.

d2
Vmax
1
Mi = √ exp(− i ) ∗
2
n
2π

(42)

なお, Mi が対象格子 i の高さを超過していた場合は, 高さ分だけ変換し, その後, 高さを 0に設定する.
3.6.1 において, 変換条件を述べたが, 発生時の状況に従い, 変換された粒子表現による
固体群に番号 (以降この番号を付与番号と呼ぶ) をつける. 具体的には, 直前のフレームで

20

図 13: 粒子表現による固体群の変換位置

ノイズ補間が行われなかった時は, 粒子に 0 の番号を付与し, 以降, 連続してノイズ補間が行われるたびに 1, 2, · · · と番号を増やしていく. これは後述の 3.8 において, 粒子表現による固体群を格子表現による固体群に戻す際に使われる. 付与番号はについては 3.8 にて説
明をする.

3.7

粒子表現による固体群の位置の更新

本手法における粒子表現による固体群は, 固体群と衝突反応する粒子の性質を併せ持つものである. 従来の固体群操作モデルでは, 固体群の挙動は変形曲面に依存している. しかし, 粒子表現による固体群の挙動は, 変形曲面に加えて, 格子表現による固体群の影響を受けるようにする. 格子表現による固体群の, 粒子表現による固体群に対する干渉方法として, 粒子法による衝突応答を用いる. 具体的には, 合成用格子に存在する固体群の表面に衝突用の粒子を配置する. 粒子表現による固体群は基本的に, 容器内のみを移動するように設定するが, 一定条件を満たせば容器の外に出るようにする. このとき, 粒子表現による固体群が持つ体積の固体群が「容器からこぼれた」とし, 容器内の固体群の体積を減少さ
せる.

21

容器の半径を R, 現在のフレームの衝突応答の結果, 粒子が持つことになった速度を Hn ,前フレームにおける格子表現による固体群の重心を Gn−1 , 現在のフレームにおける固体群の重心を Gn とすると, 容器の中心から r0 の距離 (0 < r0 < R) に位置する粒子表現による固体群 i の速度 vi は r0 < R0 < R である定数 R0 を用いて, 次のように表わされる.
(vi =Hn + (Gn − Gn−1 ) ∗ T (T : 定数) (0 < r0 < R0 のとき)
Hn
(R0 < r0 < R のとき)

(43)

また, r0 > R0 であるとき, 粒子 i の容器内における高さ Yi が以下の条件を満たした時,
粒子 i は容器からこぼれる.
Yi ≥ YS(44)
なお, YS は容器の高さとする. このとき, こぼれた後の格子表現による固体群の総体積 V 0はこぼれる前の総体積 V と粒子 i が持つ体積 vi を用い, 次のように表わされる.

V 0 = V − vi3.8

粒子表現から格子表現への変換

3.8.1

変換条件

(45)

3.6.1 の変換条件が満たされるたびに, 粒子は生成されるが, むやみに変換され続けるだ
けでは, 粒子数が増加してしまい, 計算量が飛躍的に多くなってしまう. また, 描画時に粒子の周辺に固体群が加算されて表示されるので粒子が 1 か所に密集していると, 固体群が特定場所に山のように盛り上がって表示されてしまい, 不自然に見えてしまうことがある.
よって, 計算量の増加や不自然さを回避するために, 粒子の数を適度に保つ必要性が出てくる. そこで, 固体群を格子表現から粒子表現に変換した際に, 直前フレームと現在フレームでのノイズ補間の実行の仕方によって, 粒子に番号を付与する. 粒子を格子表現に戻す
時は, この番号順に戻していく.
粒子が格子表現に戻されるべきときとは, 「粒子表現の固体群を用いて, 固体群が容器の中を端から端へ移動する過程の表現する」ということを踏まえると, 発生地点から端へ移動しきったときであると言える. しかし, 粒子表現による固体群は容器内を自由に動き回ることができるため, 発生地点を元に, 表現の変換条件を設定してしまうと, 粒子の挙動が制限されてしまうことが考えられる. また, この提案モデルは従来の固体群操作モデル
で固体群全体の挙動を計算しているので, 変換粒子の挙動や位置は従来の固体群操作モデ
ルに従うべきである.
以上のことより, 固体群が端に集まっているということを, 「固体群操作モデルにおける変形曲面の生成場所が容器よりも外である」とする. また, 合成用格子に存在する固体群と粒子表現による固体群の和は, 従来の固体群操作モデルの固体群に等しいため, 変換
条件の判定には, 従来のモデルで使用されている格子を利用する. 従来の固体群操作モデ
ルにおいて使用されている格子で, 粒子表現による固体群が持つ体積以上の固体群が存在すれば, 従来の固体群操作モデルにおいて使用されている格子で, 粒子表現による固体群
以上の固体群が存在することになるので, 変換条件を「粒子の位置から変換半径以内に存22在する, 従来のモデルが使用している格子での各格子の体積が, 粒子が持つ体積よりも多い」と設定する.
変換粒子 i の変換体積を vi , 容器の半径を R, 従来の操作モデルの格子における, 粒子 iから変換半径以内に存在する n 個の各格子 j の高さを yj , また変形曲面の発生場所を D とすると, 粒子が格子表現に変換される時を以下の条件が満たされる時に設定する.

• | D |> R•∑ny j > vi

ただし, 特定の番号を付与された粒子については, 以上の条件あてはまっても変換されな
い. 詳しくは 3.8.3 にて述べる.

3.8.2

変換時の格子表現への加算

3.8.1 の条件に適した粒子は消滅し, 衝突判定から除外される. また, 変換半径以内にある合成用の各格子に高さの値を加算する. 変換半径以内に存在する合成用格子の各格子 jに加算される高さの値 hj は変換される粒子 i が持つ変換体積 vi , 変換半径以内に存在する格子の総数 n を用いて以下のように表せる.
hj =

3.8.3

vi
n

(46)

付与番号について

3.6.2 において述べたが, 粒子はそれぞれ, 直前フレームと現在フレームのノイズ補間の実行の仕方によって異なる番号を付与される. これらの番号は, 粒子を格子表現に戻すときに参照され, そのフレームにおいて存在する粒子のうち最も少ない番号を持つ粒子のみが変換される. 一方, それ以外の粒子は, 変換条件に合っていても変換はされない. 残った
粒子は容器からのこぼれの表現に用いられる.
• 付与番号の割り振り方
3.6.2 にて述べたとおり, 粒子に割りられる番号は直前のフレームでノイズ補間が行われなかった時に 0, 以降, ノイズ補間が行われると 1, 2, 3 · · · のように, ノイズ補間が連続して行われるごとに, 1 増加した番号を割り振られる. 番号は設定された最大
値 T まで連続して割り振られる.
• 付与番号の更新– 変換判定の持ち越し
粒子を格子表現に戻す際, 粒子の存在する座標周辺に十分な体積が存在せずに,格子表現に戻されない粒子が出てくるときがある. そのような場合は, その粒子が持つ付与番号に 1 を加算した番号を再び付与番号として設定する. 付与番号が増加されることにより, この粒子は次の変換判定に持ち越しとなる. なお付与
番号に 1 を加算した番号が T を超える場合は, 代わりに T を付与番号として設
定する.

23

– 特定番号以上の粒子の残留粒子は付与番号の低い順から格子表現に変換されるが, 0 < t < T である, t 以
上の番号を持つ粒子に関しては変換判定に組み込まないようにする. これにより, ノイズによる補間が行われた後に, 一定の数以上の粒子を容器の中に残るようになり, この粒子を用いてこぼれの表現を行うようにする.
– 残留粒子に対する付与番号の初期化上で述べた, 残留しているすべての粒子に対して,∗ 過去 n フレームにおいてノイズによる補間が行われていない.
∗ 現在のフレームにおいてノイズによる補間が行われた.
の 2 つの条件が満たされた時, 付与番号の初期化をする. 具体的には, 残留しているすべての粒子に対して, その粒子の付与番号にかかわらず, 付与番号を 0 に変更する. また, この処理が行われた場合, 3.6.1 の条件 1 による格子表現から粒子表現への変換は行われない. 次のフレームにおいて, 引き続きノイズによる補間が行われた場合は, 付与番号が 1 に設定されて, 変換がおこなわれる.

3.9

空間分割手法への配置

各粒子に対する処理がすべて終了した後は, 空間分割手法へすべての粒子を配置する.
このとき, 容器からこぼれおちた粒子に対しては, 設定空間外に出ているなら, その粒子を消去する. また, 表面粒子については, 容器が傾いている方向にある粒子のみを, 空間分割
手法に配置し, 衝突検知, 衝突応答にかかる計算量を少なくする. 容器が傾いている方向を
S, 位置が Pi である容器や固体群に配置された粒子 i を用いて, 以下の条件に当てはまる
粒子が空間分割手法へ配置される.

Pi
·S ≥U
| Pi |(−1 ≤ U ≤ 1)(47)

図 14 は U = 0 のとき, 衝突判定に組み込まれる粒子を示している. この場合は表面粒子の約半分が衝突判定に組み込まれる.

3.10

粒子表現による固体群の合成用格子への加算

3.2 で述べたとおり, 粒子表現による固体群は, 描画直前時に, 変換された体積に応じて,合成用格子に高さの値を加算する. よって, 表示される固体群は 2 つの表現の足し合わせとなる. 変換半径が r の粒子 i が持つ変換された時の体積を vi , 合成用の格子の粒子 i から
変換半径以内に存在する格子の数を n とすると, 変換半径以内に存在する格子 j が加算される高さ Hj は粒子表現による固体群 i との距離 dij を用いて以下のように表せる.
Hj = Hj1 + Hj2(48)

Hj1 , Hj2 は, それぞれ以下のように表せる.
d2
1
Hj1 = √ exp(− ij )
2
2π

(49)

24

図 14: U = 0 のとき, 衝突判定に組み込まれる粒子

Hi2 =

(vi −

∑n

n

Hj1 )

(50)

25

実験

4

本研究では, 多くの一般家庭に普及をしている任天堂の Wii リモコンを用いて, 処理速
度と挙動の 2 方面にわたって実験を行った.

4.1

入力装置

実験の入力装置として用いる任天堂の Wii リモコンは, モーションセンサーによるリモコン本体にかかる力の大きさと角度 (向き・傾き) の取得と, IR センサーによる 3 次元空間上での位置の取得ができる. しかし, 今回の実験では IR センサーは使用せず, モーショ
ンセンサーのみを用いている.

4.1.1

入力装置からの取得値とモデルの結合

モーションセンサーで取得できるのは, リモコンに働いている x 軸, y 軸, z 軸方向の加速度の大きさである. x, y, z 軸の定義については図 15 に示す. このモーションセンサー

図 15: Wii リモコンにおける軸の定義から取得できる回転角は x 軸, y 軸, z 軸における取得値を Mx , My , Mz とすると

• x 軸回転:θx = arcsin(My )Mz• z 軸回転:θz = arctan( M)xとなる. なお, y 軸回転については, 計算は不可能である. また, 上述の式はリモコンにかかっている力が重力のみという前提が必要であり, 横に振るなどの外力を加えると, リモコンが傾いたと判断されてしまう.
一方, 固体群の形の変化は図 16 のように, 2 つの動作で同一の形状になってしまうこと
がある.

26

図 16: 固体群が同じ形状になる容器の操作
実際にはリモコンを, 姿勢を変えずに横に移動させているのに, 入力の結果, フライパンが傾くのは正解ではない. しかし, 固体群の形状のみについて言えば, 図 16 についてはリ
モコンを傾ける, または, リモコンを姿勢を保ったまま移動させれば, 同じ形状にすることができる.
以上のことより, 固体群が重力以外の力を受けて変形するときを, リモコンにかかる力
が重力よりも大きいとき, すなわち√

Mx2 + My2 + Mz2 > g(51)と定義する.
また, 傾きと加速が同時に変化しているときは, それぞれを一意に求めるのはモーショ
ンセンサー単体では不可能である. よって今回の実験では,• リモコンを移動させずに, その場で傾ける• リモコンを傾けずに, 移動させるの以上の操作のみが行えるように限定した.

27

4.2

実験システム3 章で述べた提案モデルと, 前節で述べたリモコンを用いた実験用システムを作成した.
なお, 描画には DirectX を用いている. この実験では以下の構成の計算機を用いた.
• CPU : Intel(R) Core 2 Duo E6300 1.86GHz• MEM : 1024MB• ATI : Radeon X1300 pro• OS : Microsoft Windows Vista Business
実験の様子を図 17 に示す.

図 17: 実験の様子

図 18 はノイズ補間の条件が成立し, 粒子表現による固体群が容器内を移動している様子である. 粒子付近に固体群が表示されているのがわかる. 図 19 は粒子表現による固体群が表面粒子と衝突した結果, 容器からこぼれている様子である. 容器の中心から一定の距離以上に位置している, 粒子表現による固体群が容器からこぼれ, 下に落ちているのがわかる

28

図 18: 粒子表現による固体群が容器内を移動する様子

図 19: 粒子表現による固体群が容器からこぼれている様子

29

表 1: 処理速度についての実験結果
頂点数
331
397
469
547
631
817
1027
1261

4.3

表面粒子の総粒子数
1795
2173
2587
3037
3523
4603
5827
7195

衝突判定に組み込まれる平均数
670
800
960
1130
1300
1700
2150
2650

FPS
20
20
20
19
18
15
11
8

処理速度についての実験

この実験では, システムの「描画頂点数」また, 容器に配置された「表面粒子」の総数とFPS の関係を調べた. 描画頂点数については, 数が多いほど格子間隔が狭くなり, 配置される表面粒子が多くなる. また, 頂点群が格子状なのにかかわらず, 頂点数が 2 乗した値でな
いのは, 容器が円形なためである. 今回は頂点数を文献 [6] において自然な挙動を得られると評価を得た 331 点から実験を行い, そこから頂点数を増やしていく.
3.9 にて述べたとおり, 表面粒子はすべてが衝突判定には組み込まれない. これらの粒子
は容器の姿勢によって, 常に数が変化しているので, 実験中に衝突判定に組み込まれた平均数を示す. なお, 本実験における衝突判定に組み込む表面粒子を決定する定数 U (3.9 参照) は U = cos( π3 ) とした. また, 発生させる粒子表現による固体群の形状は粒子数が 2 の長方形とし, 最大発生数は 100 に設定した.
対話操作のシステムとして利用する場合, 一般的に FPS が 10-12 以上必要であると言われている. この実験システムでは FPS の最大値を 20 に設定し, それよりは大きくならな
いようにした.
結果は表 1 のようになった.

4.3.1

考察

描画頂点数に比例して, 表面粒子の総数が増えるため, 描画頂点数が増えると, 計算量が多くなり,FPS が下がることが考えられる. 表 1 では頂点数が 469 よりも多くになるにつれて,FPS が下がっているのがわかる. 将来的に,FPS を 20 に維持したまま, このシステムに要素を追加することを考慮すると, 描画頂点数を 469 未満に設定しなければならない. また, 対話操作のシステムとして利用するために必要最低限である 10-12FPS 以上の FPS を実現するには, 衝突判定に組み込む総粒子数を約 2000 以下にしなければならないことが
わかる.

30

4.4

挙動の自然さについての実験

次に本手法と従来の手法の操作システムによる固体群の挙動の自然さを評価するために, 8 人に描画頂点数を 331, U = cos( π3 ) に設定した本システムを体験してもらって, 簡単な質問とアンケートを行った. 実験と質問の内容は以下のようになる.

• 実験 1 : まず, 被験者にシステムの操作方法を説明し, 先に従来の固体群操作モデルを体験してもらい, その後, 本手法の操作モデル (従来のノイズ補間は行わないもの)を体験してもらう. 2 つの操作モデルの違いを把握してもらい,「従来の操作モデルと比べて本手法はどの程度自然さが増しているか」を 7 段階評価でアンケートを取る. 評価点の目安を「評価１」= 悪くなっている,「評価 4」= 変わらない,「評価 7」= より自然になっている, とした.
• 実験 2 : その後さらに, 従来の手法でのノイズ補間が実行される提案モデルを体験してもらい, ノイズ補間がない場合とノイズ補間がある場合での同様のアンケートを取る.
• 実験 3 : 本手法にノイズ補間を組み合わせた場合とない場合との両方について,「調理システムとして挙動がどの程度自然か」を 7 段階評価でアンケートを取った. な
お,「評価 1」= 全く役に立たない,「評価 5」= システムとしての実用に耐えれる程度,「評価 7」= 限りなく自然に近い, と補足説明をした.

4.4.1

結果

図 20 に実験 1,2 の結果を示す. 実験 1 の平均値は 5, 実験 2 も 5 となり, 双方とも「変わらない」である評価値 4 を超えている. 実験 1 に関しては, 大部分の被験者がより自然な動
きをしていると判断している. 実験 2 では, より自然に感じた被験者と変わらないと感じた被験者が半数に分かれた.
図 21 に実験 3 の結果を示す. なお, 本手法での評価を実験 3-1, 本手法とノイズ補間を組み合わせたものの評価を実験 3-2 とする.
実験 3-1 では平均値は 4.75 であり, 実験 3-2 では 5.13 であった. 実験 3-2 の方が高評価を得ている. また, 評価値 5 と判断した被験者の数も実験 3-2 の方が多い.

4.4.2

考察

実験 1 の結果をみると, 本手法は従来の固体群操作モデルよりも, より自然な固体群の動きを表現できていると言える. また, 実験 2 においては, 本手法とノイズ補間を組み合わせたほうが, より自然に見えると判断した被験者は半数を超えた, しかし, 変わらないと判断した被験者も存在するため, ノイズ補間との組み合わせは, 個人差が出ることがわかる. 一方, 実験 3 については, 本手法のみの評価よりも, ノイズ補間との組み合わせのほうが高い評価を得ている. 以上より, 本手法の固体群操作モデルで一定の自然な固体群の挙動を表現できているが, 従来の操作モデルで用いていたノイズ補間を組み合わせれば, より自然的に感じられると言える.

31

図 20: 実験 1,2 の結果

図 21: 実験 3-1,3-2 の結果

32

5

むすび

本研究では, 調理学習システム「バーチャルお料理教室」の一環として, 従来の固体群操作モデルでは不十分であった固体群の移動の過程の表現を実装し, なおかつ対話操作が可能な新たな固体群操作モデルを提案した. また, 固体群を格子表現から切り離して別に挙動させるだけではなく, 粒子法の粒子としての性質をもち合わせることによって, 固体群と衝突反応ができるようにし, 容器から外に出るようにすることで, 食物が容器からこぼれる表現を実装した.
本手法では粒子法剛体シミュレーション手法を取り入れているため, 粒子表現による固体群とは別に, 粒子によって構成された剛体を定義し, それを「食物」と扱うことによって, 食物を調理器具を通して操作することが可能である. さらに, 本手法と組み合わせることにより, 「炒飯の具」を表現し, さらに固体群と接触させて転がしたり, 容器からこぼれさせたりすることができる.
問題点としては, 粒子の衝突反応のために, 表面粒子にたくさんの粒子を配置しなければならないため, 本システムに加えて新たなシステムを加えるには, 計算量が多すぎるという点がある. 3.9 のように, 衝突判定に組み込む粒子を削減しても,4.3 で不十分であることがわかる. さらに, 実験において, こぼれの表現が不十分だという指摘があげられた. 本
手法では, 粒子表現による固体群に用いられている粒子をそのまま容器外へ落とすことによって, こぼれを表現している. 粒子では,「炒飯」としては明らかに大きすぎるため, 「炒飯」をこぼしているとは感じらなかった被験者が多くなった. よって, 固体群を感じさせることができる, 細かい物体を用いたこぼれの表現をする必要がある. それに加えて, 粒子
表現による固体群の発生はノイズ補間の条件に依存しているため, 描画時に明らかに固体群の体積が容器の容積を上回っていても, 容器を傾けなければこぼれを発生させることができない. よってノイズ補間とは別に粒子表現による固体群の発生条件を設ける必要もある. また, 固体群の挙動は, 従来の固体群操作モデルに依存しているため, 従来のモデルで存在した「ワープ」現象が本手法では, 解消しきれていないという問題点もある. これについては変形曲面を用いた, 従来の操作モデルをさらに改良する必要がある.
今後の課題としては, 食物の「舞い上がり」や「へら」などの器具を用いて直接操作される固体群の挙動を自然的に表現することが挙げられる. 特に「舞い上がり」ついては実験時に, 舞い上がりをさせようとした操作を行った被験者が多かったため, 実装をすれば,より調理を行っている臨場感が得られると思われる. さらに, 計算量を削減するための表
面粒子の効率的な配置, 調理器具に対してできる操作種類の追加, また, それによって固体群に起こる形状の変化の表現などが挙げられる.
本研究の目標は, 調理における手順をすべて再現できる調理学習システムの構築のため,将来的には, 「調理」の他に,「材料を切る」,「盛り付けを行う」という操作も行えるように研究を進めていきたい.

33

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

34

参考文献
[1] 瀬戸崎典夫, 森田裕介, 武田仰.”ニーズ調査に基づいた多視点型 VR 教材の開発と授業実践” 日本バーチャルリアリティ学会論文誌 Vol.11, No.4 pp.537-544, 2006
[2] 向井信彦, 西村律郎, 小杉信.”手術シミュレータ向け出血表現の高速化手法” 日本バー
チャルリアリティ学会論文誌 Vol.11, No.3 pp.371-376, 2006
[3] 橋本宣慶, 加藤秀雄, 松井恭平, 石田洋子, 王亮.”シミュレータによる歯石除去の訓練
─シミュレータの構築と人口歯石除去による訓練効果の検討─” 日本バーチャルリア
リティ学会論文誌 Vol.11, No.4 pp.453-458, 2006
[4] 任天堂株式会社 Nintendo Ds, Wii,
http://www.nintendo.co.jp/index.html[5] 株式会社タイトー クッキングママ,
http://www.taito.co.jp/csm/title/2007/cooking_mama/wi_mama/index.html[6] 舟橋健司, 小栗進一郎, ”家庭での利用を目的とした VR 調理学習システムのための固体群操作モデルの検討”, 日本バーチャルリアリティ学会第 13 回大会講演論文集,
pp.171-172(DVD-ROM) 1E2-1 (2008.9, 奈良先端科学技術大学院大学)[7] 田中正行, 酒井幹夫, 越塚誠一.”粒子ベース剛体シミュレーションと流体との練成”
Transactions of JSCES, Paper No.2007007, 2007[8] 越塚誠一 (2008)「粒子法シミュレーション 物理ベース CG 入門」 pp.67-92 培風館[9] P.A. Cundall and O. D. L. Strack. A discrete numerial model for granular assemblies.
Geotechnique, Vol. 29, pp. 27-65, 1979