MRが楽しい

MRやVRについて学習したことを書き残す

ユニティちゃんにPerfumeを踊ってもらう

ひと昔前、話題になりましたが、インターネット上にPerfumeのダンスモーションデータが無償公開されています。
japanese.engadget.com

前回、MMDのダンスモーションのUnityへの取り込みに失敗しましたが、こちらはUnityに取り込めるのでしょうか。
bluebirdofoz.hatenablog.com

結論、あっさり取り込めました。
f:id:bluebirdofoz:20170715040918g:plain
以下に改めて手順を書き出しておきます。

まずは以下からダンスモーションデータをダウンロードします。
www.perfume-global.com

モーションデータの形式はBVH形式となります。この形式の特徴はダンスの動作データとボーン構造が一つのファイルに含まれる点です。
・MOCAPデータファイル - TMPSwiki
 http://mukai-lab.org/wp-content/uploads/2014/04/MotionCaptureDataFile.pdf

早速、Blenderでデータを読み込みます。デフォルトでインポートから読み込み可能です。
f:id:bluebirdofoz:20170715040938j:plain

前述の通り、BVHを読み込むだけで、ボーンの構造体とモーションデータの両方が取得できます。
因みにそのままだとボーン構造がかなり大きいのでサイズ調整しています。
f:id:bluebirdofoz:20170715040955j:plain
肝心のボーン構造は……下半身部分のボーンが下から上に伸びる形になっているのが分かります。
その他もHuman mecanimのRigify構造に近いです。これは行ける気がします。
因みに、キーフレームがめちゃくちゃ多いのはモーションキャプチャで取得したデータだからと思われます。

これをそのままFBX形式のファイルとして書き出します。
f:id:bluebirdofoz:20170715041006j:plain

因みにこのとき、エクスポートの際、「アーマチュア」のみを選択してエクスポートすると、より良いです。
f:id:bluebirdofoz:20170715041029j:plain
こうすると今回必要なデータである、ボーン構造とモーションのデータのみをファイル出力できます。

Unityのプロジェクトに作成したFBXファイルをインポートします。
f:id:bluebirdofoz:20170715041056j:plain

FBXファイルを確認します。
Rigタブを選択すると、デフォルトでは Animation Type が「Generic」に設定されていることが分かります。
f:id:bluebirdofoz:20170715041110j:plain
また、ボーン構造のオブジェクトとモーションデータが含まれているのが確認できます。

さて、MMDモデルの時と同様、Human mecanimの適用を試みます。
Animation Type に「Humanoid」を選択して Apply をクリックします。
f:id:bluebirdofoz:20170715041120j:plain

反映が完了したら Configure をクリックして適用状況を確認すると……。
f:id:bluebirdofoz:20170715041133j:plain
めちゃ綺麗に適用されてます。Perfume編、完。
まぁボーン構造を見るに、初めからRigifyの構造を意識しているものと思われます。無駄なボーンも一切ありませんし。
この辺り、流石というか。MMDが特殊すぎるのか。

さて、これで取り込んだモーションデータはHumanoidリグに関連付いたモーションデータとなりました。
早速ユニティちゃんに使ってみましょう。
f:id:bluebirdofoz:20170715041149j:plain

ダンスモーションのための Animator Controller を作成します。
Projectのフォルダ内で右クリック->Create->Animator Controllerで新規のコントローラを作成します。
f:id:bluebirdofoz:20170715041200j:plain
Perfume Controller」とでも名付けておきます。

Animator Controllerにダンスモーションを設定します。
Perfume Controller」をダブルクリックで開き、ダンスモーションファイルをドロップで設定するだけです。
f:id:bluebirdofoz:20170715041220j:plain

ユニティちゃんのAnimator Controllerとして「Perfume Controller」を設定します。
f:id:bluebirdofoz:20170715041231j:plain

作業完了です。ゲームを再生してみると、ユニティちゃんが踊ってくれました。
f:id:bluebirdofoz:20170715041242j:plain

MMDのモーションデータに比べると非常にスムーズに利用可能です。これはやはり元々のボーン構造がRigifyに合っているからです。
逆に言うと、Perfumeのモーションはボーン構造が異なるMMDモデルには流用が難しいことになります。

この記事を書く前、Perfumeのダンスモーションを使った動画を探してみたのですが、ほとんど見つかりませんでした。
これは3D動画作成ツールとしてはメジャーなMMDでモーションが利用できないためだったということでしょう。
メジャー(であるはずの)ボーン規格でモーションデータを作成すると、よりメジャーな3D動画作成ツールで流用できないため、データが3D動画に利用されない……難儀な話です。