pdf(印刷用)

2014/12/16
コンピュータグラフィックス特論Ⅱ 第9回
キャラクタ・アニメーション
コンピュータグラフィックス特論Ⅱ
第9回 キャラクタアニメーション(2)
システム創成情報工学科 尾下 真樹
• CGによる人間などのキャラクタのアニメー
ションを実現するための技術
• キャラクタアニメーションの用途
– オンラインアニメーション生成(ゲームなど)
– オフラインアニメーション生成(映画など)
• どちらの用途でも使われる基本的な技術は同じ
(データ量や詳細度が異なる)
• ただし、オンラインアニメーションの場合は、インタラ
クティブに動作を決める必要があるので、そのための
工夫が必要になる
今回の内容
• キャラクタ・アニメーションの基礎
– キャラクタの表現
– モーションデータ
• キャラクタ・アニメーションのためのプログラミング
– 多関節モデル、ワンスキンモデルの表現
– BVHモーションデータの読み込みと描画
• モーションデータの作成
• キャラクタ・アニメーション技術
– モーションデータの変形
– キャラクタの自律動作制御
最終レポート課題
• レポート課題
– 講義で学習した内容を利用して、何らかのプログラムを作
成する
•
•
•
•
なるべく実用的なプログラムの方が望ましい
講義で学習した範囲外の技術を自分で勉強して使っても構わない
なるべく2つ以上の技術を組み合わせることが望ましい
昔自分で作成したプログラムの改良でも良い
(追加内容のみを評価対象とする)
– 1月12日(月) プログラム+スライド提出締め切り
• 発表(プレゼンテーション)
– 1月13日・1月20日の授業中
– 1人 発表 8分・質疑 5分(予定)
動力学を考慮したアニメーション
• 運動学(キネマティックス)
動力学を考慮した動作生成
– これまでに紹介してきた手法
– 多関節体の機構を扱うための手法(関節角度と
各部位の位置・向きの関係を扱う)
– 現在は、こちらが主に使われている
– 力学的に正しい動きが生成されることは保障さ
れない
• 動力学(ダイナミックス)
– 運動学に加えて、力学的な影響を考慮する手法
1
2014/12/16
コンピュータグラフィックス特論Ⅱ 第9回
動力学を考慮したアニメーション
• 主に2種類の方法がある
• 動力学シミュレーション
– 動力学シミュレーションによるアプローチ
– 動作最適化によるアプローチ
– 本物のロボットと同様に、制御理論に基づいて
関節のトルクを制御するコントローラを構築
– 動力学シミュレーションを行って動きを生成
• 多関節体の動力学
筋力
バランス
動力学
トルク
• まだ人間らしい動きを生成
するのは困難
• 結果をうまく制御することが
難しい
動作データ
数値積分
角加速度
動力学シミュレーション
数値積分
角速度
角度
 i  K i , goal  i ,curr   K i , goal  i ,curr 
運動学
PD制御
目標角度-現在角度に適当な係数を
かけることで各関節のトルクを決定
位置・向き
動力学シミュレーションの応用例
• ラグドール・シミュレーション
– 一部のコンピュータゲームで使われている
– 通常は、動作データを再生
– 衝突時に、物理シミュレーションに切り替え
• 受動的な動作のみで、能動的な動作は実現できない
• 倒れずに途中で回復して元に戻るような動作は実現
できない
衝撃発生
動作再生
[Hodgins 97]
動作最適化
• 動作最適化
– 関節トルクやバランスの不自然さを評価する関
数 f(姿勢) を設計
– f(姿勢) が動作全体に渡ってなるべく小さくなる
ように動作データを少しずつ修正する
• 計算に非常に時間がかかる
• 人間のような多関節体には、自由度が高すぎてその
まま適用するのは困難
物理シミュレーション
[Popovic 98]
動作データの変形
動作データの変形
• 動作データを編集したり、一度作成された動作
データをもとに新しい動作を実現したりするための
技術
–
–
–
–
モーション・インターポレーション
モーション・トランジション
モーション・リターゲッティング
動力学を考慮した動作生成
• これらは基本的にアニメーションソフト上で行う
動作データの編集のための機能
– リアルタイム処理で用いられることもある
2
2014/12/16
コンピュータグラフィックス特論Ⅱ 第9回
モーション・インターポレーション
動作補間の計算方法
• 動作補間(モーション・インターポレーション)
– 2つ(以上)の動作を混合して新しい動作を生成
• 例:ゆっくり走る動作と早く走る動作から、中くらいの
速度で走る動作を生成
• 任意の比率で混ぜ合わせることができる
• 任意の時刻 t の姿勢 pi を計算
– 時刻 t に対応する、各動作の時刻 ti を決定
– 各動作の時刻 ti 姿勢 pi を取得
– 各姿勢 pi をウェイト wi に応じて混合
• 腰の位置・回転の補間、各関節の回転の補間
– あらかじめ2つの動作を同期しておく必要がある
– 3点以上の回転の補間には、より高度な方法がある
• 同じタイミングにキーフレームが設定されている必要
動作1
動作1
0.7
動作2
動作2
0.3
合成動作
モーション・トランジション
• 各動作のウェイト wi を決める必要がある
• 動作遷移・合成(トランジション、ブレンディング)
• 何らかの動作パラメタ(速さ、距離、方向、高
さ、など)にもとづいて決定
– あらかじめ、n 個の動作データのそれぞれに、
k 次元のパラメタ fi を設定しておく(k ≦ n)
– 動作補間時に、 k 次元のパラメタ f が指定され
ると、指定パラメタを満たすよう、ウェイトを計算
܎ൌ
‫ܟ‬
→
‫ܟ‬ൌ
܎ଵ
・・・
܎௡
– 前の動作の終わりの腰の位置・向きと、次の動
作の始まりの位置・向きが一致するように、次の
動作の開始時刻の位置・向きを決定
– 時刻 t に対応する、前後の動作の時刻 ti とウェ
イト wi を決定し、各動作の姿勢を混合
動作2
遷移動作
動作2
• 前の動作の終了部分と、次の動作の開始部分が、
ほぼ同じになるように作成しておく必要がある
f
• 基本的な計算方法は、動作補間と同様
動作1
– 基本的な動作をあらかじめ作成
– 基本的な動作をつなげて長い動作を生成
– 動作と動作の間をなめらかにつなぐ手法
ା
動作遷移の計算
動作1
0.3
合成動作
動作補間の重みの決定
܎ଵ
・・・
܎௡
0.7
参考書 図4.12
動作遷移の姿勢補正
• 単純に前後の動作の姿勢を補間するだけで
は、動作遷移中の動作が不自然になる
– 前後の動作で地面に着いている足の位置が異
なると、動作遷移中に足が地面の上を滑るよう
な動作になってしまう
• IK計算により足の位置を補正
– 足が接地している間の足の位置を決定
– 足が接地している間は、足の位置をIKで固定
– 足が接地する前・後の一定時間は、足の位置が
動作遷移中の位置になるように、IKで修正
3
2014/12/16
コンピュータグラフィックス特論Ⅱ 第9回
モーション・リターゲッティング
• 骨格の異なるキャラクタ間で動作データを変換
– 例:モーションキャプ
チャデータを、元の
俳優の骨格から、
実際のキャラクタの
骨格用に修正
– 単純に関節角度をコ
ピーするだけでは、
足の位置がずれたり
するため修正が必要
モーション・リターゲッティング
• モーション・リターゲッティングの計算方法
• 動作最適化問題として解くのが一般的
– 最適化関数 f(動作) を定義
• 変形後の各姿勢が元の姿勢になるべく近くなる
• 変形後の各姿勢が元の姿勢の制約条件を満たす
(足が地面に接しているときの固定や、キャラクタ同
士の接触など)
• 動作中の前後の姿勢が連続的に変化するようにする
– f(動作) がなるべく小さくなるように、動作全体
を最適化(変形)
[Gleicher 98]
動作データの再生
• オンラインでの動作再生
動作データの再生
(キャラクタの自律動作制御)
– 動作を連続的に行う必要がある
– ユーザの操作や周囲の状況に応じて適切な動
作を行う必要がある
• ゲームなどでの一般的な方法
– あらかじめ基本的な動作データを多数用意
– 適切な動作データを順番に再生することで、連
続的な動作再生を実現
– 動作データの間がなめらかにつながるように作
成しておく必要がある
動作ツリー(動作グラフ)
• あらかじめ各動作データ間がつながるように
考慮して動作データとそのつながりを作成
– 動作の終了姿勢と次動作の開始姿勢を同じに
– 最初から動作グラフを計画的に考えて、各動作
データを作成する必要がある
立ち状態
歩く
パンチ
キック
キック
動作ツリーによる方法の問題点
• 動作ツリーの作成には多くの手間がかかる
• 一定動作の繰り返ししかできない
– ワンパターンな動きになる
– 特に衝突や外力などの力学的な
影響に応じた自然な動作が困難
• 自律動作の実現は困難
– 敵キャラクタや群集などを自律
的に動かすためには、適切な
動作ルールが必要になる
4
2014/12/16
コンピュータグラフィックス特論Ⅱ 第9回
自律動作制御
• 例:コンピュータゲームにおける自律動作制御
自律動作制御のレベル
身体制御
動作制御
行動制御
Non-Player Character
完全に自律的に動作を行う
必要がある
Player Character
半自律的に動作を行う必要
がある
(ex. プレイヤーの抽象的な
操作に応じて具体的な動作
を実現)
自律動作制御のレベル
身体制御
最終的に身体の
動きを生成
自身の身体の状
況を考慮
動作制御
行動制御
具体的にどのよ
うな動作を行う
かを決定
どのような行動
を行うかを決定
(AI)
動作範囲内の状
況を考慮
周囲の状況を考
慮
身体制御の課題
• 衝突や外力などの力学的な影響に応じた
身体制御(動作生成)
– 動力学シミュレーションを使う方法では、受動的
な動作は生成できるが、能動的な動作は生成で
きない
身体制御の技術
身体制御
最終的に身体の
動きを生成
自身の身体の状
況を考慮
動作制御
行動制御
具体的にどのよ
うな動作を行う
かを決定
どのような行動
を行うかを決定
(AI)
動作範囲内の状
況を考慮
周囲の状況を考
慮
身体制御の技術
• モデルベース手法 vs データベース手法
– モデルベース手法
• 何らかのモデル(プログラム)に従って動きを生成
• 個人ごとの動きの変化の実現などは困難
– データベース手法
• 大量のデータを用意しておくことで、問題を解決
• 準備が必要、適切なデータの検索・変形は困難
– ハイブリッド手法
• 両方をうまく組み合わせる手法
• どのように組み合わせるかは、難しい
5
2014/12/16
コンピュータグラフィックス特論Ⅱ 第9回
関連研究(モデルベース手法)
• 関節角度制御 [Jain 2009]
関連研究(ハイブリッド手法)
• シミュレーションと動作データの利用 [Zordan 05]
– 力学的要素を考慮して、
最適な角度(+速度、
加速度)を決定
– 最適化問題に帰着
– 衝撃後の動作を物理シミュ
レーションで計算(ODE)
– 後にうまくつながるような転倒
動作をデータベースから検索
• 動作データの選択と変形 [Arikan 05]
• 歩行制御モデル [Wang 2009]
– 動力学シミュレーションによる
歩行動作
– 安定性を上げるための工夫
– 衝撃・姿勢に応じたリアクション
動作データを検索
– 各部位に一定の速度を加えて
IK により姿勢を変形
ロボット工学との関連
関連技術(ハイブリッド手法?)
• ロボット制御とはやや目的や手段が異なる
• Endorphin, Euphoria
(Natural Motion 社)
– 基本的には、本研究と同様、
人間の動作制御モデルが
実装されている
– ロボット制御
Natural Motion Ltd
• さまざまなビヘイビアの制御モデルが用意されており、
ビヘイビアの種類やタイミングを指定することで、自動
的に動作が生成される(endorphin)
• 詳細な内部技術は公開されていない
• モデルベースなので、キャラクタの個性を出すことは難
しい?
動作制御
身体制御
最終的に身体の
動きを生成
自身の身体の状
況を考慮
動作制御
•
•
•
•
力学的に正確な制御が必要
現在ではごく単純な動作しか実現できていない
人間らしい動きの実現はあまり考えられていない
人間とはモータの機構も異なる
– アニメーション
• 力学的には厳密でなくても人間らしい動きを実現
– 動力学などの基礎的な理論はかなり共通
• 将来的にはヒューマノイドロボットの技術が
ゲームにも応用可能になる?
動作制御の課題
行動制御
具体的にどのよ
うな動作を行う
かを決定
どのような行動
を行うかを決定
(AI)
動作範囲内の状
況を考慮
周囲の状況を考
慮
• 状況に応じた適切な動作制御
(動作プランニング)
– 動作ツリー(動作グラフ)を使う方法では、限られ
た種類の動作しか行うことができない
– 作成に手間がかかる
立ち状態
パンチ
歩く
キック
キック
6
2014/12/16
コンピュータグラフィックス特論Ⅱ 第9回
動作ツリー(グラフ)の自動作成
• 長い動作データを解析して、動作グラフを自
動的に作成する技術
– 複雑なグラフも作成できる半面、計画的に設計
されているわけではないので、ゲームなどへの
利用は難しい?
– キャラクタをランダムに動かすような用途に有効
• 群集アニメーションなど
モーショングラフ
• モーショングラフ [Kovar 02]
– モーションキャプチャ
データは、有向グラフ
構造に変換できる
– ノードを順に遷移する
ことで、連続的な動作
を生成できる
• 遷移のルールが重要
モーショングラフの作成方法
• モーション中の各フレーム同士の姿勢間の
距離を計算(マッチウェブ)
– 姿勢同士の距離の評価
方法も重要
(a) 動作データは単に再生しかできない。
(b) 類似部分があれば、切り替え可能
(c) 類似部分に注目しグラフ構造に変換
モーショングラフによる動作生成
• データ構造
– ノード・・・姿勢
– エッジ・・・動作
• 一般的な動作ツリーとは逆
• 例:全主要部位同士の
距離の和など
• 動作生成
Kovar 02
• マッチウェブ中の極小点をモーショングラフ
のノードとし、ノード間の動作をエッジとする
– ノードを辿りながらエッジの動作を再生していくこ
とで、動作を生成
• 実際には、ノードの前後で、動作ブレンディングや、
足を地面に固定するための IK が必要
– ノード遷移のためのルールが重要
関連研究
モーショングラフの利点
• モーショングラフにおけるノード選択条件
–
–
–
–
歩行パスによる条件[Kovar 02]
手先位置の条件[Lee 05]
動作の種類の条件[Arikan 04]
音楽に合わせた動作
• モーションデータから自動的に構築できる
• 連続的な動作が無限に生成できる
– 毎回異なる動作が生成される
– 基本的には同じ動作の繰り返しだが、ノード数
が十分にあれば、十分に自然に見える
• デメリット
– 毎回異なる動作が生成される
• ゲームによっては必ずしも良いとは限らない?
[Kovar 02]
[Lee 04]
[Arikan 04]
– 適切な遷移ルールが必要(計算速度の考慮)
7
2014/12/16
コンピュータグラフィックス特論Ⅱ 第9回
行動制御
身体制御
動作制御
行動制御の課題
行動制御
• 動作ツリーの作成には多くの手間がかかる
• 一定動作の繰り返ししかできない
最終的に身体の
動きを生成
自身の身体の状
況を考慮
具体的にどのよ
うな動作を行う
かを決定
どのような行動
を行うかを決定
(AI)
動作範囲内の状
況を考慮
周囲の状況を考
慮
群集モデル
– 映画やコンピュータゲームでの群衆シーンで利用
• 個々のキャラクタの動きを作成するのは不可能
– 一定のルールに従って各キャラクタを制御
• 単純なルールでも、キャラクタ同士が相互作用し合っ
て、ある程度リアルな動きが生成される
Chronicles of NARNIA, 2005
• 自律動作の実現は困難
– 敵キャラクタや群集などを自律
的に動かすためには、適切な
動作ルールが必要になる
群集モデルの実現方法
• 多数の人間の動きをシミュレートする技術
Loads of the Rings, 2002
– ワンパターンな動きになる
– 特に衝突や外力などの力学的な
影響に応じた自然な動作が困難
• プログラムによる動作ルールの記述
– if (条件) then (動作) の形式の動作ルールを
多数、ゲームなどのプログラム内に直接記述
• GUI環境による高度な動作ルールの記述
– 群衆アニメーションソフトMassive が有名
– 多数の映画で使用されている
– 状態マシン+ファジィルール に
よる条件を、GUI画面上で記述
– かなりの知識や労力が必要
NINETY-NINE NIGHTS, 2005
Massive
関連研究
• 行動ルールの自動学習
– 逆強化学習 [Lee 2010]
• 動作計画のための
評価基準を自動学習
• 高度なルールベースの手法
– 視界にもとづく動作
決定 [Ondrej 2010]
まとめ
• キャラクタ・アニメーションの基礎
– キャラクタの表現
– モーションデータ
• キャラクタ・アニメーションのためのプログラミング
– 多関節モデル、ワンスキンモデルの表現
– BVHモーションデータの読み込みと描画
• モーションデータの作成
• キャラクタ・アニメーション技術
– モーションデータの変形
– キャラクタの自律動作制御
8
コンピュータグラフィックス特論Ⅱ 第9回
2014/12/16
次回予告
• 衝突判定
– 近似形状による衝突判定
– 空間インデックス
– ポリゴンモデル同士の衝突判定
• ピッキング
9