PerfumeをUnityで踊らせてみた
@bardothodolさんのブログ「PerfumeのBVHデータをUnityで動かしました。」をみつけて面白いと思ったので、DAZ Studioもインストールしたことだし、試しにやってみた。使ったフィギュアは無料配布されてる「Aiko3」。以下はその手順。
■手順概要
1.DAZ Studio 4 Pro をインストールする(2012年6月末まで無料配布中)
2.DAZ3DのストアからAiko3が同梱されている「Anime Star Fighter」(無料)をダウンロードする
3.Perfumeのサイトから3人分のBVHデータ(モーションキャプチャーデータ)をダウンロードする
4.DAZ Studio 4 Pro(以下DS)でAiko3のフィギュアデータを読み込み、服や髪、顔のテクスチャなどを設定する
5.引き続きDSでPerfumeのBVHデータをインポートし、アニメーションすることを確認する
6.DSのエクスポート機能を使ってUnity向けのFBXデータを出力する
(上記4〜6を繰り返して3体分用意する)
7.Unityで適当なAsetを使ってステージを用意する
8.New Asetのインポート機能でPerfumeのFBXデータ3体を読み込む
9.Perfumeフィギュアのプレハブが自動生成されるので、それらをステージに配置して再生する
■手順詳細
1.DAZ Studio 4 Pro をインストールする
- AMAZONでお買い物をする要領で無料商品を購入できる。DMメールが届くようになるがそれは仕方ない。
- 4万円相当のソフトが無料配布されていることに危険な匂いを感じたが、いろいろ調べてみてフィギュアツール業界の勢力図がわかってくると「これは営業戦略なのだな」というのがわかった。本体は無料で配布して、データを売るというビジネスモデルを試しているのではないかな。任天堂が3DSを1万円値下げしたのと同じ理由だ。宣伝効果は抜群だろうし、販売されてるフィギュアデータは魅力的で欲しくなる。そういうわけで無料であっても怪しくはない。
- 用途は人それぞれだが、BVHをFBXへコンバートするための目的でインストールしておいても良いと思う。
- ただし、フィギュアの世界はいろんな意味で奥が深い。情報を探すためにエロいサイトも丹念に読まなければならず、自分がエロおやじになったような気分になるのでご注意を。
2.DAZ3DのストアからAiko3が同梱されている「Anime Star Fighter」をダウンロードする
・DSにはデフォルトでGenesisというフィギュアが入っているので、これを使っても良いのだが、なんとなく素っ気ないのでアニメ調のAiko3を使ってみた。
・Genesisというのはご先祖様のようなもので、ここから派生していろんなフィギュアが作られている。Genesisにはモーフツールが備わっていて、背丈や体格を自由に調整できるのだ。
・このGenesisを下敷きにして個性を付加したものが、Aikoとか、Michaelとか、Davidとか、Sadieなどのキャラクターであり、やはりこれらもStoreで販売されている。
・販売されてるフィギュア関連データにはモデルデータの他にテクスチャやポーズや衣服などのデータがいろいろと同梱されている。購入する際には各商品ページの「 What's Included & Features」を確認したほうがいい。ほかの商品と内容が一部重複してることもある。
・また、Product Compatibility Chart には購入しようとする商品がどのデータに付属するものなのかが示してあるので要チェックだ。
・上記の表示はAiko4のチャートである。Victoria4がないと使えないことを示してる。 ここ重要。
・オリジナルのフィギュアを創りたいひとは、モーフツールが同梱されている Complateとか、Proとかを購入するとよい。
・ダウンロードしたファイルを解凍するとインストーラが出てくるので、これを実行してインストールする。このときインストール先のフォルダを聞かれるが、あまり悩まずに「Use default setting」を選択して実行すればよい。商品によってインストール後のフォルダ構成が様々で、本当にこのインストール方法で大丈夫なんだろうか?と不安になるが、DSにはこれらコンテンツファイルを管理する機能がついており、最初に読み込むときだけ「あのパーツはどこにあるんだ?」と探す作業が発生するが、以降はDSがコンテンツのある場所を覚えていて、使えるパーツを分類してメニューに表示してくれるようになる。
・購入時、インストール時、フィギュアに装着する時にDAZの敷居の高さを感じる。各コンテンツの拡張性、汎用性を考えるとコンテンツデータの構成が階層的になる必然は理解できるのだが、このデータ構成の複雑さが敷居の高さにつながっていると感じた。これを越えるには何度か購入して経験を積むしかないようだ。
3.Perfumeのサイトから3人分のBVHデータをダウンロードする
・下記のURLからPerfumeのモーションキャプチャーデータ(BVH)とサウンドデータ(WAV)をダウンロードする。このとき利用規約への同意が必要。
http://www.perfume-global.com/
・これらデータは宣伝目的とはいえ提供者の厚意によりに公開されているので、次の約束を守ること。
1.次のリンクを貼ってください。http://www.perfume-global.com
2.twitterユーザはハッシュタグ(#prfm_global_site)を用いて作品をツイートしてください。
3.私たちはウェブサイト上であなたの作品の主要な権利を保有します。 (ちょっと意味不明)
・提供者へ感謝しながらダウンロードしたファイルを解凍して適当なフォルダへ置いておく。(ダウンロードフォルダのままでもOK)
・ロード中に「Pose outside limits」という警告ダイアログが表示されることがあるので、その場合は「Leave limits on」を選択すればOK。登録アイテム数の上限設定があるようだ。
・裸のままだとアレなので、Aiko3の着せ替えをする。顔のテクスチャを貼ったり、髪の毛をつけたり、服を着せたり、ブーツを履かせたりして体裁を整える。
・各パーツは、フィギュアの部位を選択すると、その部位に装着できるパーツがSmartContentタブに表示されるのでこの方法でパーツを探すのが良い。
・SmartContentタブに表示されないパーツは、画面右側のContentLibraryタブから探す。例えば髪の毛の色を変更したい場合は、My Library → Pose → MAT Aiko3 Hair で選択できる。このとき、装着する対象はAiko3本体ではなく、髪の毛のパーツなので、髪の毛が選択された状態でなければならない。このあたりがわかりづらい。
・また、何で髪の色のパーツが「Pose」フォルダにあるかというと、DAZにはポーズデータでテクスチャを変更する裏技?があるからだ(と思われる)。
・この着せ替え作業の過程では、訳の分からない事態にいろいろ遭遇すると思うが、頑張って完成させよう。
・読み込み終わったら、画面最下部にある再生ボタンをクリックして踊ることを確認する。
6.DSのエクスポート機能を使ってUnity向けのFBXデータを出力する
・FileメニューのExport...を選択して、任意の出力ファイル名(例:aachan)を入力し、FBX OptionsダイアログでPropsとAnimationを含めて変換するように指定する。また、服とテクスチャをマージするチェックボックスもONにする。ちなみに服を含めると出力されるFBXファイルのサイズが2〜3倍になることに注意。
・ちなみに、各FBXのファイルサイズは次のとおり。
aachan.fbx 12.7MB
kashiyuka.fbx 24.4MB (戦闘服を着てるから)
nocchi.fbx 11.1MB
7.Unityで適当なAssetを使ってステージを用意する
・地面を置いて、skyboxを設定して、ライトを配置して、カメラの位置を決めて、フィギュアたちが踊る空間を用意する。お好みでAssetをいろいろ配置するとよい。
8.New Assetのインポート機能でPerfumeのFBXデータ3体を読み込む
・UnityのAssetsメニュー → Import New Asset からFBXデータを3体分インポートする。
・同様にしてダウンロードしたWAVファイルもインポートする。
9.Perfumeフィギュアのプレハブが自動生成されるので、それらをステージに配置して再生する
・インポートするとProjectビューに3DモデルのPrefabフォルダができるので、これをSceneビューへ放り込んでオブジェクトを作る。
・このとき、フィギュアが服を着てるときとそうでないときでスケールが変わるようだ。3Dモデルのオブジェクトを配置したときに、巨大な足が表示されてびっくりした。そういう場合は、PrefabのInspectorにあるScaleFactorで大きさを調整する。DSでFBXを出力するときのFBX Optionsを3体とも同じ条件にすれば問題が出ないと思われる。
・フィギュアの初期位置は3体とも同じ位置にすれば良い。このことに気づくまでずいぶん時間がかかった。アホである。
・WAVファイルは、カメラのAudio Sourceに放り込めば自動的に再生されるようになる。
・再生してPerfumeのダンスパフォーマンスを鑑賞しながらカメラ位置を調整する。 これで完了。
・ちなみにUnityのスクリプトは1行も書いてない。
・それと適切なカメラの位置を探すのにも時間がかかった。いっそカメラを複数置いて切り替えようかとも考えたが、演出にこだわり始めるとキリがないので思いとどまった。
・YouTubeにあがってる他の人のPerfumeDance動画をみると、地面にきちんとモデルの影が落ちてる。これは、BVHデータを使ってワールド座標系に変換する手段があるということ? それともドロップシャドウってアニメーションによる移動に追従しておこなわれるのかしら? UnityのPro版を買えばわかるんだが、今は不明。今後の課題としておく。
3体のメッシュ情報をInspectorビューで隅々まで比べてみたが設定は全く同じだし、途中でProjectビューのファイルを外部から編集したのがまずかったのかな? と思い、Unityのプロジェクトを新規に作り直してやってみたが相変わらず「あーちゃんがいない」。Unityでは許すけど他の動作環境では許してくれない深い訳があーちゃんのFBXに含まれているのかもしれない。
なんともお粗末な話だ。
しかし、そのおかげで「あーちゃん」が表示されない原因がわかった。 もしかして、あーちゃんはカリングされちゃってたりするんじゃないか?と思い付き、オブジェクトaachan の Inspectorビューを開いて、一番下にある「CullingType」を「AlwaysAnimate」に変更したところ、あーちゃんが出るようになった。なぜあーちゃんだけがカリングの対象になったのかよくわからんが、カメラの位置と画角の関係であーちゃんだけがクローズしていたようだ。Unityって、ある意味すごい。
完成品はこちら。