Improv : A System for Scripting Interactive Actors in Virtual Worlds 立命館大学 理工学研究科 岡田 尚悟(コンピュータネットワーク研究室)
目次 1.はじめに(背景) 2.Improvシステムの内容 3.アニメーションエンジン 4.行動エンジン 5.ユーザー相互作用 6.実装 7.まとめ
はじめに 「Improv」システムについて -リアルタイムで行う、行動ベースでのアクターの生成 - ネットワーク分配された独立したエージェント -英語スタイルのスクリプト言語 -2つのサブシステムから出来ている ①アニメーションエンジン ②行動エンジン
背景 Strassman 91 Stephenson 92 “Desktop Theater” 対話型のアクターのためのオーサリング・ツール 視覚的な相互作用はなし Stephenson 92 “Snow Crash”,(小説) インターネットの未来のバージョン 詳細なオーサリング・ツールはない
背景 独立したアクターシミュレーションシステム 人間の動きシミュレーションシステム 独立した動物シミュレーションシステム 対話型シミュレーションシステム
「Improv」システムの内容 ○リアルタイムでのアクターの生成を行うシステム <デザイン> アクター生成モデル <アニメーションエンジン> 移り変わり、構成 段階的アクション back front <行動エンジン> Layered Motions 並列のスクリプト Decision Rules 決定規則 アクターの特性 アクションの特性
アニメーションエンジン ●DOF (Degrees Of Freedom)によってさまざまな動きを作る ○変更DOF : 運動生成
アニメーションエンジン ●アニメーションの定義 ○連続的な信号の生成 -時間に対してのDOFを変化させる -低コストを備えたより自然なアクション - 統計的に生成 バランス、目をまばたきする、歩き回りなどの アクションの生成が行える
アニメーションエンジン アクション合成 イメージ合成と似ている アクターの同時行動の支援 独占的 /アクションを共有できる 全体 一瞬 GROUP Stance ACTION Stand ACTION Walk GROUP Gestures ACTION No_waving ACTION Wave_left ACTION Wave_right GROUP Momentary ACTION No_scratching ACTION Scratch_head_left 全体 一瞬
行動エンジン 並列スクリプティングシステム 可能性に影響を与えているもの 多数のアクターの調整 スクリプトのグループ化 別のアクションを呼ぶことができる 階層状の行動 可能性に影響を与えているもの 決まっていない行動 決定規則 多数のアクターの調整
行動エンジン 対話型スクリプト ●1つ挨拶を例にとって説明 define SCRIPT “greeting” { { “enter” } { wait 4 seconds } { “turn to camera” } { wait 1 second } { “wave” for 2 seconds “talk” for 6 seconds } { wait 3 seconds } { “sit” } { wait 5 seconds} { “bow” toward “Camera” } { wait 2 seconds } { “leave” } } 挨拶 登場 4 カメラの方に向く 5 手を振る 話す 7 8 とどまる 11 おじぎ 出る time (sec)
行動エンジン スクリプトのグループ化を行うことができる DAY_PLANS Waking Morning Lunch ●1つ例にとって説明 DAY_PLANS Waking Morning Lunch Afternoon Dinner Evening ACTIVITIES Resting Working Dining Conversing Performing BEHAVIOR Sleeping Eating Talking Joking Arguing Listening Dancing
行動エンジン ●他のアクションあるいはスクリプトを呼ぶ アクターの特性をチェックする ●1つ例にとって説明 ●他のアクションあるいはスクリプトを呼ぶ アクターの特性をチェックする ●1つ例にとって説明 define SCRIPT “Curtain Call” {“walk to center”} -------他のアクションを呼ぶ {continue until {my location equals center} } {“turn to camera”} {continue until {“turn to camera” is done}} {“bow”} {continue for 3 seconds} {“walk offstage”}
行動エンジン どのような決断がアクターの行動に影響をあたえるか 次の行動が決まっていない動き 1つのアクションから任意に選ぶ 次の行動が決まっていない動き 1つのアクションから任意に選ぶ define SCRIPT “Rock Paper Scissors” {choose from {“Rock” “Paper” “Scissors”} } アクションに重みをつけることが出来る define SCRIPT “Rock Paper Scissors2” {choose from {“Rock” .5 “Paper” .3 “Scissors” .1 } }
行動エンジン ●アクターの調整 行動 エンジン Blackboard 他のアクター アニメーション エンジン ○アクターはもう一人のアクターの特性を修正する ことができる ○他のどのアクターか知っている ○共有ブラックボードを通じでコミュニケーション ○単一で多数のプロセッサー上で、あるいはネット ワークを介して動く Blackboard 行動 エンジン 他のアクター アニメーション エンジン
ユーザの相互作用 ユーザ・インターフェース要素を作成 多数のレベルからのアクターコントロール レベルが高いスクリプトから低スプリクトまでの管理 運動、身振り、アクターの大きなグループに対する管理 Blackboard 行動 エンジン 行動 エンジン 他のアクター アニメーション エンジン モデル モデル
実装 英語スタイルのスクリプト言語 ネットワーク分配 仮想同時性 システムの外から通信する たとえプログラマではなくても使える すべてのブラックボード情報の完全なコピーを保存 仮想同時性 どこでも世界中のただ1つだけの特徴 システムの外から通信する ブラックボードを通して通信する スタンドアロンのCのプログラムがメッセージを送る
まとめ アニメーションエンジンと行動エンジン リアルタイムにネットワーク上で動く、対話型システムを作った 将来の目的 商用アニメーション・ツールと結合 Javaブラウザーのためのクライアントベースのアプリケーション 英語スクリプトと音声認識の統合