資料はこちら : シミュレーションとモデリングと キャラクタモーション 東京工業大学研究院未来産業技術研究所 / 工学院情報通信系長谷川晶一 1993 年学部 1 年 以来バーチャルリアリティの研究をしています
バーチャルリアリティ (VR) が普及しています HMD の低価格化 (Oculus Rift) により用途が拡大中 VR 世界でコミュニケーション https://vrchat.net/ https://cluster.mu/ https://clustervr.gitbook.io/sdk/ アバター (= 自分の姿 ) が変わると行動や性格が変わる人も 2
Vestibular nucleus 4 Midline Type I neurons Type II neurons 3 DLPN VPFL MT & MST Visual cortex LGN MLF 9 Chiasma opticum 11 7 12 10 Oculomotor nucleus Abducens nucleus VPFL DLPN MT & MST Visual cortex LGN 13 Temporal retina 1 Medial rectus Nasal retina 2 optical axis Lateral rectus バーチャルリアリティの仕組みと中身のリアリティ バーチャルリアリティでは中身のリアリティも大切 バーチャル世界はシミュレーションとモデリングでできている こころ 認識行動決定動作生成体の制御 感覚 5 6 8 9 視覚 聴覚前庭感覚眼球運動頭部運動到達運動 インタフェース 提示 入力計測 触覚移動バランス表面のリアリティ感覚とインタフェースの層 コンピュータ シミュレーション バーチャル世界 中身のリアリティ認識とモデルの層 3
VRの例 : バーチャルカヌー カヌーのシミュレーション 実際のカヌーのスキルの一部が身につく カヌーの近くを掻くと前に進む 遠くを掻くと回転してしまう 4
流体のシミュレーション 水の動きと水圧 = 水面の高さをシミュレーション 色 : 水圧 白い線 : 流速 5
バーチャルカヌーの舞台裏 川岸の 映像用 3D モデル 川岸の 衝突判定用 モデル 6
岩と流木 岩 : 障害物として川に固定配置 流木 : 水に浮く物体にして時々 上流から流す 7
遠景 : 巨大な球殻の内側にテクスチャ ( 写真 ) を貼付 8
バーチャルカヌーの 舞台裏 遠景 遠景 川岸 岩 カヌー パドル 3 次元の多面体で形状をモデル化 水面 岩 川岸 テクスチャ ( 写真 模様 ) を 貼り付ける 水面 流体の運動をシミュレー ションして水面の形を求め 半透明に表示する 9
バーチャルカヌーでは漕ぐことしかできない 作ってないものは存在しない カヌーを降りて 川岸を歩いて 山に登ろうと思っても 遠景は 球に貼り付けた写真でしかない カヌーから降りられない カヌーを降りるために 手をカヌーにつけない 降りるためのシミュレーションやプログラムがない 歩けない 歩くための仕組みは作ってない 10
なんでもできるバーチャル世界? Google Street View は 車から 360 カメラで計測した写真の中を 自由に歩き回れる しかし動き回れるだけで 例えば物を拾えない Google street view 11
バーチャル世界を作る バーチャル世界の データの作成 色と形の作成の例 : どんなデータを用意する? モデリングツール Blender USC CAS gr. Rapid Avatar http://cas.ict.usc.edu/projects/ 変形 : 硬さ 運動 : 質量 慣性 温度 : 比熱 熱伝導率 相転移 ( 氷 水 )? 化学反応 ( 焦げる 固まる )? 12
バーチャルクッキング 13
14
バーチャルクッキング 熱伝達水分 エンタテインメント 練習用の料理シミュレータ 動力学 映像提示
バーチャル世界で料理がしたかったら 料理の手がかりとなる感覚を提示したい そのためのモデリングが必要 どんな手がかりが必要? 映像 サーモカメラ映像 料理が上手な レシピ記述者 料理レシピ キッチン + 料理初心者 必要な情報を調べるべく とても詳しい料理レシピを作ってみた 16
レシピの変遷 1 レシピ < だし巻き卵 > 初版 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. サラダ油を敷いたら, 火をつける. 火加減は中火で. 最後まで調理できたが 黒焦げ 17
レシピの変遷 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 回繰り返す. 火が弱すぎるため 厚さがでない 18
レシピの変遷 3 レシピ < だし巻き卵 > 第 5 版 7. 卵から空気泡が出てくるまで箸などでひっくり返さずに, フライパンを回しながら待つ. 空気泡が出なくなったら ( 柔らかいところがなくなったら ), 奥から3 分の1 の付近を目安に, 箸で剥がしながら奥から手前にひっくり返す. この操作を2 度繰り返す. レシピ < だし巻き卵 > 第 6 版 6. 卵を料理箸につけてフライパンにポンと振って落とし, 卵を落とした瞬間に固まる程度であれば ( そうでなければもう少し待ってみて再度繰り返す ), ボールに入っている量の4 分の1 の量をフライパンに流し込む. レシピ < だし巻き卵 > 第 7 版 6. 卵を料理箸につけてフライパンにポンと振って落とし, 卵を落とした瞬間に固まる程度であれば ( そうでなければもう少し待ってみて再度繰り返す ), ボールに入っている量の4 分の1 の量をフライパンに流し込む. 全体に行き渡すようにフライパンを振る. 7. 全体に卵が行き渡ったら, 卵から空気泡 ( 焼けてきたところ, 大きい空気の固まりが出る ) が出てくるまで箸などでひっくり返さずにじっと待つ. 空気泡が全体から出始めたら, 奥から3 分の1 の付近を目安に, 箸で剥がしながら奥から手前にひっくり返す. この操作を2 度繰り返す. もし空気泡が出なければ火が弱いのですこしだけ火を強くする. 一見焦げが多いように見えるが 厚さがあり柔らかく 美味しい 19
バーチャル世界で作業 XX がしたかったら 作業 XX の手がかりとなる現象を再現し 感覚を提示したい 何を手がかりとしているかは 作業の上級者も意識していない これを取り出しながら バーチャル世界を作ることが必要になる 様々な作業が可能なバーチャル世界のためのモデリングは なかなか大変だが 取り組みがいのある仕事 作業を知る 実世界を知る 人を知ることに繋がる 分子レベルでシミュレーションすれば良いかもしれないが 食材や調理器具の分子の並びを作る必要がある ( なんとかなるかもしれない ) 規模が大きすぎる : 原子数 < 10 9 数ナノ秒にスパコン数日 ( アボガドロ数は 6.02 10 23 ) メモリの物理的な大きさは おそらく実物より大きくなる 20
シミュレーション
シミュレーションの役割 例えば 物の動きを軌跡でモデリングしたなら 初速度に応じて何種類も軌跡を用意しなければならない 数式を使うと pp = vv 0 tt, ggtt2 2 のようにまとめられる 微分方程式を使えば mpp = ff + mmgg のように 任意の力 ffの場合の動きが質量 mmだけでモデリングできる 22
運動方程式の使い方 解析解 運動方程式 フックの法則 mmaa = ff ff = kkkk k m mmaa = kkkk 調和振動 xx = Acosωωωω + Bsinωωωω (ωω kk mm ) 変化に対応できない ff = kkkk + ff cc (tt) xx =??? 23
数値シミュレーション 微分方程式を差分の式にする mmaa = kkkk mm vv tt + Δtt vv tt = kkkkkkkk vv tt + ΔΔΔΔ = vv tt kk mm xxxxxx xx tt + ΔΔΔΔ = xx tt + vv(tt)δδδδ 繰り返し適用して 少しずつ先の時刻の速度と位置を計算していく vv 0 = 0 vv 0.1 = 0 1 0.1 = 0.1 vv 0.2 = 0.1 1 0.1 = 0.2 : xx 0 = 1 xx 0.1 = 1 0 0.1 = 1 xx(0.2) = 1 0.1 0.1 = 0.99 : 24
数値シミュレーション 外力の変化に対応できる mmaa = kkkk + ff cc (tt) mm vv tt + Δtt vv tt = ( kkkk + ff cc tt )ΔΔΔΔ vv tt + ΔΔΔΔ = vv tt + ( kk mm xx + ff cc tt )ΔΔΔΔ vv(0) = 0 vv 0.1 = 1 0.1 = 0.1 vv 0.2 = 0.1 + ( 1 + ff cc (0.2)) 0.1 ff cc (tt) xx tt + ΔΔΔΔ = xx tt + vv(tt)δδδδ xx 0 = 1 xx 0.1 = 1 0 0.1 = 1 xx(0.2) = 1 0.1 0.1 = 0.99 機構の変化には対応できない シミュレーションの式の立て直しが必要 25
数値シミュレーションと物理エンジン 普通の物理シミュレーション mmmm + II θθ = mmmmmmmmmmmm 運動方程式を人が立てる 物理エンジン 人は機構の情報 ( 関節位置 慣性 形 ) を与える 自動で運動方程式を立てながらシミュレーションする θ θ ff cc mmvv = ff cc + mmgg IIωω = rr cc ff cc ニュートン オイラーの剛体の運動方程式 + 拘束力 ff cc を用いる運動方程式は同一なので自動化が簡単 接触などにより 機構がシミュレーション中に変わっても大丈夫 26
物理エンジンの計算の流れ 1. 接触を見つけ 拘束を更新 2. 拘束力を求める 3. 位置 速度を更新する 運動方程式 ( シミュレーションの式 ) MMxx = FF 外力 + FF 拘束 vv tt + Δtt = vv tt + 機構の設定 ( 物体のつながり方 ) 拘束条件 2. 連立 拘束力の値 3. 位置 速度の更新 1. 接触判定 27
物理エンジン Springhead のデモ 我々が開発している物理エンジン Springhead のサンプルプログラム ソース :https://github.com/sprphys/springhead 物理エンジンの中身の解説 http://haselab.net/class/vr/ の 物理エンジンサミット.pdf 28
物理エンジンによるバーチャル世界 積み木については 大抵の操作が可 のこぎりで切るなどには対応していません 29
柔軟物や流体のシミュレーション 一つの物体中に多数の代表点を考え 代表点の運動をシミュレーション 30
力覚 + 物理シミュレーション + カブトムシ ただ前に歩くだけのカブトムシだがこの世界の主人公になった 動物の存在感に驚いた 31
バーチャルヒューマン
バーチャル世界で 生き物や人とふれあいたい 現実世界から連れてくる方が簡単 例 :VRChat, cluster.mu など 多人数が一つのバーチャル空間に入り コミュニケーションなどの活動をする 理想のバーチャル世界を作るには バーチャルな生き物や人も欲しい バーチャル人間 人間のような知能 人間のように会話できるエージェント ELIZA[J. Weizenbaum, 1966] チャットができるエージェント ( 人工無脳 ) 人の知能は言語能力だけではない 特にバーチャルリアリティでは身体を使ったコミュニケーションも大切 33
人の動きが持つ情報 Biological Motion[G. Johansson,1973] 関節に小さな光るマーカーを付け暗闇で撮影 数個の光の点の動きで 行動がわかる 歩行動作から性別や気分などがわかる バーチャル人間やバーチャル動物の動きからも 人は多くの意味を感じ取る Queen s University Bio Motion Lab http://www.biomotionlab.ca/demos/bmlwalker.html 34
キャラクタモーションのモデリング ゲームなどのキャラクタモーションの作り方予め運動を作っておき タイミングに合わせて再生する 記録 再生役者の演技をモーションキャプチャする 人が作るキーフレームアニメーション 人の動きに応じた キャラクタの反応動作を作ることが難しい 動作が限られてしまう シミュレーションによる動作生成 人の動きに合わせてその場で動作を作ることができる 物理法則にあたる法則がはっきりしない 35
モーションキャプチャ https://www.youtube.com/watch?v=p2_vb7zx_sq 36
https://www.youtube.com/watch?v=v9dkqs_pzio 37
キーフレームアニメーション 38 https://www.youtube.com/watch?v=dkxwjucznie
39
Kobito の動きの作り方 リアルタイム剛体シミュレーション 多次元キーフレームアニメーション 傾き 傾き 移動距離 移動距離 倒立振子モデルに基づく制御 傾き q 質量 M 長さ l 力 F 押す 走る 歩く 行動の種類 40
剛体モデルの制御 運動量 角運動量を力を用いて制御 角運動量 :L 0 運動量 :p mv (v: 歩行速度 ) 制御可能な力 : 床との摩擦力 f( f <f max ) 倒立振子の制御 足で歩く人 動物の最も単純なモデル 状態フィードバック制御で実現 N g mv f 41
多次元キーフレームアニメーション 作りこまれたポーズの集合体 剛体の運動状態 ( 姿勢 移動量 速度等 ) に依存 キャラクタの行動の種類 ( 歩く 走る 押すなど ) に依存 多次元キーフレームアニメーション 多次元空間にキーフレームを配置 剛体の状態に応じて多次元座標を決定 周囲のキーフレームを補間 傾き押す走る歩く 行動種別 移動距離 42
多次元キーフレームの作成法 複数の一次元 (= 従来の ) キーフレームアニメーションで構成 1 各次元軸に沿ったアニメーションを作成 2 1. で作成したキーフレームを起点にさらにキーフレームを追加 3 実際に動作させ, キーフレームの追加 調整 キーフレームアニメーションの作成は従来スキル ツールで可能 傾き 2 1 移動距離 43
結果 44
シミュレーションと制御だけによる動作生成 何をシミュレーションするか? 選択的注意 一つの対象に感覚 注意を向ける仕組み 人間を含む動物の外界の捉え方 感覚 選択的注意 選ばれた感覚情報 ( 位置等 ) 運動 関心対象 動機 ( 目的 ) 行動決定 45
シミュレーションによる動作生成 触覚モデル 視覚モデル 物理エンジン 触覚的注意 F 視覚的注意 v F v v トップダウン注意 行動決定ルール Max 到達目標決定 運動制御 注意対象 注意対象を注視する 注意対象に触れる 体の運動目標 到達位置 視線方向 Jv = ω ω = J # v 46
47
48
注意を惹き 人を呼び込むエージェント 49
注意を惹き 人を呼び込むエージェント 50
会話の聞き手の動作生成 ( 学習 ) 3 人中一人が聞き手 聞き手の動作の法則は分かっていない 人間の会話を計測し 学習モデルを作る 学習 ( 教師あり学習 ) モデル 入力 ( 話し手 2 人の動作 ) と出力 ( 聞き手の動作 ) のペアをたくさん与える 入力を与えると ありそうな出力を推測してくれる 人間の会話を計測 データ 学習モデル (HMM) (U1=, U2=, A= ) 分析 (U1=, U2=, A= ) (U1=, U2=, A= ) 学習 U1= U2= A= U1= U2= A= U1= U2= A= 51
会話の聞き手の動作生成 ( 生成 ) 話者 2 名の 声の有無 視線 学習モデル (HMM) 聞き手の動作 再現できたこと 話者を見る 話題の中心になっている物を見る 単純なルールより自然なタイミング 頻度を実現 52
学習モデルとシミュレーション 学習を使ったモデリングは 学習データにないパターンには対応できない 人が 今までにない変わった動作をした場合には 反応動作が破綻する 上手く動いているときは データを反映したリアルな動作が実現 シミュレーションによる方法は 法則に従う 法則に 人の動作の機微を詰め込むのは難しく 動作のリアリティは低い 法則が成り立つ範囲ならば破綻しない 両方の良いとこ取りをすることも一つの課題 53
まとめ バーチャルリアリティのデモは魅力的だが 実は 想定内の行動しかとることができない 対象とする行動 作業に合わせて バーチャル世界に情報を与え その情報を人に伝えるインタフェースを用意する必要がある バーチャル世界でできることを増やすと バーチャルリアリティの応用が広がる ただし なんでもできるは 煩雑になるので 実用化には大事なものだけに限ることも大切 モデリング 作業に必要な情報をモデリングしたい そのためには 作業の分析も必要 シミュレーション シミュレーションによりモデリングが効率化する 物理法則があってよかった バーチャルヒューマン 人工知能を作ることに バーチャルリアリティでは動きも重要 ここでも シミュレーションがモデリングを効率化する可能性が高い 動きには多くの情報が含まれている 法則が分からないので 学習モデルも有効 54