こんにちは!
フリーランスとしてVtuber制作をしているVtuberの解剖学者(@obakasahara)です。
さて、この記事ではVroidとBlenderで作った3DモデルをUnityでVRM形式にする作業を解説していきます。
今回は前回の記事の続きです。
前回はBlenderでFBX形式でエクスポートするところまで解説しました。
前回の記事から読みたい人はこちら!

今回の記事ではこの作業の山場である「UnityでVRM形式に出力」を解説しますね。
Unityを準備しよう!
まずはUnityを準備しましょう。
インストールしていない人は以下からインストールしてください。
Unityをインストールする方法は割愛しますね。各自調べてください!
UniVRMもインストールしよう!
UnityでVRM形式に出力するには「UniVRM」というBlenderのアドオン的なものが必要になります。
以下のサイトからインストールしましょう。
インストールしたら、Unityにインポートします。
まずはUnityで新規プロジェクトを作成し、「Assets→import Package→Custom Package」でインポートできるはずです。
最初から全てにチェックが入っていると思うので、そのままインポートしてください。
UnityにFBX形式のモデルをインポート!
次にFBXのモデルをインポートしていきます。
まずAssetsフォルダ直下にAvatarフォルダを作ります。
そのAvatarフォルダにまず、Blenderで編集する前のVroidでエクスポートしたモデルをドラックしましょう。
するとモデルに関する色んなフォルダが表示されますが、「モデル名.Textures」というフォルダのみ残して全て消しましょう。
これはどちらでもいいと思いますが、一応「Textures」という名前にリネイムしましょう。
ここで、Blenderで編集したときに追加したテクスチャがある時にはこのフォルダに入れましょう。
これによりモデルのテクスチャを配置することができます。
そうしたら、同じ場所にFBXのモデルをドラック&ドロップしてください。
するとモデルが現れるので、ダブルクリックしましょう。
ボーンの設定
次に右側にあるinspectorのRigタブを選択します。
Animation TypeをHumanoidにし、Applyをしましょう。
そのあとcofigureというボタンを押してください。
Applyをしないとcofigureというボタンは押せないので注意しましょう。
この画面に遷移するので、そのままDoneを押しましょう。
これでモデルにボーンが対応します。
マテリアルを生成
次にinspectorタブのMarerialを選択してください。
Locationを「Use External Material」、Namingを「From Models Material」に設定し、Applyしましょう。
この作業でフォルダにマテリアルが生成されるはずです。
シェダーの変更
その後にSceneにインポートしたモデルをドロップ&ドロップしてください。
このようにテクスチャがおかしくなるはずです。
ここでテクスチャなどが正しく表示される場合、次の作業は飛ばして大丈夫です。
モデルのテクスチャが変になっているのはテクスチャが剥がれているか、シェダーの設定が違うことが原因です。
シーン上で顔の部分を選択すると、シェダーやテクスチャを変更できます。
テクスチャが剥がれている場合
もしここでマテリアルのテクスチャが全て剥がれている場合、個別でテクスチャを貼っていきます。
テクスチャは「Albedo」を設定しましょう。
クリックするとテクスチャを選択できます。
これを全てのマテリアルに設定してください。
シェダーの設定
テクスチャを設定したら、シェダーを変更していきます。
このシェダーの設定により、テクスチャがきちんと表示されるようになります。
Vroid上でデフォルトであるマテリアルは「VRM/Mtoon」にしましょう。
おそらくこんな感じになるはずです。
これを修正するにはモデルのレンダリングタイプを変更します。
おかしく表示されているマテリアルのレンダリングタイプを全て「Transparent」にしましょう。
ここが初期設定では「Opaque」になっているはずです。
Cull Modeは基本「Back」でいいと思います。
するとこんな感じで表示されるはずです。
眉毛はまつげがピンクになっているので、これを変更するには先ほどのShaderメニューのColorを変更していきます。
おそらくShade Colorがピンクになっているので、これを黒とか濃い茶色とかにしましょう。
そうするときちんと表示されるはずです。
Blenderで追加した衣装のシェダーは?
ちなみにBlenderで追加した衣装のシェダーは「VRM/Mtoon」でなくても大丈夫です。
これは完全に好みになりますね。
僕の経験上だと、ShaderをStandardにしてEmissionのColorを服の色より少し黒よりにするのがいいと思います。
これは白シャツのオブジェクトの例です。
Standardを編集しないと、衣装が黒っぽく表示されるため、Emissionの色を服の色に寄せると綺麗に表示されます。
これが変更前です。
これが変更後です。
シェダーは奥深く僕も完全に理解できていない上、説明し出すとかなり長くなってしまうので割愛しますね。
後日、記事にまとめようかなと思います!
一度、VRM形式に出力
シーンにあるキャラクターを選択し、メニューにあるVRM出力からExport humanoidを選択しましょう。
Authorに名前を入れ、VRM出力します。
VRMで出力したら、もう一度そのファイルをドラック&ドロップでUnityに戻します。
もともとあったモデルやテクスチャは消しても大丈夫です。
ライセンス情報を埋める
モデルを選択し、右側に出てくるライセンス情報などをうめましょう。
こちらは埋めなくても、モデルの表示はされます。
各自必要な場合、埋めましょう。
表情を再設定
一度、FBXでエクスポートすると表情が取れてしまいます。
なので、Unity上で表情の設定を行う必要があります。
ライセンス情報の下の方にBlendShapeというメニューがあるので、ダブルクリックします。
ここで、BlendShape(表情)を設定することができます。
BlendShapeListからFace.bakedを選択し、各表情を選択してください。
100に設定すれば、表情が各BlendShapeに実装されます。
Blinkだったら、語尾が「All_Blink」を選択するいいと思います。。
他の表情もAllがついているものを選択しましょう。
物理演算を再設定
Blenderで編集したモデルはVroidでつけた物理演算は取れてしまいます。
なので、Unity上で物理演算を再設定する必要があるんですよね。
物理演算の実装方法はたくさんありますが、「VRM Spring bone」がおすすめです。
ここに書くととても長くなってしまうので、物理演算の設定を知りたい人は以下の記事を参考にしてみてください。

VRM形式で出力して完了!
最後に、もう一度VRM形式で出力します。
上2つのチェックが外れていますが、外したままで名前を入れて出力します。
これでVRM形式への変更は完了です。
Unityの作業が結構ネック!
さて、2つの記事に渡ってVRM形式の3Dモデルを加工する方法を説明してきましたがいかがだったでしょうか?
僕はUnityでの作業が結構大変でした。
ネット上にまとまった情報がないので、成功するのに時間がかかりました。
僕の解決策は載せましたが、これで100%解決するかはわかりません。
もし他にエラーが見つかったら、twtter(@obakasahara)にご連絡くださると嬉しいです!
コメント
記事を参考に自分でもVroidのセットアップができました!
Unity難しいかもと思っていたのですが、分かりやすい内容で本当に助かりました。
ありがとうございます!