Adsense

2014年12月13日土曜日

MMD と SL ~ モーション編

これは セカンドライフ技術系 Advent Calender 2014 の12月13日向けとして投稿するものです。

MikuMikuDance とセカンドライフを両方楽しんで遊ぼう「モーション編」です。
その関連の概要をご紹介するのが目的です。

ポーズとモーション

セカンドライフのモーション(アニメーション)って作成したことありますか?
ポーズや短いモーションなら QAvimator で作成したことがある人も多いと思います。基本的にはポーズもモーションも同じ仕組みです。ポーズは1フレーム(場合によっては数十フレームの最後の数フレーム)の無限繰り返しです。アニメーションはそれが30秒とか、最大60秒で繰り返しているものです。(ほとんどのセカンドライフのダンスアニメーションはループアニメーションです)

BVH ファイルとは

このセカンドライフのモーションはパソコンの編集ツールで BVH ファイルと呼ばれるものを作成して、それをインワールドにアップロードすることになります。セカンドライフでダンスモーションを販売しているところは、この BVH ファイルの作成に「モーションキャプチャー」を使って実際に人が踊っているダンスをデータ化し、セカンドライフにアップできるように変換・調整して作成されています。


BVHファイルはテキストファイルで「メモ帳」などのテキストエディターで内容を見ることができます。
ファイル構造そのものの詳細な説明は長くなるのでここでは省きますが、セカンドライフの標準ボーン(骨格、関節の位置など)の情報と、そのボーンが1フレームごとにどの位置・回転で移動するか、というデータの集まりになります。

MikuMikuDance のモーションファイル

一方、MikuMikuDance (MMD) はあにまさ式初音ミクモデルを踊らせるためだけに樋口M様が開発しました。その後、数年をかけてさまざまなアドオンや拡張があり、今では総合的な動画作成ツールとなっていますが、もともとは「ダンスモーション作成・編集ツール」だったのです。


そのため、MMD とモーション/ダンスのつながりは強く、数多くの MMD 用のモーションファイルが公開され、ダウンロードが可能になっています。

その公開されているモーションファイルの形式が VMD フォーマットと呼ばれています。

上述のようにもともとダンスアニメーションを作るためのツールだったので、MikuMikuDance にはダンスアニメーションを作りやすい仕組みが組み込まれています。セカンドライブの BVH ファイルにはない、モーション作成のための仕組みが数多くあります。

代表的なものとしては IK (Inverse Kinematics) と補間曲線です。簡単にいうと IK は足を動かしたいなら、足を動かしたいところに移動させると、ひざやふとももがそれに沿って動く、という仕組みです。(すごいざっくり) セカンドライフ用の QAvimator だとふとももを動かし、ひざを動かし、足の向きを、、という順になります。(Blender の Avastar は IK をサポートしています)

補間曲線は、人間の動きは「等速」ではなく、最初はゆっくり、だんだん速くなって、そして遅くなって、停止する、という速度の微妙な変化を「曲線」で表す手法です。この補間曲線の設定により、フレームごとに調整せずに、32秒から45秒の間はこの補間曲線で!という指定で済みます。ちなみにフレームは1秒間に30フレームとか、そういう単位です。13秒のあれば390フレームなので、ひとつひとつ調整しようとしたら気が遠くなりますよね。

このような情報を含んだ VMD ファイルですので、BVH ファイルの構造・フォーマットは全く違うのです。

VMD ファイルを BVH ファイルに変換する

それでも、セカンドライフとは関係のない世界で VMD ファイルを BVH ファイルに変換するツールが公開されます。BVH ファイルは「汎用的なモーションファイル」なので、他の 3DCG ツールでもインポートして利用できたからです。そのあたりは過去に私のブログでも紹介しているのでご参照ください。

mio を使った VMD->BVH 変換
http://snumaw.blogspot.jp/2012/03/windows7-64bit-mio-01-20123.html

難しいのは IK の計算です。BVH ファイルは汎用的であるため、IK によるデータを持ちえません。IK の仕組みで結果的に決定された各ボーンの位置や回転のそれぞれのフレームの「データ」が必要です。その計算を各ツールが実行しています。

また、私の知る限るでは VMD -> BVH 変換の際に補間曲線による速度の変化を実装しているものは知りません。補間曲線についてはサポートしていないものが多いと思います。

なお、セカンドライフの標準ボーンに合わせるために、MMDモデルの準標準ボーン「上半身2ボーン」の利用を勧めています。このあたりは次回の「メッシュ編」で触れることになります。

上半身2ボーンとchestボーンについて
http://snumaw.blogspot.jp/2012/09/chest.html

BVH ファイルをセカンドライフ用に調整する

ツールを使って VMD ファイルを BVH ファイルに変換して「やった!これでセカンドライフにアップロードできる」と一番最初の私も思いました(笑 でも、それだけじゃだめなんです。セカンドライフ用に調整してあげなければなりません。

その調整をしてくれるのが MMDBVHToSLBVH.EXE です。

やっていることはおおよそ以下です。
  • セカンドライフの標準ボーン情報に置き換える(関節名の変換など)
  • 回転などをセカンドライフ用にあわせる(右手、左手、、、とかいう話)
  • 30秒や60秒以上のモーションファイルを60秒以内の指定秒数に切り分ける
  • フレーム0に初期ポーズを入れる
元のアイディア、オリジナルソースは esetomo さん(SLでは いちご先生)が作成し、私が 60 秒対応とか、上半身2対応とかしたものが Git に上がっています。ちなみにプログラミング言語は C# ですが、私自身は得意ではありませんので、こんなの1から作れません(笑 本当に必要なところだけに手を加えた、という程度ですから。。。

このあたりの話は上記の「上半身2ボーンとchestボーンについて」のリンクとか、以下で過去にご紹介いたしました。

60秒対応したよ~
http://snumaw.blogspot.jp/2013/02/60.html

もしかしたらすごいかもしれない Blender + mmd_tools + Avastar Retarget

と、ここまでの話であれば、セカンドライフ ユーザーの方で結構やられている方もいらっしゃると思いますが、もうひとつご紹介したいツールがあるんです。

Blender と mmd_tools と Avastar の組み合わせです。

まず、以下の動画をご覧ください。


Avastar のセカンドライフ シェイプが踊っています。これは、mmd_tools を使って MMD のモデルとVMDモーションファイルをインポートして、まずは Blender の中で MMD モデルがダンスできるように設定します。その後で、Avastar を使って Avastar シェイプを追加して、MMDモデルとセカンドライフ シェイプの各関節のマッチングを指定して「Retarget」という機能を使ってダンスをさせたものなんです。


これ、、、VMD ファイルを直接 セカンドライフ用の BVH ファイルに変換できちゃうんです。

残念ながら、、、というか、変換したファイルはとても長いファイルなので、やはり MMDBVHToSLBVH.exe で細切れにする必要がありますが、Blender の中でアニメーションの修正ができるようですし(実はこのアニメーションの編集(NLA)方法をまだよく理解していないんです。。。)、もしかしたら、もしかする!と期待している方法です。

ただ、現在このエリアの興味が薄くなってきているので、、、まだ時間はかかると思いますが><

あと、私以外にもこのエリアでがんばっていらっしゃるユーザーさんがいます。


ツールのご紹介をいただいたのですが、私自身あまり試せていなくて申し訳ないです。

まだまだやれることいっぱいな MMD - SL モーション編でした。

[追記] 上記方法 Blender+mmd_tools+Avastar で変換したモーションでダンスした動画が以下になります~
http://youtu.be/Rkshfg-BfQE