キレキレダンスとアニメーション

先日、アイドルマスターシンデレラガールズ・スターライトステージ(デレステ)が「涼宮ハルヒの憂鬱」とコラボし、いくつかの楽曲がゲーム内で実装され、音楽ゲームとしてプレイできるようになった。

中でもアニメのエンディングテーマ「ハレ晴レユカイ」のダンスは評判で、「すごい再現度だ」とする比較動画は何度もTwitterのタイムラインに流れてきた。


確かにアニメをよく再現した、いいモーションである(ぼくは「ワープでループなこの想いは」のところのナナさんの動きが好き)。が、いざ並べてアニメのキレキレのダンスと比較すると、デレステのダンスMVはもっさりして見えるというか、どこか動きに精彩を欠くように感じられないだろうか?

過去記事では、2Dアニメーションと3DCGの差異について、顔のパーツを前に持ってくる技法や画角、カメラワークなど、主に2Dアニメの奥行き方向に関するトピックについて書いた。

xcloche.hateblo.jp

今回はアニメーションのモーションに着目して、モーションキャプチャでとってきた動きと典型的な2dアニメーションの動きの差異から、このデレステダンスの違和感について考えていきたい。

リミテッド・アニメーション

一番大きな違いは、一般的なアニメは24fpsで作られ(秒間24枚の絵を表示する)、この24枚の中でも2コマや3コマ同じコマが使われる(2コマ打ち、3コマ打ちいわれる、実質12fps/8fpsのリミテッド・アニメーション)に対して、デレステはフルの60fpsで3Dモデルが動いていることだ。ヌルヌルである。

3DCGでセルルックアニメーションを製作する際も、ヌルヌルさせず多少間引いたほうが「アニメとして自然に見える」という話題は、前回の記事でも挙げたのであった。

ただし、モーションキャプチャで取り込んだモーションを24fpsで再生するだけで「アニメのキレキレのモーション」になるかというと、(けっこうこれだけでそれっぽくなるのだが)話はそう単純ではない。

アニメの世界は、我々とは異なる物理法則のもとで動いているのである。

アニメーションのタメとツメ

リミテッドアニメーション(コマ数の少ないアニメ)は現実世界以上に、緩急を強調する傾向があるとされる。これらは「タメ」と「ツメ」となどいわれ、予備動作を長くして強調する(タメ)一方で、素早い動きは少ないフレームでサッと描く(ツメ)。

「緩急を強める」というのは、換言すれば、速いものはより速く(枚数少なく)、遅いものはより遅く(枚数多く)する、ということだ。

解説ページなどをいろいろ見るに、CGアニメーションのモーション製作の現場では緩急の強調は当然のように意識されている*1ようだが、ダンスモーションをモーションキャプチャからおこすとき、つまりリアルの動きをバーチャルに取り込む際、事後的にタメ・ツメを(強力に)補正することはあまりないように思う。(後述するが、もちろんタメ・ツメをしすぎないのにも相応の理由がある)

ここではあえて、モーションキャプチャや現実の動画撮影でとってきたリアルのモーションを無理やりにタメ・ツメ強調の2Dアニメ的モーション表現にしてしまうにはどうすればいいか考えてみたい。

タメとツメを補正する

参考:すごいもので、そういう研究をしている人がいる。 http://www.cgg.cs.tsukuba.ac.jp/projects/2013/motion_frame_omission/data/gcad.pdf

ダンスの動画をタメとツメで緩急をつけてキレキレにするアルゴリズムを考えてみよう。実装されたコードがパッと見つからなかったので、夏休みの自由研究とでも思って先行研究を参考にオレオレ実装をしてみる。どうデザインすればいいだろうか?

まずは動画のデータを読み込み、(前のフレームとの画素の差分などから)フレームごとに物体の速度を何らかの形の時系列で表現してみる(スピード関数を作る)ことからはじめよう。スピード関数をどう定義するかは考えどころだが、カットの切り替わりやカメラのズームイン/ズームアウトしてもあまり値が変わらない、標準的な物体の動きの挙動にロバストな指標にするのがよさそうである*2

先に述べた通り、タメ・ツメのいちばん簡単な特徴は、速いものをもっと速く、遅いものをもっと遅くすることである。これは、元のフレーム(60fpsの青い等間隔の点)から、24fpsの表現で使うフレームをサンプリングする(赤い点)際、スピード関数が大きいところはよく間引き、スピード関数が小さいところからはいっぱいサンプリングする、ということに対応する。

Image
青い点(60fpsの等間隔)からオレンジのスピード関数にしたがって、赤い点をサンプリングする

こうして不均等にサンプリングした集めた赤い点を等間隔に並べて再生すると、遅い動きの部分はゆっくりと予備動作を描写する一方で、速い動きの中間の表現は少ない時間(=少ない枚数)で表現される、というリミテッドアニメーション的なフレームのサンプリングが行えるワケである*3

補正との比較

AISTのダンスデータセットから適当に取ってきたダンス動画をタメツメ補正してみた。
aistdancedb.ongaaccel.jp

上が均等割24fps、下がタメツメ補正の動画である。
パッと見でもダンスがキレキレになっているのがわかる(23秒付近の首を左右に振るシーンなどがわかりやすい)。

デレステのほうはこんな感じである。

(正直24fpsにしただけでかなりヌルヌルの違和感がかなり減って上下の違いがあまりわからないのだが)手を上下に振るシーンや、雪美ちゃんのソロパート、30秒時点での三人の左右移動などがより躍動的になっているのがわかる。コマ送りでみると、手を振る中間の枚数が減らされているのを確認できる。

身体性の呪縛

もちろんここには動きのリアリティとのトレードオフがあって、緩急を強調すればするほど動きは(アニメ的には自然でも、リアルから見ると)不自然になってしまう。アイドルの3Dモデルを動かすゲームであれば、ヌルヌル描画の方が生っぽくて喜ばれる、という状況も大いにあるだろう。

が、アニメのもつケレン味ってこういうところ(緩急の強化など)から出でくるものでもあるし、モーションキャプチャで取ってきたデータをゴリゴリにタメツメ処理してみるのも面白そうだな〜、と、いろいろ遊んでみて思った次第である。

始めからアニメ/CG上でデザインされたモーションと比べると、モーショントラッキングで取ってきた動きには、人体の身体性による呪縛があるといえる。人間には難しいけれどもCGのモデルであればいとも簡単にできる、メチャクチャかっこいい、彼ら・彼女らのエクストリームなモーションが、気づかないうちに排除されている可能性があるのだ。

遊べそう

現状、目まぐるしくカットが変わったりフレームイン/アウトがあってスピード関数がうまい表現になっていないなあとか、そもそも姿勢推定をした方がいいカモとか、フレームの中間表現を生成したほうがいいカモとか、大事なフレーム検出の技術があるらしいぞ*4とか、いろんな興味があるので、気が向いたらこのあたりはまた触ってみたい。

*1:SHIROBAKOでもこれを扱ったシーンがあった(戦闘機の中で動物をキャッチするシーン?)記憶がある

*2:今回の例ではめんどくさいので特徴点の移動距離平均のような量を使っている。ここはかなり工夫の余地がありそう

*3:どの程度スピードによるサンプリングの傾斜をつけるか(グラフではスピードが最大値のとき、スピードが最小値のときの1/3しかサンプリングしない)はタメ・ツメ度合いを表すパラメータになっている

*4:https://ieeexplore.ieee.org/document/6909825