平成 21 年度 卒業研究論文

VR 調理学習システムのための格子表現固体群の剛体による対話操作

指導教員
舟橋

名古屋工業大学

工学部

情報工学科
平成 18 年度入学

森

18115160 番

愛絵

健司

准教授

i

目次

第 1 章 はじめに

1

第 2 章 従来の固体群操作モデル

32.1

固体群操作モデルの構想 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32.2

固体群の表現方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

2.3

変形曲面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52.4

体積補正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.5

崩れの表現

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.6

ノイズによる補正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

第 3 章 剛体による固体群操作モデル

10

3.1

剛体による固体群操作モデルの概要 . . . . . . . . . . . . . . . . . . . . . . . 10

3.2

調理器具と調理容器との干渉 . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3

変形曲面の調理器具への適用 . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.3.1

変形曲面の形状 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.3.2

変形曲面の長さの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.3.3

マイナスの高さを持つ変形曲面 . . . . . . . . . . . . . . . . . . . . . 18

3.4体積補正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.5

崩れの表現

3.6

剛体によって出来る影の生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

第 4 章 実験

4.1

21

入力装置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.1.1

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

4.2

実験システム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.3

処理速度についての実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.4

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

第 5 章 むすび

29

ii

謝辞

30

参考文献

31

1

第1章

はじめに

VR(バーチャルリアリティ) とは、実体はないが本質的には同じ性質を持っている人工的な環境及び人工的な物体をコンピュータ上に作り出し、ユーザにあたかもそこにその環境や物体が存在しているかのような感覚を与える技術のことである。VR の使用用途は多岐に及び、医療、製造、科学、デザイン、エンターテイメントなど幅広く応用されている。例としては、小学校での理科の教材 [1] や手術に関するシミュレータ [2] [3] といった教育、訓練を目的としたシミュレータなどがある。
バーチャルリアリティを応用したシステムを使用する利点としては、危険な作業の手順確認が安全に行える、より直感的に理解を深める事が出来る、試行錯誤にかかるコストを低減する事が出来る、などが挙げられる。しかし、それを可能にする装置が高価であるため、一般家庭に広く普及するには至っておらず、多くのコンテンツは一般向けではないというのが現状である。

また, 近年 e-learning 用のコンテンツが注目を浴びるようになり、 任天堂株式会社から発売されている「Nintendo DS」[4] のソフトである「脳トレ」「えいご漬け」など、学習要素をとりこんだゲームソフトが話題を呼んだ。これらのハードウェアは広く一般家庭に普及しているが、 入出力が乏しく、VR システムを構築することができない。一方、 同社から発売されている「Wii」[4] は入力に「Wii リモコン」と呼ばれる安価なハードウェアを用いており、体感的な操作を実現している。例としては、株式会社タイトーから発売されている「クッキングママ」[5] が挙げられる。このゲームは調理の過程を題材としており、「料理」を楽しむことが出来る。

当研究室では、一般家庭を対象としたコンテンツの一つとして料理をとりあげ、VR 調理
学習システム「バーチャルお料理教室」の開発を行っている。この、「バーチャルお料理教室」とは、料理の手順を学習するためのものである。最終的には、調理を行う台所全体を用意し、食材の用意から、「食材の切断」といった加工、「炒める」などの調理、盛り付けといった料理における一連の手順を学習できるコンテンツの作成を目指している。そのために、学習中に直接的もしくは間接的に操作できるものはすべて、挙動をリアルタイムに表現出来る必要がある。

第1章

はじめに

2

操作の対象となるものには、剛体、流体、弾性体、などがあるが、文献 [6] により提案された手法では、剛体を用いて、細かい粒子状の物体である砂や雪などの操作をすることが出来る。砂の様な粒子状の物体の個々の動きを計算するには時間がかかり、対話操作に向かな
いため、砂や雪は一様な正方格子の各セルに高さを持たせる事により表現する。厳密な挙動には基づいていないが、高速に計算を行い、対話操作をすることが出来る。
「バーチャルお料理教室」でも、ご飯や具材など、砂の様に複数の固体が集まる状態を取り扱うが、この「ご飯や砂などの複数の個体が集まって 1 つのものであるかのように振る舞う物」を固体群と称する。文献 [7] では、提案された手法に適応する固体群の一例として、
調理容器内に存在する食物（例:炒飯）を挙げている。この手法では、固体群の挙動を個々の動きを計算して求めるのではなく、固体群全体を一つの対象として扱い、格子表現によって計算を行う事で、対話操作を実現している。また、文献 [8] により提案された手法では、文献 [7] の格子表現に、粒子表現を追加する事によって、こぼれなどの表現を行い、よりリア
ルな固体群表現を実現している。しかし、これらの手法は開発途中であり、調理器具外については、こぼれ以外の固体群の挙動を考慮していない。また、容器を傾けるという間接的な方法でしか固体群の操作を行えない。

そこで本研究では、ユーザが自由に動かす事の出来る、剛体である調理器具を導入する。
この剛体と固体群との干渉を表現することで、より直接的な操作の実装を行う。最初の段階
として、格子表現固体群に対する剛体による操作に注目し、モデルの構築を行い、粒子表現
固体群を含めた操作モデルは次の段階での構築を予定している。これにより、より現実に近い固体群操作の表現を行う。また、文献 [7] と同様に、本システムでは料理の手順を体を動かして学習することを主目的とした、VR 技術による e-learning システムの構築を目指すので、体験者が「自然である」と感じられる固体群の挙動を表現することを目的とする。

第 2 章において、従来の固体群操作モデルの概略を説明する。また第 3 章において、剛体
による固体群操作モデルを説明する。第 4 章については、実験システムについて、または実
証実験、提案手法の有用性について述べる。

3

第2章

従来の固体群操作モデル

本章では、格子表現固体群に対する剛体による操作に注目しモデルの構築を行うため、当研究室において提案された従来の固体群操作モデルの概要を説明する。この固体群操作モデ
ルは、複数の物が集まって出来ている固体群を、1 つのまとまった操作対象として扱う事で、計算時間を削減し、対話操作を実現したモデルである。この手法は開発途中であるため、固体群の動きが調理器具内に限定されている。しかし、使用者に操作している物が食物片であるという一定の認識をさせることを可能にしている。

2.1

固体群操作モデルの構想

この固体群操作モデルでは、扱う事の出来る一例として、調理器具内の食材片を挙げている (例：フライパン内の炒飯)。これらの固体群が、容器が傾いた際に受ける力は一様である。
しかし、1 フレーム毎に全ての固体が互いに及ぼし合う力について、隣り合っている固体間での力の計算しかしないとすると、全ての動作を計算し終えるまでに多くのフレームが必要となる。この計算方法では、30 個先の固体に力が伝わるには、30 フレーム必要になるため、急な動きの計算であったとしても、実際にリアルタイムに再現されるのは意図したものとはかけ離れた、非常にゆっくりした動きの固体群となる。また、固体群の受ける力の計算は量が多いため、全て計算が終わるまで他の処理を待っていると、対話操作が実現出来なくなってしまう。
そこでこのモデルでは、固体個々の単位で力の計算をせずに、固体群全体をひとつとして捉えて、全体にかかる力による変化を曲面で近似表現している。図 2.1 に概念を、容器内に存在する固体群の断面図を例にして示す。

第2章

従来の固体群操作モデル

4

図 2.1: 変形曲面による固体群変形の過程⃝
1 この状態では固体群は容器の底面に沿って下に移動すべきである。
⃝
2 よって黒い部分付近に曲面を発生させて固体群に加算する。
⃝
3 加算によって体積が増加するので全体の高さを減少させ、元の体積に戻す。
⃝
4 結果、固体群が以前よりも下の部分に移動する。
図 2.1 における ⃝2 の、黒い部分である曲面を、以降、変形曲面と呼ぶ。実際に発生させる曲面に使用する関数としては、ガウス曲線、放物線、半楕円、などが考えられるが、今回は想定している形に近く、幅・高さの変更が容易な半楕円を選んだ。容器を傾けたとき、定義する変形曲面は半楕円が容器の固体群積載部に均一に並べられ、図 2.2 のように半楕円柱となる。

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

第2章

従来の固体群操作モデル

2.2

固体群の表現方法

5

固体群は、調理容器内の固体群積載部上に、格子状になるよう配置された頂点群の高さの値を更新することによって表現する。また、頂点群は調理容器内に配置されるので有限個が保証され、格子の間隔を調整することで、処理速度と精度を調整することが出来る。

2.3

変形曲面

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

• 楕円の長半径• 短半径• 3 次元空間上での位置• 3 次元空間上での向き• 楕円柱の長さ
なお、調理容器の固体群積載部に平行な半径を長半径、垂直な半径を短半径とする。
まず、楕円柱の 3 次元空間上での向きであるが、これは固体群がすべる方向、すなわち容器が傾いている方向と同じように設定する。楕円柱の長さについては、固体群が受ける力を容器の全体にかける必要があるため、無限長としている。最低でも、容器の半径 R の 2 倍である 2R にすれば、変形曲面の長さが容器より小さくなる事はない。
また、3 次元空間上での位置については、固体群が重心に集まっていると仮定し、その重心から、楕円柱の向きに平行移動させた位置に設定する。平行移動の距離は、後述する楕円柱の長半径 a の距離に比例するように設定する。固体群の重心 G = (xG , zG ) は容器内に存在する固体群の分布と格子座標によって求められ、固体群全体の体積を V 、xz 平面の (xi , zi )に位置する格子の高さを f (xi , zi )、固体群が存在する ( f (x, z) > 0 である) 頂点の総数を Nとすると、

1 ∑ f (xi , zi ) ∑ f (xi , zi )
(
xi
,
zi
)
N
V
V
N

(xG , zG ) =とあらわされる。

N

(2.1)

第2章

従来の固体群操作モデル

6

図 2.3: 容器の姿勢を定義する α、β について
図 2.3 のように、xz 平面で容器の向きと x 軸がなす角度 α、xz 面と容器がなす角度 β を設定し、容器の姿勢を定義すると、容器が傾いている方向 S とは上述の α によってあらわされ、S = (cos(α), sin(α))

(2.2)

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

(2.3)

とあらわされる。

a は楕円柱の長半径の長さを表し、固体群の移動距離に関係する変数である。a = 0 ならば、変形曲面は存在しなくなり、固体群は移動しない。a を設定するには、固体群の挙動を考慮しなければならない。固体群は剛体とは違い、図 2.4 の様に容器の端に達しても、移動し続ける。よって固体群の大部分が容器の端まで移動し終えるまで、a > 0 にするべきである。
そこで、a は容器の端に接している固体群の量に対して減少するように以下の様に設定
する。

(
a=

T−

∑n

yi (T ≥
0∑nyi のとき、T : 定数)∑(T < n yi のとき)

(2.4)

第2章

従来の固体群操作モデル

7

図 2.4: 固体群の容器の端での動き∑nyi は容器の端に接している格子が持つ高さの値の総和であり、n は容器の端に接している高さが 0 以上の格子の数である。

a は固体群が容器の側面から受ける垂直効力を考慮に入れて定義されたものであるが、容器の姿勢や固体群の質量による影響が少ない。よってこれらを補うために短半径 b は以下のように設定する。
(√{mgsin(β) − (mgcos(β)(1 − µ′ ))} V × T (mgsin(β) ≥ µmgcos(β) のとき、T : 定数)b=0(mgsin(β) < µmgcos(β) のとき)
(2.5)
なお、固体群全体の質量を m、固体群全体の体積を V 、重力加速度を g 、静止摩擦係数を µ、
動摩擦係数を µ′ とする。
これらの変数により、楕円柱 (変形曲面) を定義して固体群に加算する。変形曲面による加算は、対象の格子が生成された楕円柱の長半径以内にあるかどうかの判断で行われる。式

2.3 より楕円柱の中心軸は、xz 平面格子の中心を原点としたとき、
sin(α)x − cos(α)y − sin(α)(xG + acos(α)) + cos(α)(zG + asin(α)) = 0(2.6)となる。A = sin(α), B = −cos(α)、C = −sin(α)(xG + acos(α)) + cos(α)(zG + asin(α))とすると xz 平面のある点 P (xp , zp ) と中心軸との距離 L は以下のようにして求められる。

| Axp + Bzp + C |√=| Axp + Bzp + C |A2 + B 2
点Ｐが楕円柱の中に存在するとき、楕円柱による、高さの変化 Y は
(√
)
L 2
Y =
1−( ) ×b
a
L=

(2.7)

(2.8)

となり、以前の高さに Y を加算した後、体積補正をした値が点 P における高さとなる。

第2章

従来の固体群操作モデル

2.4

体積補正

8

変形曲面を発生させ続けるだけでは、固体群は無限に増加してしまう。このモデルでは、固体群の体積が変化するのは、他から追加したときか、容器から零れたときのみとし、力を加えることで押し縮める等、固体群が質量を保ったまま体積が変化することはないとする。
しかし、変形曲面により単純に固体群の挙動を表現すると、固体群の体積が変化してしま
う恐れがある。そこで変形曲面による固体群の計算においては、全体の形状を決定した後に上下方向に伸縮することにより体積を維持する。この操作を提案モデルでは体積補正と呼ぶことにする。
変形曲面により全体の挙動を決定した後の高さを y とすると、補正後の高さ y ′ は

y′ =

v
y
V

(2.9)

となる。なお、挙動計算前の固体群全体の体積 v 、挙動決定後の全体の体積 V とする。

2.5

崩れの表現

固体群は一般にはある程度積み上がったら崩れるものが多い。この現象を表現するために、ある頂点とその近傍の一頂点との高さの差を求めて、その値が閾値より大きければ、２つの頂点の高さを、それらの平均値として再設定する操作を行う。この処理は、入力から出力の一連の処理において、各頂点に対して１回ずつのみ行う。つまり、１度に行われるこの処理は有限なものである。リアルタイムに動作するシステムにおいて、この処理は徐々に全体に広がっていき、自然な「崩れ」を表現する。

2.6

ノイズによる補正

固体群は楕円柱の発生により移動するが、この手法だと、図 2.5 のように、容器が一方に傾いている状態から反対方向に急に傾けた場合、固体群が反対方向の離れた場所に、中央を通らず突如として現れてしまう「ワープ」現象がおこる。この現象を防ぐため、固体群が端から端へ移動する際に、各格子に微小乱数のノイズを加える。これによって、固体群が現れない領域の補間を実現している。
ノイズの発生条件は、「固体群が容器の端から端に移動している」ではなく、「傾いている
容器の、その容器の中の上の方に固体群が存在する」という判断が容易な条件に設定して
いる。

第2章

従来の固体群操作モデル

9

具体的な手順としては、図 2.6 のように、容器の中央を通り、容器の傾きの向きに平行な直線を走査線として用意する。その走査線を容器の中央から楕円柱が生成される方向とは逆方向に辿ってゆき、直線上に存在する固体群の体積を調べる。そして、その体積の合計値が閾値よりも大きければノイズによる補間を実行する。

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

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

10

第3章

3.1

剛体による固体群操作モデル

剛体による固体群操作モデルの概要

当研究室において提案された従来の固体群操作モデルは、計算コストをかけずに固体群を操作する事を可能としている。しかし、このモデルは開発途中のため、容器を傾けるという間接的な固体群操作方法以外は考慮されておらず、固体群の一部分のみを操作する事は難しい。また、本モデルは調理学習システムを応用の一つとしており、調理において調理器具で固体群を移動させる、かき混ぜる、などの操作は非常に一般的である。この一般的な操作の実装を行うことで、更なるリアリティの向上が見込めるため、より直接的な方法で固体群操作を可能にする手段を考える。

本論文で提案する手法では、従来の固体群操作モデルで用いられた、剛体である調理容器（フライパンなど）に加えて、剛体である調理器具を導入する。この剛体はユーザが自由に動かす事の出来る物体であり、固体群と衝突させる事で固体群の操作を直接的に行う事が出来る。ただし、固体群操作部が、1 つ以上の長方形からなる調理器具と限定する。従来の固体群操作モデルでは、剛体と固体群を「調理器具と食材片」としていたが、本モデルではそれに剛体の調理器具を加えたものとしている。

第3章

剛体による固体群操作モデル

11

新たな提案モデルは図 3.1 のように動作する。初めに各調理器具の操作に関する入力の取得を行い、その入力に従って固体群を表現する。これらの処理を各フレームごとに行っている。これらの動作の詳細については以降に説明する。

入力の取得
調理器具の内外判定
剛体同士の衝突
変形曲面による固体群の変形
体積補正
崩れの表現
剛体によって出来る影の生成
描画
図 3.1: モデルの全体像

第3章

剛体による固体群操作モデル

3.2

調理器具と調理容器との干渉

12

まず、調理器具が調理容器内にあるかどうかを判定する。調理容器はここでは、初期位置
が xz 平面と平行であるフライパンを想定している。フライパンの固体群積載部は円であり、ユーザの操作によって傾けられた調理容器の積載部を xz 平面に投影すると、図 3.2 の様な傾いた楕円になる。

Y

Y

Z

Z

X

X

Z

Z

X

X

図 3.2: 平面 xz への投影

この調理容器の積載部を投影した楕円と、調理器具の固体群操作部の最下部中点との内外判定を考える。円と一点の内外判定は広く知られて居るが、楕円と一点の内外判定は円程簡
単な話ではなくなる。しかし、楕円の長短半径の長さがが一致する場合、楕円は真円になり、これを利用する事で内外判定を簡単に行う事が出来る。
調理容器の半径を r、長半径を rx 、短半径を ry とする。楕円の２つの焦点の中間点である点を楕円の中心とし、これを (Cx ,Cy )、長短軸が X 軸 Y 軸に平行な楕円に対する回転角度を θ とする。

第3章

剛体による固体群操作モデル

①

中心点C

rx

13

②

Θ

ry
P

P’

④
③
r

P’’
P’’’
図 3.3: 変換の手順

まず、楕円の中心が (Cx ,Cy ) であったのを、原点 (0,0) に移動する。
次に、長短軸が X 軸 Y 軸に平行な楕円に対して回転角度 θ だけ傾いてたのを、軸に平行になるように回転する。
最後に、長短半径をそれぞれ r/rx , r/ry 倍し、楕円を円の状態にする。
これで原点を中心とした、半径 r の円と P ′′′ となる。

第3章

剛体による固体群操作モデル

14以上の操作は、以下の行列で表される。

[]
Px Py 1






1
0
0
cos(−θ) sin(−θ) 0
r/rx
0
0




1
0   sin(−θ) cos(−θ) 0   0
r/ry 0  (3.1)
 0−Cx −Cy 1
0
0
1
0
0
1

楕円を円変換するのと同時に、点 P の位置も変換によって移動している。変換による点P の移動先である点 P ′′′ は以下の様になる。
{
Px′′′ = r/rx ((Px − Cx ) cos(θ) + (Py − Cy ) sin(θ))
Py′′′ = r/ry (−(Px − Cx ) sin(θ) + (Py − Cy ) cos(θ))(3.2)

以上より、点 P ′′′ が以下の条件式を満たせば、原点を中心とする半径 r の円の内側にあると判断出来るので、これを満たせば楕円の内側に点 P があると判断出来る。

Px′′′2 + Py′′′2 ≤ r2

(3.3)

調理容器の固体群積載部上の平面と調理器具の位置の関係を走査した結果と、前述した剛体同士の内外判定の結果を用いて、衝突しているかどうかを判断する。平面と調理器具の距
離が 0 以下 かつ 調理器具が容器の内側のとき、衝突しているものとする。衝突していた場合については、調理器具の移動を不可能にし、衝突している状態を表現する。剛体である 2
つの調理器具の衝突を表現する事によって、より臨場感のあるモデルを目指す。

第3章

剛体による固体群操作モデル

3.3

変形曲面の調理器具への適用

15

容器が傾いた際については、固体群にかかる力が一様であるため、固体群全体をひとつとして捉え、かかる力を変形しやすい半楕円柱で近似表現する事とした。しかし、今回扱う調理器具であるへらと固体群が干渉する場合については、• 調理器具の移動方向• 調理器具の大きさ• 調理器具の移動速度を考慮する必要がある。
そこで、調理容器内で調理器具と固体群が干渉した場合に、従来の変形曲面を拡張したものを適用し、固体群の変形と移動を行う。3.2 で述べた内外判定の結果、容器内に調理器具存在する場合、調理器具の移動方向の前方に 4 分の 1 楕円柱を、調理器具の移動軌跡にマイナスの高さを持つ 4 分の 1 楕円柱を配置する。この時、調理器具の固体群操作面と水平になるように、変形曲面の中心軸を定める (図 3.4)。これにより、調理器具で固体群が押されて移動している様子を再現する。4 分の 1 楕円柱とマイナスの高さを持つ変形曲面については、本章で説明する。
また本提案モデルは、個体群の操作を行う調理器具の操作部が１つ、もしくは横に並ぶ複数の長方形で構成されていれば適用可能である (図 3.5)。ただし、複雑な形状であれば計算量は増え、処理速度は低下することが予想される。

第3章

剛体による固体群操作モデル

16

変形曲面

中心軸
マイナスの変形曲面
図 3.4: へらの移動方向と変形曲面

図 3.5: 調理器具の例

第3章

剛体による固体群操作モデル

3.3.1

変形曲面の形状

17

調理器具であるへらと固体群が干渉する場合、へらの固体群操作面から受ける力によって、固体群が変形する。この場合、固体群が力を受けている面の近傍に、より多くの固体群が集まるべきである。従来の変形曲面で用いていた半楕円柱は、中央が高い山なりな形状をしているため、この状態を表現するのに適していない。そこで、本研究では変形曲面で用いていた半楕円柱の更に半分にあたる、4 分の 1 楕円柱を用いる。また、調理器具の移動速度に応じて固体群の受ける力の大きさも変わるので、移動速度に応じて楕円の長半径の長さを変える事で、より自然な挙動を再現する。これによって、調理器具によって変形移動させられる固体群を表現する。

3.3.2

変形曲面の長さの設定

容器が傾いた際については、固体群に一様な力がかかるが、従来の手法では変形曲面の長さを無限長にすることでこれを表現した。しかし、調理器具で押された場合については、一様ではない局所的な力がかかり、これを表現するには、従来の手法を拡張する必要がある。
そこで、変形曲面の定義の「楕円柱の長さ」が従来手法では常に無限の長さであったのを、長さを適切に設定することにより調理器具との干渉を表現する。

L
P
C
長半径
中心軸

長さ
短半径
図 3.6: 変形曲面の定義

第3章

剛体による固体群操作モデル

18

図 3.6 は変形曲面の定義を表したものである。調理容器の固体群積載部上にある楕円柱の長短径と垂直に交わる直線を l1 とし、以後これを中心軸と呼称する。中心軸 l1 上に楕円柱の中心となる点 C(xc , yc ) を定める。この中心点 C を通り直線 l1 に垂直な直線 l2 を Ax + By + C 、
容器上の点 P(xp , yp ) とすると、l2 と点 P の距離 L は以下の式で求められる。

L=| Axp + Bzp + C |√A2 + B 2(3.4)

この L が、設定したの楕円柱の高さよりも小さい場合 かつ P が中心軸から長半径以内にある場合のみ、変形曲面での増分を格子表現に加える。それ以外の場合については値は加算されない。これにより、調理器具による局所的な力や、大きさの違う調理器具にも対応する事が出来る。

3.3.3

マイナスの高さを持つ変形曲面

従来のモデルでの固体群操作では、容器の傾きによる変形曲面の発生と体積補正での体積調整、および一定以下の体積を他の格子に持ち越す事で、固体群の移動を実現していた。しかし、これは固体群全体に一様な力がかかる時には有効であるが、調理器具で固体群の一部のみに力を加えるには、向いていない。しかし、1 つの格子毎に体積を減らす処理を行うと、計算に手間がかかるため、対話操作に向かなくなってしまう。

そこで、マイナスの高さを持つ変形曲面を考える。通常の変形曲面の定義と同じ変数で定義を行い、同様に高さの変化 Y を求めた後、以前の格子の高さから減算する。このとき、Yが以前の高さより大きい値の場合があるので、実際に減算する高さを Y ′ 、xz 平面の (xi , zi )に位置する格子の高さを f (xi , zi )、格子の頂点の総数を N とすると、(Y (Y ≤ f (xi , zi ) のとき)′Y =f (xi , zi ) (Y > f (xi , zi ) のとき)

(3.5)

また、マイナスの変形曲面によって減算された固体群の体積 V はV =とあらわされる。

N∑(f (xi , zi ) − Yi′ )

(3.6)

第3章

剛体による固体群操作モデル

3.4

体積補正

19

2.4 で前述したとおり、従来モデルでは、調理容器を傾ける固体群操作を行った際に体積の補正を行う。全体としての体積を保つには、同様に調理器具で固体群を操作した後にも、固体群の体積を一定に保つ補正をする必要がある。調理器具で固体群操作を行った事による高さの変化を y とすると、体積補正後の高さの変化 y ′ は

y′ =

v
y
V

(3.7)

となる。なお、調理器具による固体群操作における、マイナスの変形曲面によって減算された固体群の体積を v 、変形曲面によって加算された固体群の体積を V とする。この補正により、マイナスの変形曲面で減算された体積分だけ移動する事が出来るので、体積の保存が出
来る。

3.5

崩れの表現

固体群は一般にはある程度積み上がったら崩れるものが多い。この現象を表現するために、ある頂点とその近傍の一頂点との高さの差を求めて、その値が閾値より大きければ、２つの頂点の高さを、それらの平均値として再設定する操作を行う。
しかし、調理器具から加えられている力よって積み上がった状態が維持されている場合については、調理器具の存在を無視して崩れの表現を行うのは不自然である。そこで、調理器具
によって直接力を受けている部分に関しては崩れを行わず、積み上がった状態を維持する事
で、調理器具の存在によりリアリティを持たせる。

第3章

剛体による固体群操作モデル

3.6

剛体によって出来る影の生成

20

地面とする平面と光源の位置より、剛体である 調理容器・調理器具を平面へ投影する行列を作成し、これを用いて影を実装する。図 3.7 のような、調理容器・調理器具で遮られて地面に出来る影を実装する事で、剛体同士の位置を把握し易くし、よりリアリティの感じられるモデルとする。

図 3.7: 剛体による影

21

第4章

実験

この研究は、一般向けの調理学習システムを目標にしている。そのためこのシステムは、利用可能な安価な入力デバイス、高速な処理速度、十分に自然な挙動などが要求される。そこで本実験では、入力デバイスとして任天堂の Wii リモコンとヌンチャクを利用することとし、これを用いて処理速度と挙動の自然さの 2 方面について実証実験を行った。

4.1

入力装置

今回の実験では入力デバイスとして任天堂の Wii リモコンとヌンチャクを採用した。ヌンチャクとは wii リモコンの外部拡張コネクタに繋げて使用する、拡張コントローラーの一つである。この研究では、最終目標が一般向けの調理学習システムであることから、デバイスを特定せずに利用できるシステムを想定している。そのため今回の実験では比較的安価で、それほど精度の高くないものが望ましい。以上の理由によりデバイスを決定した。
なお、Wii リモコンとヌンチャクでは、モーションセンサーによる Wii リモコンに働く力の大きさと角度（向き・傾き）の取得が行える。また、Wii リモコンでは IR センサー (赤外線カメラ) による 3 次元空間上での位置の取得が可能である。

4.1.1

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

モーションセンサーで取得できるのは、デバイスに働いている x 軸、y 軸、z 軸方向の加速度の大きさである。x、y 、z 軸の定義については図 4.1 に示す。このモーションセンサーから取得できる回転角は x 軸、y 軸、z 軸における取得値を Mx 、My 、Mz とすると

• x 軸回転:θx = arcsin(My )Mz)• z 軸回転:θz = arctan( Mxとなる。なお、y 軸回転については、計算は不可能である。また、上述の式は入力装置にかかっている力が重力のみという前提が必要であり、横に振るなどの外力を加えると、入力装置が傾いたと判断されてしまう。

第4章

実験

22

-Y

+Z
+X

-X

+Y
-Z
図 4.1: ヌンチャクにおける軸の定義

一方、固体群の形の変化は図 4.2 のように、2 つの動作で同一の形状になってしまうことがある。

図 4.2: 固体群が同じ形状になる容器の操作

第4章

実験

23

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

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

また、Wii リモコンは IR センサーによる 3 次元空間上での位置の取得が可能である。しかし、一般的にはセンサーバーと呼ばれる赤外線発光器はモニタ付近に設置し、リモコンの受光部は発光部に向くように操作を行う必要がある。そこで本実験システムでは、センサー
バーを床に置き、Wii リモコンの赤外線受光部を床（センサーバー）に向けて持ち操作することとした (図 4.3)。これにより、Wii リモコンをへらなどの調理器具の柄を持つように操作可能とした。

第4章

実験

24

図 4.3: Wii リモコンと IR センサー

第4章

実験

4.2

実験システム25

3 章で述べた提案モデルと、前節で述べた Wii リモコン、ヌンチャクを用いた実験用シス
テムを作成した。なお、描画には DirectX を用いている。この実験では以下の構成の計算機を用いた。

• CPU : Pentium(R) Dual-Core CPU E5200 2.50GHz• MEM : 1024MB• GPU : NVIDIA GeForce 9500 GT• OS : Microsoft Windows XP
実験の様子を図 4.4 に示す。

図 4.4: 実験の様子

第4章

実験

26

図 4.5 は調理容器内の固体群と調理器具であるへらが干渉し、固体群が調理容器内を移動している様子である。調理器具に押され、調理器具の移動方向に固体群が盛り上がる様子が分かる。

図 4.5: 実験の様子

第4章

実験

4.3

処理速度についての実験

27

この実験では、システムの「描画頂点数」と、1 秒間に何回描写を行っているかを表す「FPS(Frame Per Second)」の関係を調べた。描画頂点数が多くなるほど格子間隔が狭くな
り、より細かい固体群の表現が出来る様になる。また、頂点群が格子状であるにも関わらず、頂点数が 2 乗の値ではないのは、容器が円形状をしているためである。なお、調理容器の半径 r を 1.2、調理器具の固体群操作面の幅に合わせて設定する変形曲面の長さを 0.6 とした。
対話操作のシステムとして利用する場合、一般的に FPS が 10-12 以上必要であると言われている。この実験システムでは FPS の最大値を 20 に設定し、それよりは大きくならないようにした。
結果は表 4.1 のようになった。
表 4.1: 処理速度についての実験結果
頂点数

FPS

331
547
721
919
1027
1141
1387
1519

20
20
20
18
15
13
10
8

表 4.1 では頂点数が 721 よりも多くになるにつれて、FPS が少なくなっているのがわかる。将来的に、FPS を 20 に維持したままこのシステムに要素を追加することを考慮すると、描画頂点数を 721 未満に設定しなければならない。

第4章

実験

4.4

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

28

本手法の操作システムによる固体群の挙動の自然さを評価するために、本システムを体験してもらい、簡単な質問とアンケートを行った。被験者にシステムの操作方法を説明し、実際に体験してもらい、剛体である調理器具の動きに対する固体群の挙動が自然であるかどうかを 7 段階で評価してもらう。評価点の目安は「評価 1」=、全く自然に見えない「評価 4」= システムとして実用に耐えうる程度、「評価 7」= 限りなく自然に近い、とした。なお、描
画頂点数は 331、調理器具の変形曲面の長さは 0.6 に設定した。
図 4.6 に実験の結果を示す。

12
10
8
6

評価

4
2
0
1

2

3

4

5

6

7

図 4.6: 挙動の自然さについての実験結果

図の横軸は評価の点数、縦軸は人数である。平均値は 6.0 となり、システムとして実用に耐えうる程度である 4 を超えている。実験の結果、本手法は剛体と固体群の干渉を自然に表現出来ていると言える。「実際に固体群を操作していると感じるのに十分な挙動である」との、積極的な意見も頂いた。

29

第5章

むすび

本研究では、調理学習システム「バーチャルお料理教室」の一環として、従来の固体群操
作では行えなかった局所的な操作を、新たな剛体を導入し格子表現の固体群と干渉させることで実装した。これは、対話操作が可能な固体群操作モデルであり、リアルタイムに挙動を計算する事が出来る。
ユーザが自由に動かす事の出来る剛体として調理器具を導入し、格子表現で表された固体群との干渉を表現することで、調理容器を傾けるよりも直接的な操作で固体群を操作出来るようになった。また、4 分の 1 楕円柱の変形曲面や、マイナスの高さをもつ変形曲面を調理器具に適用することで、調理器具によって固体群が力を加えられている様子を実現した。更に、剛体の干渉や剛体の影を表現することで、よりリアリティのあるモデルとした。ただし現時点では、調理器具による個体群操作は調理容器内に限定している。そのため、調理器具
により個体群に力を加えて調理容器から押し出す、という操作は考慮していない。
今後の課題点としては、調理容器に大きな力が加えられて固体群の一部が「舞い上がる挙動」や、調理器具による固体群の「すくい上げの挙動」「容器外に押し出す挙動」、調理器
具と粒子表現の固体群との干渉を表現することなどが挙げられる。特に舞い上がりについて
は、実験時に、固体群が舞い上がるのかどうか確かめようとする実験者が多かったため、実装を行えばより調理を行っている臨場感をユーザに与えられると思われる。
本研究の目標は、調理における手順をすべて再現できる調理学習システムの構築のため、将来的には、「調理」の他に、「材料を切る」、「盛り付けを行う」という操作も行えるように研究を進めていきたい。

30

謝辞

本研究を進めるにあたって、日頃から多大な御尽力を頂き、ご指導を賜りました名古屋工業大学、舟橋健司 準教授、伊藤宏隆

助教、山本大介

助教に心から感謝致します。

また、本研究に対して御討論、御協力頂きました伊藤研究室の皆様ならびに中部大学 岩堀研究室の皆様に深く感謝致します。
最後に、本研究に多大な御協力を頂きました舟橋研究室諸氏に心から感謝致します。

31

参考文献

[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] 西田友是、尾上耕一、”Virtual Sandbox”、Proc. of Pacific Graphics 2003 (The 11th
Pacific Conference on Computer Graphics and Applications), pp. , 2003-10[7] 舟橋健司、小栗進一郎、”家庭での利用を目的とした VR 調理学習システムのための固体群操作モデルの検討”、日本バーチャルリアリティ学会第 13 回大会講演論文集、pp.171-

172(DVD-ROM) 1E2-1 (2008.9、奈良先端科学技術大学院大学)[8] 森井敦士、 山本大介、 舟橋健司、”VR 調理学習システムのための格子・粒子法による固体群操作モデル”、日本バーチャルリアリティ学会第 14 回大会講演論文集、1D4-1(DVD-ROM) (2009.9、早稲田大学)