"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つを同時に最適化していくことになります。

更なる工夫:肉揺れも取得することでよりリアリスティックに

更に MoSh のすごいところは、肉揺れ(マーカのぶれ)も取得するところです。

通常のスケルトンベースのモーキャプでは肉揺れはノイズとして処理され、失われてしまいますが、MoSh ではこの弱点を克服しています。これにより非常にリアリスティックな結果を得ることに成功しています。

論文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) が得られたという点が研究としての貢献だそうです。

最後に

一番面白い論文なのに、動画が動画配信サービス上にアップロードされていないのが残念です。

もしこの文章の読者で将来 SIGGRAPH で論文を発表することがあったときには、ぜひ YouTube 等のサービスで動画を公開してください。

論文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 のアイデアは「重要なウェブページからリンクされているウェブページは重要である」というものです。これをキャラクタアニメーションに当てはめるためにはリンクを定義する必要があるのですが、ここではモーションの類似度を用いて重み付きのリンクを定義しています。

空の Subversion レポジトリを git-svn しようとすると失敗する

まだコミットが存在しない空の Subversion レポジトリに対して

$ git svn clone [レポジトリの場所]

を実行すると、clone 自体やその後の commit は成功するものの、push しようとすると

Unable to determine upstream SVN information from working tree history

のようなメッセージ*1*2が出て失敗するようです。

参考:git - Unable to determine upstream SVN information from HEAD history - Stack Overflow

対処療法的ですが、簡単な解決方法は以下の通りです。

  1. 一回はおとなしく svn でファイルをコミットする
  2. レポジトリが空でなくなったところで再び git-svn を試す

もう少しスマートな解決方法があればコメント欄で教えて下さい。

*1:git: version 1.9.3 (Apple Git-50)

*2:svn: version 1.7.17 (r1591372)

論文読み: Computational Design of Linkage-Based Characters (SIGGRAPH 2014)

4次元プリンタ

私が勝手に提唱している「4次元プリンタ」という概念があります。(ありふれたアイデアなので別の人が全く同じアイデアを全く同じ言葉で既に発表しているかもしれません。またもっと的確な言葉もあるでしょうが、分かりやすいのでこの言葉を使っています。)

3次元プリンタはもはや常識になりつつありますが、3次元形状を出力するのに加えて、時間軸方向の動きも出力することを4次元プリントと呼びたいと思います。3次元プリントでは3次元形状データをプリントするのに対し、4次元プリントでは3次元アニメーションをプリントすることになります。

3次元プリンタを使ってフィギュアを出力している人達がいるようですが、もしこの4次元プリンタが実現されれば、踊ったり動いたりするフィギュアが出力することができるようになるはずです。

さて、Computer Graphics 分野で最高峰の国際会議である SIGGRAPH では、まさにこの4次元プリンタの実現を目指すような研究が近年発表されつつあります。今回はその中の一つ(今年発表された研究)を簡単に紹介します。

今回の論文

Bernhard Thomaszewski, Stelian Coros, Damien Gauge, Vittorio Megaro, Eitan Grinspun, Markus Gross
Computational Design of Linkage-Based Characters
SIGGRAPH 2014
http://www.disneyresearch.com/project/linkage-based-characters/

概要

Linkage-Based Character をデザインする手法を提案しています。

Linkage-Based Character とは、剛体同士がいくつかの関節で繋がっているネットワーク (= mechanical linkages) を使って動きを表現できるようなキャラクタのことです。言葉では難しいので動画を参照して下さい。

デザインされた Linkage-Based Character は実際に3次元プリンタで出力して、動かすことができます(もちろん動力源は必要ですが、繋がっている部分に対しては一つの動力で全体を動かせます)。

デザインの方法

まず始めに、全ての関節に動力源が与えられているような状態を考えます。

The design process begins from a given, fully-actuated mechanical structure performing some desired periodic motion.

続いて、反復的に、一つの動力源の代わりに剛体をつなげる (rigid links) ことで動力が関節を伝播するようにするということをしていきます。

Our design tool enables the user to successively replace the joint motors with new rigid links that mechanically couple the motions of different parts of the mechanical assembly.

論文読み: Projective Dynamics: Fusing Constraint Projections for Fast Simulation (SIGGRAPH 2014)

Sofien Bouaziz, Sebastian Martin, Tiantian Liu, Ladislav Kavan, Mark Pauly
Projective Dynamics: Fusing Constraint Projections for Fast Simulation
SIGGRAPH 2014

全体の概略

物理シミュレーションのための time integration の手法として、projective implicit Euler integration という新しい手法を提案しています。

これは implicit Euler integration の派生版で、特殊な potential energy と、projection の操作を含む Jacobi 法のような反復最適化が採用されています。

これによって高速でロバストで連続体力学ベースな物理シミュレーションを実現することができます。

実は Position-Based Dynamics (PBD) [Muller et al., 2006] とも計算方法が非常によく似ており、その違いについて論文内で非常に詳しく議論されています。

Matthias Muller, Bruno Heidelberger, Marcus Hennix, John Ratcliff
Position Based Dynamics
VRIPhys 2006

背景

物理シミュレーションを使って弾性体アニメーションを生成する方法はいくつかありますが、

  1. 連続体力学に基づいた有限要素法 (FEM)
  2. 幾何学的制約に基づいた Position-Based Dynamics (PBD) [Muller et al., 2006]

の2つが主流です。前者は昔からある方法で様々な改良 [Martin et al., 2011] がなされてきました。後者は近年急速に発展している [Bender et al., 2013] 比較的新しい手法で、PhysX, Maya nCloth, Havok Cloth, Bullet など様々な物理エンジンで採用されています。

Sebastian Martin, Bernhard Thomaszewski, Eitan Grinspun, Markus Gross
Example-Based Elastic Materials
SIGGRAPH 2011
http://graphics.ethz.ch/publications/papers/paperMar11.php

Jan Bender, Matthias Muller, Miguel A. Otaduy, Matthias Teschner
Position-based Methods for the Simulation of Solid Objects in Computer Graphics
Eurographics 2013 (State of the Art Reports)

今回提案されているのは、両者の良いとこ取りをしたような新しい手法 (= Projective Dynamics) となっています。

今回の手法のメリット

FEM の持つメリット

  • 連続体力学に基づいている (物理的に正しい)

を持ちながらも、PBD のメリットである

なども持ち合わせています。

手法について

手法は local/global optimization (または block coordinate descent) [Liu et al., 2013] というアプローチに基づいています。これは、まずは local な問題を個別に解いて、続いて全体としてのつじつまが合うように global な問題を解く、といったものです。

Tiantian Liu, Adam W. Bargteil, James F. O’Brien, Ladislav Kavan
Fast Simulation of Mass-Spring Systems
SIGGRAPH Asia 2013

local

通常の FEM によるシミュレーションでは弾性ポテンシャル W を計算してそれを最小化する (= rest shape に近づくような内力を計算する) ということが行われます。それに対し、今回の手法では constraint (C) に現在の configuration (q) を projection するという操作を行います。つまり、constraint manifold (C = 0) 上に存在する configuration (p) と現在の configuration (q) の距離 (d(p, q)) を考え、それを最小にするような configuration (p) を求める (= projection) ということを行います。これは特殊な potential を定義することで実現可能となります。また距離関数 (d(p, q)) を単純な quadratic function としてモデル化することで projection は非常に高速に計算可能です。

ちなみに制約は1つのシーンの中に沢山あって、それぞれ独立に projection することができるため、並列化が可能です。

実はこれは PBD で行われている projection という操作そのものだったりします。

global

では PBD と Projective Dynamics の何が違うかというと、次の global のステップ、つまり個別の projection によって得られた解をどう統合するかという部分が、決定的に違ってきます。

そもそも PBD では解の統合方法は

  • Gauss-Seidel 法
  • Jacobi 法

の2種類のうちどちらかが使われており、例えばオリジナルの PBD の手法は Gauss-Seidel、最新の論文 [Macklin et al., 2014] では Jacobi 法が使われています。今回の Projective Dynamics は Jacobi 法を使っています。

Miles Macklin, Matthias Muller, Nuttapong Chentanez, Tae-Yong Kim
Unified Particle Physics for Real-Time Applications
SIGGRAPH 2014
http://blog.mmacklin.com/flex/

PBD で Jacobi 法を使う際には単純に local の解の平均をとって global な解として使います [Macklin et al., 2014]。ここで、この global な解には慣性が考慮されていないことが問題となってきます。これによって、反復最適化を回せば回すほど、慣性とのバランスが不自然な結果になってしまいます。

そこで Projective Dynamics では global な解を探す際に運動方程式に基づいて慣性を考慮します。このおかげで慣性が保たれるだけでなく、弾性体の固さが反復の回数に依らず物理的に自然に表現できるそうです。

またこの global ステップは線形問題に帰着されますが、その行列はシミュレーション中は (制約が変わらない限りは) 不変のため、事前計算として行列分解をして持っておくことができます。

手法の限界

メリットだけ見ると非常に良い手法のように見えますが、

  • implicit Euler integration に特有の damping が発生する
  • メッシュの解像度が高いと外力の伝播のせいで収束に時間がかかる
  • 制約の状態が変わるたびに巨大な行列の分解を行う必要が出てくる
  • hard constraint を扱えない (全て soft constraint)

などの制約があります。また

  • まだ線形の物質しか定式化していない (非線形の材質はまだ)
  • rigid body はまだ扱えない
  • 流体はまだ扱えない (制約が動的に変わるので難しい)

などの課題があります。また PBD と異なり巨大な行列を保持しておく必要がある点も、状況によってはデメリットとなるかもしれません。



細かい部分まで読み込めていないので間違えて理解している部分もあるかもしれません。