• 検索結果がありません。

PowerPoint プレゼンテーション

N/A
N/A
Protected

Academic year: 2021

シェア "PowerPoint プレゼンテーション"

Copied!
54
0
0

読み込み中.... (全文を見る)

全文

(1)

シミュレーションとモデリングと

キャラクタモーション

東京工業大学

研究院 未来産業技術研究所

/工学院 情報通信系

長谷川晶一

1993年学部1年、以来バーチャルリアリティの研究をしています。

資料はこちら:

(2)

バーチャルリアリティ(VR)が普及しています

HMDの低価格化(Oculus Rift)により用途が拡大中

VR世界でコミュニケーション

アバター(=自分の姿)が変わると行動や性格が変わる人も

(3)

バーチャルリアリティの仕組みと中身のリアリティ

バーチャルリアリティでは

中身のリアリティも大切。

バーチャル世界は

シミュレーションと

モデリングでできている。

3

インタフェース

提示

バーチャル世界

入力

計測

コンピュータ

シミュ

レー

ション

聴覚 触覚 Oculomotor nucleus Abducens nucleus MLF Temporal retina Nasal retina Midline Medial rectus

Lateral rectus optical axis Vestibular nucleus Type II neurons Type I neurons Chiasma opticum 2 3 56 89 7 12 4 10 1 13 11 DLPN Visualcortex VPFL MT &MST LGN DLPN Visualcortex VPFL MT & MST LGN Oculomotor nucleus Abducens nucleus MLF Temporal retina Nasal retina Midline Medial rectus

Lateral rectus optical axis Vestibular nucleus Type II neurons Type I neurons Chiasma opticum 2 3 5566 89 7 1212 44 10 10 1 13 13 11 11 DLPN Visualcortex VPFL MT &MST LGN DLPN Visualcortex VPFL MT & MST LGN 視覚 頭部運動 到達運動 移動 バランス 眼球運動 前庭感覚

認識

行動決定

動作生成

体の制御

感覚

表面のリアリティ

感覚とインタフェースの層

こころ

中身のリアリティ

認識とモデルの層

(4)

VRの例:

バーチャルカヌー

カヌーの

シミュレーション

実際のカヌーの

スキルの一部が

身につく。

カヌーの近くを

掻くと前に進む。

遠くを掻くと

回転してしまう。

(5)

流体の

シミュレーション

5

水の動きと水圧=

水面の高さを

シミュレーション

色:水圧

白い線:流速

(6)

バーチャルカヌーの舞台裏

川岸の

映像用

3Dモデル

川岸の

衝突判定用

モデル

(7)

7

岩:障害物として川に固定配置

流木:水に浮く物体にして時々

上流から流す

(8)
(9)

バーチャルカヌーの

舞台裏

遠景、川岸、岩、カヌー

パドル

3次元の多面体で形状を

モデル化

テクスチャ(写真・模様)を

貼り付ける。

水面

流体の運動をシミュレー

ションして水面の形を求め、

半透明に表示する。

遠景

川岸

水面

9

(10)

バーチャルカヌーでは漕ぐことしかできない

作ってないものは存在しない

カヌーを降りて、川岸を歩いて、山に登ろうと思っても、遠景は、球に貼

り付けた写真でしかない。

カヌーから降りられない

カヌーを降りるために、手をカヌーにつけない。

降りるためのシミュレーションやプログラムがない。

歩けない

歩くための仕組みは作ってない。

(11)

なんでもできるバーチャル世界?

Google Street Viewは、車から360°カメラで計測した写真の中を

自由に歩き回れる。しかし動き回れるだけで、例えば物を拾えない。

Google street view

(12)

バーチャル世界を作る

バーチャル世界の

データの作成

色と形の作成の例:

どんなデータを用意する?

変形:硬さ

運動:質量、慣性

温度:比熱、熱伝導率

相転移(氷→水)? 化学反応(焦げる、固まる)?…

(13)

バーチャルクッキング

(14)
(15)

バーチャルクッキング

エンタテインメント・練習用の料理シミュレータ

熱伝達

水分

動力学

映像提示

(16)

バーチャル世界で料理がしたかったら

料理の手がかりとなる感覚を提示したい

→そのためのモデリングが必要。 どんな手がかりが必要?

必要な情報を調べるべく、とても詳しい料理レシピを作ってみた。

キッチン+料理初心者

料理が上手な、レシピ記述者

映像・

サーモカメラ

映像

料理レシピ

(17)

レシピの変遷1

17 レシピ< だし巻き卵> 初版 1. だしを作製する.ボールに砂糖大さじ1,醤油小さじ1,鰹だしスティック半分,みりん大さじ1.5,お 湯大さじ4 を計りボールに入れる. 2. 卵3 個をボールに入れて研ぐ.ここで,繋がっている白身を切るようにして研ぐことに注意する. 3. だしを2. に入れて混ぜ合わせる. 4. サラダ油で浸したキッチンペーパーで,フライパンに油を敷く. 5. フライパンに卵を一筋だけたらし,ジュージューと音がすることを確認出来たら,ボールに入っている 量の4 分の1 の量をフライパンに流し込む. 6. 卵から空気泡が出てきたら,奥から3 分の1 の所でひっくり返す操作を2 度繰り返す. 7. 6.の卵をフライパンの奥に持っていき,5. と6. の操作を3 回繰り返す. → 小さじ、大さじがどれか分からず、停止 1. だしを作製する.ボールに砂糖大さじ(15 のスプーン)1,醤油 小さじ1(2.5 のスプーン),鰹だしスティック半分,みりん大さ じ1.5,お湯大さじ4 を計りボールに入れる. → 火をつける手順・火加減がないため、停止 5. サラダ油を敷いたら,火をつける.火加減は中火で. → 最後まで調理できたが、黒焦げ

(18)

レシピの変遷2

レシピ< だし巻き卵> 第4 版 1. だしを作製する.ボールに砂糖大さじ(15 のスプーン)1, 醤油小さじ1(2.5 のスプーン), 鰹だしス ティック半分,みりん大さじ1.5, お湯大さじ4 を計りボールに入れる. 2. 卵3 個をボールに入れて研ぐ.ここで,繋がっている白身を切るようにして研ぐことに注意する. 3. だしを2. に入れて混ぜ合わせる. 4. サラダ油で浸したキッチンペーパーで,フライパンに油を敷く. 5. サラダ油を敷いたら,火をつける.火加減は弱火で. 6. 卵を料理箸に伝わせて一筋(一滴) だけたらし,ジュージューと音がすることを確認出来たら, ボールに入っている量の4 分の1 の量をフライパンに流し込む. 7. 卵から空気泡が出てくるまで箸などでひっくり返さずに,フライパンを回しながら待つ.卵の焼け ていないところがなくなったら(柔らかいところがなくなったら), 奥から3 分の1 の付近を目安に, 箸で剥がしながらひっくり返す.この操作を2 度繰り返す. 8. 6. の卵をフライパンの奥に持っていき,4. で 使用した方法で油を敷く.卵の下のところにも 卵を動かして油を敷く. 9. 最初の量の4 分の1 程度をフライパンに流し 込む.このとき卵の下にも卵が流れ込むよう に卵を入れる. 10.6. から9. の操作を3 回繰り返す.

(19)

レシピの変遷3

19 レシピ< だし巻き卵> 第5版 7. 卵から空気泡が出てくるまで箸などでひっくり返さずに,フライパンを回しながら待つ.空気泡 が出なくなったら(柔らかいところがなくなったら),奥から3分の1 の付近を目安に,箸で剥が しながら奥から手前にひっくり返す.この操作を2度繰り返す. レシピ< だし巻き卵> 第6版 6. 卵を料理箸につけてフライパンにポンと振って落とし,卵を落とした瞬間に固まる程度であれ ば(そうでなければもう少し待ってみて再度繰り返す), ボールに入っている量の4 分の1 の量をフ ライパンに流し込む. レシピ< だし巻き卵> 第7版 6. 卵を料理箸につけてフライパンにポンと振って落とし,卵を落とした 瞬間に固まる程度であれば(そうでなければもう少し待ってみて再度 繰り返す),ボールに入っている量の4 分の1 の量をフライパンに流し 込む.全体に行き渡すようにフライパンを振る. 7. 全体に卵が行き渡ったら,卵から空気泡(焼けてきたところ,大き い空気の固まりが出る) が出てくるまで箸などでひっくり返さずに じっと待つ.空気泡が全体から出始めたら,奥から3 分の1 の付近を 目安に,箸で剥がしながら奥から手前にひっくり返す.この操作を2 度繰り返す.もし空気泡が出なければ火が弱いのですこしだけ火を 強くする. → 一見焦げが多いように見えるが、厚さがあり柔らかく、美味しい

(20)

バーチャル世界で作業XXがしたかったら

作業XXの手がかりとなる現象を再現し、感覚を提示したい。

何を手がかりとしているかは、作業の上級者も意識していない。

これを取り出しながら、バーチャル世界を作ることが必要になる。

様々な作業が可能なバーチャル世界のためのモデリングは、

なかなか大変だが、取り組みがいのある仕事。

作業を知る、実世界を知る、人を知ることに繋がる。

分子レベルでシミュレーションすれば良いかもしれないが、

食材や調理器具の分子の並びを作る必要がある(なんとかなるかもしれない)

規模が大きすぎる:原子数 < 10

9

数ナノ秒にスパコン数日

(アボガドロ数は6.02×10

23

メモリの物理的な大きさは、おそらく実物より大きくなる。

(21)
(22)

シミュレーションの役割

例えば、物の動きを軌跡でモデリングしたなら

初速度に応じて何種類も軌跡を用意しなければならない

数式を使うと

𝒑𝒑 = 𝑣𝑣

0

𝑡𝑡, −

𝑔𝑔𝑡𝑡 2 2

のようにまとめられる。

微分方程式を使えば、

m ̈𝒑𝒑 = 𝒇𝒇 + 𝑚𝑚𝒈𝒈

のように、任意の力𝒇𝒇の場合の動きが質量𝑚𝑚だけでモデリングできる。

(23)

運動方程式の使い方

解析解

運動方程式

𝑚𝑚𝑎𝑎 = 𝑓𝑓

フックの法則

𝑓𝑓 = −𝑘𝑘𝑘𝑘

𝑚𝑚𝑎𝑎 = −𝑘𝑘𝑘𝑘 → 調和振動 → 𝑘𝑘 = Acos𝜔𝜔𝑡𝑡 + Bsin𝜔𝜔𝑡𝑡 (𝜔𝜔 ≡

𝑘𝑘 𝑚𝑚

)

変化に対応できない

23

m

k

𝑓𝑓 = −𝑘𝑘𝑘𝑘 +

𝑓𝑓

𝑐𝑐

(𝑡𝑡)

𝑘𝑘 = ? ? ?

(24)

数値シミュレーション

微分方程式を差分の式にする

𝑚𝑚𝑎𝑎 = −𝑘𝑘𝑘𝑘

𝑚𝑚 𝑣𝑣 𝑡𝑡 + Δ𝑡𝑡 − 𝑣𝑣 𝑡𝑡 = −𝑘𝑘𝑘𝑘𝑘𝑘𝑡𝑡

𝑣𝑣 𝑡𝑡 + 𝑘𝑘𝑡𝑡 = 𝑣𝑣 𝑡𝑡 −

𝑚𝑚𝑘𝑘

𝑘𝑘𝑘𝑘𝑡𝑡

𝑘𝑘 𝑡𝑡 + 𝑘𝑘𝑡𝑡 = 𝑘𝑘 𝑡𝑡 + 𝑣𝑣(𝑡𝑡)𝑘𝑘𝑡𝑡

繰り返し適用して、少しずつ先の時刻の速度と位置を計算していく

𝑣𝑣 0 = 0

𝑣𝑣 0.1 =

0 − 1 ⋅ 0.1 = −0.1

𝑣𝑣 0.2 = −0.1 − 1 ⋅ 0.1 = −0.2

:

𝑘𝑘 0 = 1

𝑘𝑘 0.1 = 1 − 0 ⋅ 0.1 = 1

𝑘𝑘(0.2) = 1 − 0.1 ⋅ 0.1 = 0.99

:

(25)

数値シミュレーション

外力の変化に対応できる

𝑚𝑚𝑎𝑎 = −𝑘𝑘𝑘𝑘 +

𝑓𝑓

𝑐𝑐

(𝑡𝑡)

𝑚𝑚 𝑣𝑣 𝑡𝑡 + Δ𝑡𝑡 − 𝑣𝑣 𝑡𝑡 = (−𝑘𝑘𝑘𝑘 +

𝑓𝑓

𝑐𝑐

𝑡𝑡

)𝑘𝑘𝑡𝑡

𝑣𝑣 𝑡𝑡 + 𝑘𝑘𝑡𝑡 = 𝑣𝑣 𝑡𝑡 + (−

𝑚𝑚𝑘𝑘

𝑘𝑘 +

𝑓𝑓

𝑐𝑐

𝑡𝑡

)𝑘𝑘𝑡𝑡

𝒙𝒙 𝑡𝑡 + 𝑘𝑘𝑡𝑡 = 𝒙𝒙 𝑡𝑡 + 𝒗𝒗(𝑡𝑡)𝑘𝑘𝑡𝑡

機構の変化には対応できない

シミュレーションの式の立て直しが必要

25

𝑣𝑣(0) = 0

𝑣𝑣 0.1 = −1 ⋅ 0.1 = −0.1

𝑣𝑣 0.2 = −0.1 + (−1 +

𝑓𝑓

𝑐𝑐

(0.2)

) ⋅ 0.1

𝑘𝑘 0 = 1

𝑘𝑘 0.1 = 1 − 0 ⋅ 0.1 = 1

𝑘𝑘(0.2) = 1 − 0.1 ⋅ 0.1 = 0.99

𝑓𝑓

𝑐𝑐

(𝑡𝑡)

(26)

数値シミュレーションと物理エンジン

普通の物理シミュレーション

𝑚𝑚𝑚𝑚 + 𝐼𝐼 ̈𝜃𝜃 = −𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝜃𝜃

↑運動方程式を人が立てる

物理エンジン

人は機構の情報(関節位置、慣性、形)を与える

自動で運動方程式を立てながらシミュレーションする

接触などにより、機構がシミュレーション中に変わっても大丈夫

θ

θ

ニュートン・オイラーの剛体の運動方程式

+ 拘束力

𝒇𝒇

𝒄𝒄

を用いる

運動方程式は同一なので自動化が簡単

𝑚𝑚 ̇𝒗𝒗 =

𝒇𝒇

𝒄𝒄

+ 𝑚𝑚𝒈𝒈

𝑰𝑰 ̇𝝎𝝎 = 𝒓𝒓

𝒄𝒄

×

𝒇𝒇

𝒄𝒄

𝒇𝒇

𝒄𝒄

(27)

物理エンジンの計算の流れ

1.

接触を見つけ、拘束を更新

2.

拘束力を求める

3.

位置・速度を更新する

27

運動方程式(シミュレーションの式)

𝑀𝑀 ̈𝑘𝑘 = 𝐹𝐹外力 + 𝐹𝐹拘束 → 𝑣𝑣 𝑡𝑡 + Δ𝑡𝑡 = 𝑣𝑣 𝑡𝑡 + ⋯

機構の設定

(物体のつながり方)

拘束条件

2.連立

3.位置・速度

の更新

拘束力の値

1.接触判定

(28)

物理エンジンSpringheadのデモ

我々が開発している物理エンジン

Springheadのサンプルプログラム

ソース:

https://github.com/sprphys/Springhead

物理エンジンの中身の解説

http://haselab.net/class/vr/

の”物理エンジンサミット.pdf”

(29)

物理エンジンによるバーチャル世界

積み木については、

大抵の操作が可

のこぎりで切る

などには対応して

いません。

29

(30)

柔軟物や流体のシミュレーション

(31)

力覚+物理シミュレーション+カブトムシ

31

ただ前に歩くだけ

のカブトムシだが

この世界の主人公

になった。

動物の存在感に

驚いた。

(32)
(33)

バーチャル世界で、生き物や人とふれあいたい

現実世界から連れてくる方が簡単

例:VRChat, cluster.muなど、多人数が一つのバーチャル空間に入り、

コミュニケーションなどの活動をする。

理想のバーチャル世界を作るには、バーチャルな生き物や人も欲しい

バーチャル人間 → 人間のような知能

人間のように会話できるエージェント

ELIZA[J. Weizenbaum, 1966] チャットができるエージェント(人工無脳)

人の知能は言語能力だけではない。特にバーチャルリアリティでは身体を

使ったコミュニケーションも大切

33

(34)

人の動きが持つ情報

Biological Motion[G. Johansson,1973]

関節に小さな光るマーカーを付け暗闇で撮影

数個の光の点の動きで、行動がわかる。

歩行動作から性別や気分などがわかる。

バーチャル人間やバーチャル動物の動きからも、

(35)

キャラクタモーションのモデリング

ゲームなどのキャラクタモーションの作り方

予め運動を作っておき、タイミングに合わせて再生する。

記録・再生

役者の演技をモーションキャプチャする

人が作る

キーフレームアニメーション

→人の動きに応じた、キャラクタの反応動作を作ることが難しい。

動作が限られてしまう。

シミュレーションによる動作生成

人の動きに合わせてその場で動作を作ることができる。

物理法則にあたる法則がはっきりしない。

35

(36)
(37)

37 https://www.youtube.com/watch?v=V9dkqS_pzio

(38)
(39)
(40)

Kobitoの動きの作り方

移動 距離 傾き 行動の種類 走る 歩く 押す

リアルタイム

剛体シミュレーション

多次元キーフレーム

アニメーション

移動距離 傾き 傾きq 長さ l 質量M 倒立振子モデル に基づく制御 F

(41)

剛体モデルの制御

運動量・角運動量 を 力を用いて制御

角運動量:

L

0

運動量:

p

→ m

v

v

:歩行速度)

制御可能な力:床との摩擦力

f

(|

f

|<

f

max

倒立振子の制御

足で歩く人・動物の最も単純なモデル

状態フィードバック制御で実現

41

g

N

f

mv

(42)

多次元キーフレームアニメーション

作りこまれたポーズの集合体

剛体の運動状態(姿勢・移動量・速度等)に依存

キャラクタの行動の種類(歩く・走る・押す など)に依存

多次元キーフレームアニメーション

多次元空間にキーフレームを配置

剛体の状態に応じて多次元座標を決定

→周囲のキーフレームを補間

移動 距離 傾き 行動種別 走る 歩く 押す

(43)

多次元キーフレームの作成法

複数の一次元(=従来の)キーフレームアニメーションで構成

① 各次元軸に沿ったアニメーションを作成

② 1.で作成したキーフレームを起点にさらにキーフレームを追加

③ 実際に動作させ,キーフレームの追加・調整

キーフレームアニメーションの作成は従来スキル・ツールで可能

43 移動距離 傾き

(44)
(45)

シミュレーションと制御だけによる動作生成

何をシミュレーションするか?

選択的注意

一つの対象に感覚、注意を向ける仕組み

人間を含む動物の外界の捉え方

45

感覚

選択的注意

動機(目的)

運動

関心対象

行動決定

選ばれた

感覚情報

(位置等)

(46)

シミュレーションによる動作生成

Jv = ω

ω = J

#

v

運動制御

行動決定ルール

体の運動目標

・到達位置

・視線方向

到達目標決定

注意対象

注意対象を注視する

注意対象に触れる

v

物理

エンジン

v

F

視覚モデル

触覚モデル

触覚的注意

視覚的注意

v

F

Max

トップダウン注意

(47)
(48)
(49)

注意を惹き、人を呼び込むエージェント

(50)
(51)

会話の聞き手の動作生成(学習)

3人中一人が聞き手。聞き手の動作の法則は分かっていない

人間の会話を計測し、学習モデルを作る。

学習(教師あり学習)モデル

入力(話し手2人の動作)と出力(聞き手の動作)のペアをたくさん与える。

→入力を与えると、ありそうな出力を推測してくれる。

(U1=…, U2=…, A=…) (U1=…, U2=…, A=…) (U1=…, U2=…, A=…)

・ ・ ・

人間の会話を計測

データ

U1=… U2=… A=… U1=… U2=… A=… U1=… U2=… A=…

学習モデル(HMM)

51

(52)

再現できたこと

話者を見る。

話題の中心になっている物を見る。

会話の聞き手の動作生成(生成)

学習モデル

(HMM)

話者2名の

声の有無、視線

聞き手の動作

(53)

学習モデルとシミュレーション

学習を使ったモデリングは、学習データにないパターンには対応できない。

人が、今までにない変わった動作をした場合には、反応動作が破綻する。

上手く動いているときは、データを反映したリアルな動作が実現。

シミュレーションによる方法は、法則に従う。

法則に、人の動作の機微を詰め込むのは難しく、動作のリアリティは低い。

法則が成り立つ範囲ならば破綻しない。

両方の良いとこ取りをすることも一つの課題

53

(54)

まとめ

バーチャルリアリティのデモは魅力的だが、実は、想定内の行動しかとることができない。

対象とする行動・作業に合わせて、バーチャル世界に情報を与え、その情報を人に伝え

るインタフェースを用意する必要がある。

バーチャル世界でできることを増やすと、バーチャルリアリティの応用が広がる。

ただし、なんでもできるは、煩雑になるので、実用化には大事なものだけに限ることも

大切。

モデリング

作業に必要な情報をモデリングしたい。そのためには、作業の分析も必要。

シミュレーション

シミュレーションによりモデリングが効率化する。物理法則があってよかった。

バーチャルヒューマン

人工知能を作ることに。バーチャルリアリティでは動きも重要。

ここでも、シミュレーションがモデリングを効率化する可能性が高い。

動きには多くの情報が含まれている。法則が分からないので、学習モデルも有効。

参照

関連したドキュメント

8月 9月 10月 11月 12月 1月 2月 3月..

1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月.

1月 2月 3月 4月 5月 6月 7月 8月 9月10月 11月 12月1月 2月 3月 4月 5月 6月 7月 8月 9月10月 11月 12月1月 2月 3月.

12月 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月.

2月 1月 12月 11月 10月 9月. 8月

2月 1月 12月 11月 10月 9月 8月 7月

10月 11月 12月 1月 2月 … 6月 7月 8月 9月 …

曜日 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00.