Real-Time

Real-Time Character Animation
Using Multi-layered Scripts
and Spacetime Optimization
Eric Menou 他
情報通信研究室 阿蘓 久志
発表の流れ
•
•
•
•
概要
System overview
Script language
Low-level motion generation
– Data blending
– Optimization
• 結論と課題
概要
オフラインでのアニメーション技術
・職人が動きの微細な箇所
まで一つ一つ表現
・完成度が高い
・非現実的な表現も意図的に可能
・処理に時間がかかる
高いレイヤでのオンライン
マルチレイヤスクリプトシステム
・複数のサブシステムを並列に処理
することで実現
・複雑なストーリや動作も表現可
・運動学の逆計算の量は膨大
・即時性にかける
提案するアニメーションシステム
・パイプライン処理による複数の結果に対して最適化を行う
・処理量の減少
・リアルタイム性の確保
LIVE architecture
LIVE: Life In Virtual Environment
Behavior or Direct Order
order
Script Engine
Select
Script
Instantiate
Scene
Class
Hierarchy
Action …
Action 2
Action1
Script …
Script 2
Script 1
Entity …
Entity 2
Entity 1
Space-time
Optimizer
Execution Action
Compute Motion
Render Shape
Execution
Engine
MCM 1
MCM 2
MCM …
Data Blending
Skelton
Object …
Object 2
Object 1
Shape
Shape
shape
Render Engine
Script language
Walker Script
WALK
2
[ENTITY] entity human
[VECTOR3D] position
[ACTION]
…
[WHILE] loop END_BRIK (first_step)
SUPERIOR(DISTANCEXY(POSITION(entitty),potsition),BD(entity,2_step))
/* left step*/
[BRIKMOCAP] left_step TRUEEND_CAPTURE
entity LEGS left_step DIRECTIONXY(POSITION(entitty),potsition))
NEXT [END]
/* right step*/
[BRIKMOCAP] right_step END_BRIK(left_step)END_CAPTURE
entity LEGS right_step DIRECTIONXY(POSITION(entitty),potsition))
NEXT [END]
END_BRIK(right_step)
entity RIHGT_ARM BONE(entity,RightArm,VECTOR(0,-2,0))
…
[ENDWHILE]
動作の表現方法
•
•
•
キャラクタを骨組みの集合と考える
各骨との接続点は可動範囲が決められている
それらのなす曲線はB-spline曲線を用いて表現する
一般的に使われている自由曲線(3次)
•
エルミート(Hermite)曲線
– 点Aを起点に、方向ベクトルABから出発し、方向
ベクトルCDの始点Cで終わるカーブを描く。セグ
メントの終点が点Cで終わるため、感覚的に曲線
の形がつかみにくい。ベジェ曲線と似ているが、
点BとCはコントロール点ではなく、コントロールベ
クトルとして使われている。
•
ベジェ(Bezier)曲線
– セグメントの始点と終点のみ通過する。エルミート
と似ているところは、線分ABを接線として発生し、
点B,Cに引っ張られながら、線分CDを接線として
終わる。四つの定義点によるポリゴンの形状から
描かれる曲線の形状を想像しやすい。
•
B
カットマル-ロム(Catmul-Rom)曲線
C
A
D
Bezier
B
C
A
D
B-spline
B
B-スプライン(B-spline)曲線
– 定義点をまったく通過せず、曲線は四点の内側
に発生する。定義点の移動に対して比較的緩慢
に変化するので、滑らかな曲線を微妙にコント
ロールしたい場合に最も適している。
•
Hermite
C
A
D
Catmul-Rom
– 四つの定義点のうち、二番目の点Bを起点に、次
の点Cまでの曲線を描く。
B
A
C
D
Data blending
複数のタスクが同時に実行
ひとつの骨に対して異なった動作を
しようとする
MCMライブラリとレンダラの間に新しいレイヤを設け
同時に相互に作用しあうことを可能にした
・それぞれのタスクに優先度を付ける
・それぞれのタスクに重みを付ける
Optimization
Qi (t ) 
c
P
j 0
i, j
N
j ,4
(t )
n p  n  ( 2  c  4)
np  n  c
If knots vector is optimized
If knots vector is not optimized
B-spline計算処理を少なくしたい
ノットベクトルを最適化しの個数を減らす
最適化する単位時間を長くとる
Spacetime-optimization
最適化処理に時間がかかる
B-spline計算処理が少なくなる
結論と課題
• マルチレイヤスクリプト言語と二つのアニメーション
システムを用いたより現実的な行動を見せるための
新しいシステムを紹介した
– Script language
– Data blending
– Space time optimization
• 今後我々は、実時間最適化に焦点をあて、突然の
状況の変化に即座に対応でき、さらには低位レイヤ
での実時間最適化を行えるよう開発を進める。
複数エンティティ最適化の一例