【VRoid & blender & Unity】VRoidキャラクターをUnityでフュージョンさせる

3 min読了の目安(約2700字TECH技術記事

はじめに

ゲームを作るハードルは年々低くなり、今ではほとんどのアセットをストアで購入して済ませてしまうこともできるようになりました。
サブキャラクターや背景、モンスターなどはそれでも十分かもしれません。
でも、主人公はやっぱりオリジナルのキャラクターにしたいじゃないですか。
ということで、VRoid Studioで作ったキャラクターをUnityで動かす方法を紹介します。

Unity,blender,VRoid Studioはインストールされている前提で話を進めます。
各バージョンは次の通りです
VRoid Studio 0.11.2
blender 2.90.0
Unity 2019.4.11f1

作業の一部始終を動画にしたのでこちらも合わせてご覧ください。

VRoidでアバターを作る

動画の最初の40秒くらいまでの内容です。
手順は以下の通り。

  1. VRoid Studioを起動する
  2. アバターを作る(今回はUnityで動かすのが目的なのでサンプルを使用)
  3. 撮影・エクスポートタブを選択する
  4. エクスポートを選択する
  5. データの削減が必要な場合、設定する
  6. VRMファイルをエクスポートする

Unityにインポートする

UnityにVRMをインポートします。

UniVRMをインストールする

その前に、UnityにインポートするためにUniVRMが必要です。
UniVRMはこちらからダウンロードできます。
https://github.com/vrm-c/UniVRM/releases

Unityにインポートする

動画の1分30秒あたりの内容です。
VRMをインポートするとUniVRMが自動でPrefabを作成してくれます。

blenderでモーションを作る

VRM_IMPORTER_for_Blenderをダウンロードする

blenderにもVRM用のアドオンが必要です。
こちらからダウンロードできます。
https://github.com/saturday06/VRM_IMPORTER_for_Blender

VRM_IMPORTER_for_Blenderをインストールする

  1. メニューから[編集]->[preferences...]を選びます
  2. [アドオン]を選び [install...]ボタンを押します
  3. ファイル選択ダイアログが開くのでダウンロードしたアドオンを選択します
  4. [テスト中]タブをアクティブにすると[VRM_IMPORTER]があるので有効にします

VRMをインポートする

動画の2分10秒あたりからの内容です。
メニューの[ファイル]->[インポート]->[VRM]で作成したVRMファイルを選びます

モーションを作る

モーションの付け方は割愛しますがUnityに持ってくるうえで以下の二点が必要です。

  • 1フレーム目にTポーズのキーを打つ(動画の3分35秒)
  • 最終フレームをモーションの長さに合わせる(動画の8分55秒)

アニメーションをエクスポートする

アニメーションはFBXでエクスポートします。(動画の9分30秒)
必要なのはアニメーションだけなのでアーマチュアのみ選択します(動画の9分45秒)

Unityでアニメーションする

作成したFBXをUnityでインポートします。
インポートしたアニメーションは次のように設定します。

  • [Rig]の[Animation Type]を[Humanoid]にする(動画の10分15秒)
  • アニメーションの開始フレームを[1]にする(動画の10分35秒)
  • [Animator Controller]を作る(動画の10分55秒)
  • Animator Controllerをキャラクターにアタッチする(動画の11分15秒)

blenderで二体目のモーションを作る

今回の一番のハマりポイントです。
二人の位置関係が重要なのでblender上で二体表示させて編集したいところですが、そうするとFBXでエクスポートするときに両方のアニメーションが出力されてしまいます。
そこでどうするかというと、

  • 出力したいアニメーションを選んだ状態で(動画の20分5秒)
  • [選択したオブジェクト]にチェックを入れて(動画の20分25秒)出力します。

分かってしまえばなんてことないですが、これに気付くまでにドハマりしました。

Unityで二体目のモーションを再生する

基本的な流れは一体目と同じなので違うところだけ説明します。

  • インポート設定の[Root Transform Position]の[Bake Into Pose] にチェックを入れる
  • [Based Upon] を [Original] にする
    (動画の22分5秒)

上記設定にすることでblenderで設定した移動値がそのまま反映されるようになります。
詳しくはUnityのマニュアルをご覧ください
https://docs.unity3d.com/ja/2019.4/Manual/RootMotion.html

最後に

UnityでVRoidを動かす記事は多数ありますが、blenderに複数オブジェクトを配置してイベントシーンのようなアニメーションを付ける内容が見つからなかったので記事にしました。

動画に関しては要点だけ説明した記事を参考にしても上手くいかなかったときに何が悪いのか分からず悩むことがあったので、あえてノーカットにしています。

ゲーム制作の敷居は下がりましたが、それでもまだまだ高いと言わざるを得ません。
VRoidアバターならばフルスクラッチモデルよりもはるかに安く発注できたりします。
モックなどであればVRoidで十分ということもあるでしょう。
上手く使えばコスト削減にも繋がるのではないでしょうか。