"Character Animation" セッション論文紹介 (SIGGRAPH Asia 2014)
来週月曜日(2014年12月15日)、私が所属する五十嵐研究室にて SIGGRAPH セミナーが行われます。
SIGGRAPH Asia 2014 - SIGGRAPH Seminar
これは、SIGGRAPH Asia 2014 で発表された全ての論文について、1セッションあたり15分以内にまとめて参加者同士で紹介し合うことで、最先端のグラフィクス研究を網羅的に俯瞰しようという会です。どなたでも参加可能です。
この記事では、私が担当する Character Animation のセッションについて、少しずつまとめていきたいと思います。
勉強会当日まで随時更新していきます。
セッション全体について
キャラクタ(主に人間)のモーションに関する研究を集めたセッションです。
最初の2つの論文は実世界の人間のモーションをいかに正確にキャプチャするかという研究です。
更に、最近の流行りである筋肉や腱のシミュレーションによるモーションの生成(論文3)や、アーティストが大量のモーションデータを組み合わせて効率良くアニメーションを制作するためのの手法(論文4)などを含んでいます。
論文1:少ないマーカーでモーションとシェイプの両方をキャプチャする手法
Matthew Loper, Naureen Mahmood, Michael J. Black
MoSh: Motion and Shape Capture from Sparse Markers
SIGGRAPH Asia 2014
目的:少ない数のマーカでモーキャプ
人間のモーションをキャプチャするのが目標です。モーションキャプチャには
- 体に少数(40〜80程度)のマーカをつけてビデオを撮影する
- 体に大量(数百)のマーカをつけてビデオを撮影する
- デプスセンサなど他の入力手法を使う(または併用する)
など色々なアプローチがありますが、今回は少数(47個、または67個)のマーカからモーキャプすることを目標にしています。このアプローチのメリットは、
- データの取得が簡単である
- 既存のモーションデータベースが活用できる
などです。
キーアイデア:パラメトリックモデルを使ってシェイプも取得する
MoSh の一番のキーとなるアイデアは、ビデオデータから動き (Motion) だけでなく体格 (Shape) も同時に推定するという点にあります。
しかし少数のマーカからシェイプを推定するのは困難です。そこで彼らは SCAPE と呼ばれる人間の体格のパラメトリックモデルを用います。
D. Anguelov, P. Srinivasan, D. Koller, S. Thrun, J. Rodgers, J. Davis
SCAPE: Shape Completion and Animation of People
SIGGRAPH 2005
http://robotics.stanford.edu/~drago/Projects/scape/scape.html
つまりマーカの位置を元に、SCAPE のパラメタもフィッティングするということです。実際に最適化問題を解く際には
- SCAPE のパラメタ
- ポーズ
- マーカの正確な位置
の3つを同時に最適化していくことになります。
論文2:デプスカメラと圧力センサを用いたモーションキャプチャ手法
Peizhao Zhao, Kristin Siu, Jianjie Zhang, C. Karen Liu, Jinxiang Chai
Leveraging Depth Cameras and Wearable Pressure Sensors for Full-body Kinematics and Dynamics Capture
SIGGRAPH Asia 2014
目的とアプローチ
論文1 (MoSh) では体にマーカをつけて撮影するアプローチでしたが、この論文は
- デプスセンサなど他の入力手法を使う(または併用する)
のアプローチによって精度の高いモーションキャプチャを実現することを目標にしています。
具体的には
- 3台の Kinect (赤外線方式)
- 両足に圧力センサ
を使ってモーションキャプチャを実現しています。この組み合わせのメリットは
- 比較的安価である
- 設定が容易である(全自動)
- 体にマーカなどを装着する必要がない (non-intrusive)
などが挙げられています。圧力センサをつけた靴を着用する必要があるため、真の意味で non-intrusive ではないと思いますが、それでも他のシステムに比べるとずっと non-intrusive です。
既存研究との比較
直接の比較対象として引用されているのは以下の論文です。
Xiaolin Wei, Peizhao Zhang, Jinxiang Chai
Accurate Realtime Full-body Motion Capture Using a Single Depth Camera
SIGGRAPH Asia 2012
この既存研究との共通点は
- デプスセンサを用いたモーキャプである
- 全身のモーキャプである
などが挙げられます。逆に差分としては
- デプスセンサの台数が多いので点群データの情報量が多い
- 圧力センサによって床との接触を正確に制約として解くことができる
- 体型(シェイプ)を最初にスキャンし、モーキャプ時に考慮している
- ダイナミクス(この場合は physics-based motion modeling)まで考慮している
などが挙げられます。
この既存研究に比べ圧倒的に良い結果が得られていることが論文で報告されているのですが、果たして上記4つの差分のうちどの要素がどの程度結果に貢献したかは判断が難しいところです。
余談:Kinect 同士で干渉しないのか
赤外線方式の初代 Kinect は、複数台同時に使用すると赤外線同士が干渉し合ってまともにデータが取れなくなるというのは常識 (?) だと思われていました。
しかし、論文には
We also found that in this configuration, interference of structured lights between cameras is not a major issue because each camera receives very little infrared (IR) light from other cameras.
と書かれています。つまり、実はあまり干渉しないそうです。これは盲点でした。実際にやってみるものですね。
論文3:沢山の筋肉をシミュレートすることによるモーションの生成と制御
Yoonsang Lee, Moon Seok Park, Taesoo Kwon, Jehee Lee
Locomotion Control for Many-Muscle Humanoids
SIGGRAPH Asia 2014
目的と背景:筋肉の働きを考慮する
物理シミュレーションによって、人間の動きをリアリスティックに再現し、制御することが目的です。
従来から簡単なモデル化(各関節にかかる力を直接考える)による人間の動きの生成・制御は行われてきたのですが、よりリアリスティックな結果を得るために、近年ではより現実世界に忠実なモデル化(各筋肉が生じさせる力から考える)が行われるようになってきました。
Jack M. Wang, Samuel R. Hamner, Scott L. Delpm Vladlen Koltun
Optimizing Locomotion Controllers Using Biologically-Based Actuators and Objectives
SIGGRAPH 2012
筋肉の力から考えることで、例えば「筋肉への負担を最小限にする歩き方」などを最適化によって生成することができたりする利点があります。
今回紹介する研究も、同様に筋肉を考慮した人間の動きの生成と制御に関するものになっています。
筋肉ベースだと何が難しいか(一般論)
1. 劣決定系の問題 (underdetermined system) である。体全体の自由度に対して筋肉の数が多い。
2. 筋肉の振る舞い (ヒル型 (Hill-type) の筋肉モデル) が非線形である。
3. コントローラのデザインが難しい。既存の関節ベースのものは使えず、筋肉のダイナミクスを考慮する必要がある。
提案手法
筋肉のシミュレーションによって動きを生成するロコモーション・コントローラを提案しています。
- 沢山の筋肉(100以上)に対しても動作する
- 非線形な筋肉モデルのダイナミクスを(線形近似したり自由度を制限せずに)扱っている
- 様々な目的関数を設定できる(例:消費エネルギーの最小化、怪我部位への負担の最小化)
などが従来研究との違いです。
研究としての貢献
個々の要素技術 (online quadratic programming, step-based balance mechanism, ...) というよりも、要素技術の組み合わせによって非常に良い結果 (robustness and applicability) が得られたという点が研究としての貢献だそうです。
論文4:複数キャラクタがインタラクションする複雑なシーンを効率良く作るためのシステム
Jungdam Won, Kyungho Lee, Jessica Hodgins, Carol O'Sullivan, Jehee Lee
Generating and Ranking Diverse Multi-Character Interactions
SIGGRAPH Asia 2014
目的:ラフなシーンの記述からキャラクタアニメーションを作る
例えば三次元グラフィクスを使ったアニメーション映画を製作しているスタジオがあったとして、ある映画の初期構想段階では
- 監督(または脚本家)がラフなシーンの記述を考える
- それをもとにアニメータ(または振り付け師)がラフなキャラクタアニメーションをつける
という工程が発生することがあり得ます。
ラフなシーンの記述とは、例えば
トムとジョンがぶつかる。
トムがジョンに指摘する。
トムがジョンを蹴り飛ばす。
デビッドが喧嘩に加わる。
などのハイレベル(抽象度の高い)な記述のことを指しています。
この研究の目的は、このようなハイレベルなシーンの記述からキャラクタアニメーションを製作するのを支援することです。論文ではそのためのシステム(インタフェースとアルゴリズム)を提案しています。
特に複数人がインタラクションするようなシーンを製作するのは
- キャラクタ同士の時間的同期をとる必要がある
- キャラクタ同士が空間的に正しく配置されている必要がある
などの理由でより困難です。この研究では特に複数のキャラクタがインタラクションを行うシーンに特化したシステムを提案しています。
全自動ではなく、半自動
提案システムは全自動ではなく、あくまで半自動のものとなっています。具体的には、入力に対して沢山の候補が提示され、ユーザはその中の一つを選択し、更に必要があれば編集を加えます。
全自動にしない理由は、
- 入力 (= 制約) に対する解集合の空間があまりにも大きすぎることから、そもそも一つの解を求めることがナンセンスであること
- 逆にその解空間から「良い」解を更に発見する余地を残しておくことでアニメータが感性や創造性を発揮できること
などが挙げられます。
提案インタフェース:ハイレベルな指示をグラフによって入力する
上述のようなハイレベルな記述を入力するために、イベントグラフを構築するためのユーザインタフェースを提案しています。
ここでのイベントグラフとは、各ノードがイベント (e.g. 歩く、蹴る、ぶつかる) などに対応している有向グラフです。ユーザはイベントを配置し、各キャラクタがどのイベントを通るかを有向エッジで結んでいくことで、ハイレベルな記述を翻訳していきます。
このイベントグラフは、データフロー記述言語かつビジュアルプログラミング言語と見なすことができると思います。
提案アルゴリズム:Generate-and-Rank アプローチ
提案システムは、入力されたイベントグラフを元にキャラクタアニメーションを生成します。
そこで彼らは、ただ結果を生成するだけでなく、generate-and-rank というアプローチをとります。これは名前の通り、
- 沢山の候補を生成する
- 候補のランキングを考え、上位のいくつかをユーザに提示する
というアイデアによるものです。これ自体は古くから用いられているアイデアだと思いますが、ランキングをどのようにつけるかが重要となってきます。
ランキングの計算
生成された大量のキャラクタアニメーションに対してランキングをつける際に、ランキングの上位いくつかについて
- 多様性がある(似たものがない)
- 解空間全体をバランス良くカバーしている
という条件を満たしている必要があります。これをクリアするために、以下の手法を用いています。
Qiaozhu Mei, Jian Guo, Dragomir Radev
DivRank: the interplay of prestige and diversity in information networks
KDD 2010
SIGKDD の論文が SIGGRAPH で引用されているのは珍しい気がします。
また、ランキングの指標(生成されたキャラクタアニメーションの重要度)として、PageRank を用いています。
Sergey Brin, Lawrence Page
The Anatomy of a Large-Scale Hypertextual Web Search Engine
WWW 1998
ページランク - Wikipedia
これは日本語 Wikipedia で項目があるぐらい有名な手法で、Google の検索エンジンに使われているそうです。論文の引用数も既に 12000 を超えており、コンピュータ科学の分野では非常に重要な手法であると言えます。
PageRank のアイデアは「重要なウェブページからリンクされているウェブページは重要である」というものです。これをキャラクタアニメーションに当てはめるためにはリンクを定義する必要があるのですが、ここではモーションの類似度を用いて重み付きのリンクを定義しています。