VRM形式の3DモデルをFBX形式に変換する方法【Blender】

BlenderでVRM→FBXに変換 ゲーム開発

今回は久しぶりに3DCG(特にVRoid)に関する話題で、タイトルのとおり

VRoid Studioで作ったVRM形式の3DモデルをFBX形式に変換する方法

をご紹介するという内容になっております。

まず、個人的にVRoid Studioで作った3DモデルはUnityに持っていって自作ゲームに使うことが多いです。しかし作った3Dモデルが(VRoid Studioで出力できる)VRM形式のままだと

  • インポートに専用パッケージの導入が必要
  • インポートに時間がかかる
  • インポート後のプレハブに不要なコンポーネントがたくさんついている

といったデメリットがあり扱いづらいし不便だなと感じていました。

そこでVRMをFBX形式に変換する方法を考えたところ、Blenderを使えば意外と簡単に変換できることが分かったのでやり方を皆さんにも共有しておこうと思いました。

このような次第でここではBlenderを使ってVRMファイルをFBX形式に変換し、Unityで扱いやすくするための方法を解説していきますね。

はじめに:そもそもVRMとは?

はじめにVRM形式について簡単に解説しておきましょう。VRMは「一般社団法人VRMコンソーシアム」が策定したVRアバター向けの3Dモデルの規格です。

VRMのメリットは、従来の3Dモデル用の規格が持つ一般的な機能に加えて下記のような特徴がある点です。

  • 視線設定など一人称で操作するアバターに必要な情報を扱える
  • スケールや座標系などが統一されており、VRM形式のアバターを配信・ゲームなどあらゆるプラットフォームで使用できる
  • アバター特有の権利情報をVRMファイルに埋め込める

VRMのデメリット

上記のようにVRM形式にはいくつかの明確なメリットがあり規格としては優れていると思います。しかし残念ながらあまり世間に浸透しているとはいえず、実質VRoid用の独自規格みたいになっている感は否めません。

そして冒頭にも書いた通り、UnityでVRMを扱う際は専用パッケージを導入する必要があったり、インポートした3Dモデルにゲーム開発にはあまり必要ないコンポーネントがたくさんついていたりするので扱いにくいという欠点があります。

VRoid Studioは3DモデルをVRM形式でしか出力できない

このような次第で本当はVRoid Studioで3Dモデルを出力する際にVRM以外の形式を選択できればいいのですが、執筆時点ではそのようになっておらずVRM形式でしかエクスポートできないので、一旦VRM形式で出力しておいて自力でFBXなど他の形式に変換する必要があります。

VRMをFBX形式に変換する方法

さて前置きが長くなってしまいましたがここからが本題です。VRMファイルをFBX形式に変換するための具体的な方法について書いていきますね。主な手順は次のとおり。

  1. VRoid Studioで3Dモデルをエクスポートする
  2. 「VRM Add-on for Blender」をBlenderに導入する
  3. VRMファイルをBlenderにインポートする
  4. インポートした3DモデルをFBX形式でエクスポートする

それぞれ詳しく見ていきましょう。

手順1:VRoid Studioで3Dモデルをエクスポートする

まずはVRoid Studioで普通に3Dモデルをエクスポートします。画面右上のエクスポートアイコン→「VRMエクスポート」を選択して必要な設定を行い、VRM形式で出力しましょう。

VRoid StudioでのVRMエクスポートのやり方

ちなみに3Dモデルをゲーム用に使う場合はVRMエクスポートで最適化を行ったほうがいいと思います。そのやり方は下記の記事で詳しく解説していますので併せてご覧ください。

手順2:「VRM Add-on for Blender」をBlenderに導入する

次にBlenderに「VRM Add-on for Blender」というアドオンを導入します。

これはBlender上でVRM形式のファイルを扱えるようになるアドオンです。導入方法は下記ページに詳しい解説があるのでそちらをご覧ください。

手順3:VRMファイルをBlenderにインポートする

無事導入できたら、メニューバーの「ファイル」→「インポート」→「VRM」という項目が出現するのでそこからVRMファイルを読み込みましょう。

VRMファイルのインポート方法

しばらく待つと下記のように3Dモデルが読み込まれます(※表示はゴチャゴチャしていますが問題ありません)。

インポートしたVRMモデルの例

手順4:インポートした3DモデルをFBX形式でエクスポートする

ここまできたらあとはエクスポートするだけです。エクスポート方法は、「ファイル」→「エクスポート」→「FBX」を選んで下記のように設定します。

  • 内容:「アーマチュア」と「メッシュ」のみを選択
  • トランスフォーム:「FBX単位スケール」を選択
  • アーマチュア:「リーフボーン追加」のチェックを外す

内容:「アーマチュア」と「メッシュ」のみを選択

アーマチュアとメッシュだけを選択

Unityに持っていく場合はアーマチュアとメッシュ以外は必要ないのでこの2つだけを選択します。

トランスフォーム:「FBX単位スケール」を選択

FBX単位スケールを選択

キャラクターの場合は「FBX単位スケール」を選択することで、Unity上で回転やスケールがおかしくなるのを防ぐことができます。

アーマチュア:「リーフボーン追加」のチェックを外す

リーフボーン追加のチェックを外す

リーフボーン(=指先などに追加される補助的なボーン)はUnityでは不要なのでチェックを外しておきます。


これでVRM形式の3DモデルをFBXに変換できました。

おまけ:変換したFBXファイルをUnityにインポートする方法

上記の手順で変換したFBXファイルはUnityに放り込んでリグを「Humanoid」に変更すれば普通に使うことができます。

ただしUnityにインポートするとテクスチャ情報が飛んでしまうようなので別途テクスチャを持ってきてUnityにインポートしてください。テクスチャは、BlenderにインポートしたVRMファイルがある場所と同じ階層に作られるフォルダの中にあります(※下記はゲーム用に最適化した場合に生成されるテクスチャ。枚数などはエクスポート時の設定によって変わってくると思います)。

VRoidモデル用に出力されたテクスチャ

上記のうち「Image_0」が顔用、「Image_3」が体用のテクスチャとなっています。これをUnlitシェーダーを適用したマテリアルに設定すると下記のような見た目になります。

テクスチャの不要な部分が切り抜かれていないので汚い見た目になってしまっている場合の例

黒い部分が出てしまうのはテクスチャの不要な部分を切り抜く設定になっていないためです。そこでマテリアルの「アルファクリッピング」にチェックを入れると下記のようなきれいな見た目になります。

マテリアルにアルファクリッピングを設定
アルファクリッピングを設定した場合の3Dモデルの見た目

ただ髪の毛などは裏面が描画されておらずスカスカな見た目になってしまっているので、体用のマテリアルに関しては「レンダー面」を「Both」にすると期待通りの見た目になります。

マテリアルのレンダー面をBothに変更
レンダー面などを設定したことで期待通りの見た目になった場合の例

おわりに

以上、VRoid Studioで作ったVRM形式の3DモデルをFBX形式に変換する方法をご紹介しました。変換にはひと手間かかりますが3DモデルをFBX形式にしておくとUnityで格段に扱いやすくなり便利なので、ぜひ皆さんも試してみてください。

この記事がゲーム開発のお役に立てば幸いです。