【Unity】FBXアバターをVRMへ変換する方法のご紹介!

スポンサーリンク




こんにちは!
ケーキです♪♪

皆さまは”VRM”をご存じでしょうか?
最近ではVRMによる様々なアプリケーションも増えてきていて、VRMのモデルを一つを持っておくだけで色々なゲームを遊べたりします。

そんなVRMを作成する機会があったので、その手順をまとめておこうと思います!!

VRMとは

3DCGのフォーマット形式には様々な形式があります(fbx,obj,ply…)
そのプロットフォーム毎の差異によってアプリケーションへの対応・非対応があります。
プラットフォーム毎の差異を吸収・統合してアプリケーション側の取り扱いを簡単にしたプラットフォームが”VRM”になります。

UniVRMのDL~導入

今回のFBXからVRMへの変換に当たってはUnityを使用してやっていきます。
そのための必要なツールをダウンロードしましょう。(2019.11現時点での最新はv0.53.0)
Github – UniVRM

Unityの新規プロジェクトを作成し、ダウンロードしたUniVRMをインポートしましょう。
UniVRMのUnityPackageをダブルクリックすることで新しいウィンドウが出てきます。
チェックが全部に入っていることを確認して”Import”を押しましょう。

インポートが完了するとUnity上でVRMの取り扱いが可能になります。

FBXモデルの設定

まず最初にVRM化したいFBXアバターモデルをUnityへ入れ設定していきましょう。
今回VRM化を行っていくのはコチラのモデルになります。
ALL_Alone_Kuro様の分霊ちゃんを私が改変させていただいたモデル”くろちゃん(分霊)Ver.K”
くろちゃん(分霊)Ver.K

くろちゃん(分霊)にはUnityPackageが入っているのでそれをインポート。

他のモデルでやりたいという方がいたら、そのモデルのUnityPackageかFBXデータをUnityに入れてください。

Rigの設定

FBXモデルデータをUnityに入れたら、そのFBXモデルデータをクリックしRig(Bone)の設定をしていきましょう。

(画像のくろちゃんの場合もしくはUnityPackageでインポートした他のモデルの場合は既にRigの設定が終わっていることがほとんどでしょう)
FBXをD&Dで入れた場合などは設定が必要になります。

①Animation Typeを”Humanoid”に設定
②”Apply”を押す
③”Configure…”を押す

上記を行うとRig設定に飛びますので諸々設定しましょう。
基本的には左に書いてあるボーンに、モデルに付いている対応したボーンを当てはめていくだけになります。(VRChatでアバターをアップロードまで持っていった方ならわかるかなと)
Rig設定画面に飛びましたら左下にあるBody,Head,Left Hand,Right Handのリスト内ボーンを当てはめていきます。

VRC想定のモデルであればBody内のUpper ChestとHead内のJaw以外は埋められるかと思います。
(上記二つは何も入れないNoneで問題なしです。)

ボーンの当てはめが終わったら右下の”Done”を押して完了してください。

Doneを押した後はHierarchyにFBXモデルをドラッグ&ドロップしておきましょう。

マテリアル・シェーダーの設定

次にマテリアル・シェーダーの設定を行っていきます。
主に色や表現などの情報ですね。

モデルデータと同梱している”Materials”フォルダがある場合はその中のマテリアルをいじっていきます。

ない場合は先ほど作業したFBXモデルデータをクリックし、右のInspector内から”Material”タブに行き、Locationを”Use External Materials (Legacy)”に変更し”Apply”を押しましょう。
そうすることでFBXモデルデータと同じ階層にMaterialsフォルダが作成されると思います。

もしマテリアルにテクスチャが入っていない場合はドラッグ&ドロップしておきましょう。

次にマテリアルのシェーダーを設定していきます。
上記で用意したマテリアルをクリックし、右上Inspectorから”Shader”をクリック→VRM→MToon~UnlitTransparentWriteのどれかを設定します。
(基本的にはMToonでよいです。)

シェーダーをMToonに変更した後Inspector内をいじることでカラーを変えたり表現方法(てかり、透明部分)などをVRMに反映できます。
ちなみに半透明にしたい場合(くろちゃんの場合は頬染めなど)などはMToon設定後Inspector内のRendering Modeを”Transparent”にしましょう。

FBX→VRM変換(設定用)

マテリアル・シェーダーまで設定ができたFBXをVRMへと変換します。
変換する前に確認事項があります。

HierarchyにあるFBXモデルの位置・回転・拡縮などをTransformを見ながらあわせます。
位置:Position、X.Y.Z軸を全部0
回転:Rotation、X.Y.Z軸を全部0
拡縮:Scale、X.Y.Z軸を全部1
Scene上のモデルが軸方向に向いていること

上記が問題なければ、メニューバーよりVRM→UniVRM-0.53.0→Export Humanoidをクリック
新しく出てきた”VRM Exporter”内で”Settings”のツリーを広げ、AuthorにVRMモデル作者名を入力(今回私は”keiki002″としました)
その下に3つのチェックが入っていることを確認し、”Export”を押す。

“Export”を押すとVRM保存先を聞かれるので、作業Unityプロジェクトフォルダにでも新しくフォルダ作りそこに保存しましょう。(こうすると保存後すぐにUnityに読み込ませることができる)
別場所にVRMを保存した場合は、保存後VRMをUnityへドラッグ&ドロップしましょう。

保存・Unityへの読み込みが終わるとVRMファイルと同じ場所に”モデル名.prefab”ができると思います。
このprefabにて後に行う設定(表情・視線制御・揺れもの)を実施していきます。

では、まず上記のprefabをHierarchyにドラッグ&ドロップしましょう。
さきほどまで使用していたHierarchy内のFBXデータは非表示か削除をしても大丈夫です。

VRMモデルの設定

ここからは上記で作成した設定用VRMデータに諸々設定をしていきます。

VRMモデルの情報入力

まずはモデルの情報を設定してしまいましょう。
Hierarchy内に追加したモデル(prefab)をクリックするとInspectorに”VRM Meta(Script)”があります。
こちらにモデル情報を記入・選択していきます。

記入するところはこんな感じです↓↓↓
●情報(Information)

タイトル(Title)
-アバターモデルの名前を設定します

バージョン(Version)
-モデルのバージョンを文字列で指定します。 自由に記述できます。

作者(Author)
-モデルの作者の名前を記述します

連絡先(Contact Information)
-モデルの作者への連絡先を記述します

参照(Reference)
-何か「親作品」に相当するものがある場合は参照URLなどを記述します

サムネイル(Thumbnail)
アバターモデルのサムネイルを登録します。2048×2048程度の解像度を推奨します。

●使用許諾・ライセンス情報(License)
アバターの人格に関する許諾範囲(Personation / Charaterization Permission)

アバターに人格を与えることの許諾範囲(A person who can perform with this avatar)
-アバターを操作することはアバター作者にのみ許される(Only Author)
-明確に許可された人限定(Explictly Licensed Person)
-全員に許可(Everyone)

このアバターを用いて暴力表現を演じることの許可(Violent acts using this avatar)
-不許可(Disallow)
-許可(Allow)

このアバターを用いて性的表現を演じることの許可(Sexuality acts using this avatar)
-不許可(Disallow)
-許可(Allow)

商用利用の許可(For commercial use)
-不許可(Disallow)
-許可(Allow)

その他のライセンス条件(Other License Url)
-上記許諾条件以外のライセンス条件がある場合はそのライセンス文書へのURLを記述
-再配布・改変に関する許諾範囲(Redistribution / Modifications License)

ライセンスタイプ(License Type)
再配布禁止(Redistribution Prohibited)
-著作権放棄(CC0)
-Creative Commons CC BYライセンス(CC_BY)
-Creative Commons CC BY NCライセンス(CC_BY_NC)
-Creative Commons CC BY SAライセンス(CC_BY_SA)
-Creative Commons CC BY NC SAライセンス(CC_BY_NC_SA)
-Creative Commons CC BY NDライセンス(CC_BY_ND)
-Creative Commons CC BY NC NDライセンス(CC_BY_NC_ND)
-その他(Other)

Licence Typeは以下のサイトを見るとわかりやすいです。
CCL-クリエイティブ・コモンズ・ライセンス

VRMモデルの表情設定

ここではVRMモデルの表情を設定していきます。
Hierarchy内に追加したモデル(prefab)をクリックしInspectorにある”VRM Blend Shape Proxy (Script)”があります。
その中にある”BlendShape (BlendShapeAvatar)”をダブルクリックし、Blend Shape Editorを開きます。
このエディタにて表情を設定します。

BlendShapeEditor内にある”Select BlendShapeClip”から設定したい表情クリップを選択
その下にある”BlendShape”リストからシェイプキーが設定されているオブジェクト名を選択
設定したいシェイプキーの数値を入力またはスライダーを移動することで設定ができます。(設定した表情は下の表情ウィンドウで確認できます)

VRMモデルに初期から設定できるクリップには以下のものがあります。
NEUTRAL
-標準の表情を指定します。 待機状態で使うことを想定しています。

A, I, U, E, O
-リップシンクのあ・い・う・え・おの音声に対応します。

Blink
-まばたきです。

Blink_L, Blink_R
-片目だけつぶる動作です。(まばたきの左右)

Joy, Angry, Sorrow, Fun
-喜、怒、哀、楽です。

LookUp, LookDown, LookLeft, LookRight
-目線がモーフで制御されているタイプのモデルで使います。(目線の上下左右)

一人称視点の設定

ここでは一人称表示に関する設定をします。
VRMモデルを使用して一人称視点のゲームなどをプレイする際に、自分の視点からモデルの頭部が見えてしまうことがあるので
それを見えないようにするための設定を行います。
Hierarchy内に追加したモデル(prefab)をクリックしInspectorに”VRM First Person(Script)”を設定していきます。

FirstPersonBone
-通常頭ボーンを指定します。 一人称時にヘッドセットに追随させるボーンです。

FirstPersonOffset
-追随する位置をFirstPersonBoneの位置からオフセットします。 デフォルト値[0, 0.06, 0]は、Headから両目の間へのオフセットを想定しています。

Renderers
-一人称描画時のメッシュのOn/Offをコントロールする設定です。
-VRアプリでは、自分モデルの頭部の見えなくていい部分が見えてしまう問題があります。 VRMFirstPersonでは一人称時に頭を描画しないようにすることを支援する機能を用意しています。

Renderers内のオブジェクトは自動で選択されます。
その中の頭部のオブジェクト(ここではBody)には”ThirdPersonOnly”、それ以外には”Both”を設定しましょう。

ThirdPersonOnly…一人称時に描画したくない部分に指定します
Both…一人称と三人称で分ける必要のない部分に指定します

視線制御の設定

ここではVRMモデルの視線に関する設定をします。
VRMモデルでの視線制御には2つ方法があります。
①ブレンドシェイプで設定したLookUp, LookDown, LookLeft, LookRightを使った制御方法。
②目のボーンを使用した視線制御方法。

ここでは②の視線制御方法です。

Inspectorにある”VRM Look At Head(Script)”を設定していきます。
Hierarchy内で右クリックし”Camera”を追加します。(カメラ位置はVRMモデルの顔の前くらいに置きましょう)
Inspector”VRM Look At Head”のTargetに↑で設定したカメラを入力
HeadにはVRMモデルのHeadボーンを入力しましょう。

この時点でUnity上で再生を押しカメラを動かすと視線も動くようになっています。

またInspectorの”VRM Look At Bone Applyer(Script)”を使用することで視線の細かい制御が可能になります。

Left・Right Eyeに対応したボーンを入力し下記の数値を設定することで細かな動きを制御できる。

DegreeMapping
EyeBoneに回転を適用する際に角度を調節します。
HorizontalOuter: 横方向外向きの角度制限
HorizontalInner: 横方向内向きの角度制限
VerticalDown: 縦方向下向きの角度制限
VerticalUp: 縦方向上向きの角度制限

揺れものの設定

VRMモデルを製作の上で最後の設定になります。
ここでは揺れものの設定を行っていきます。(VRChatでいうDynamic Boneと同じところです)

HierarchyのVRMモデル内にある”secondary”を選択し、Inspector内にある”VRM Spring Bone(Script)”にて設定できます。

VRMモデル内の髪や服や尻尾など揺らしたい親ボーンを”Root Bones”に設定すれば即揺らすことが可能になります。
Root Bonesのsizeには揺らしたいボーンの数を入れましょう。

当たり判定の設定
手で髪などの揺れものを触りたい時などに設定する項目になります。
さっそく手に入れていきます。
手に対応するボーンにInspectorから”VRM Spring Bone Colider Group(Script)”を追加します。
Element内の”Offset”と”Radius”を変更することで当たり判定の大きさ・位置を設定できます。(手の位置まで持っていきます)

上記で設定した当たり判定を”VRM Spring Bone(Script)”に設定していきます。
Coliders Groupのsizeに当たり判定の数を入力し、設定した手の当たり判定を2つ入れます。

また、揺れものの動きの質感を変えたい場合は”VRM Spring Bone(Script)”の以下の項目数値を変更しましょう。
StiffnessForce
-揺れの固さ(値が小さいほど元の形に戻りにくくなる)

GravityPower
-重力の強さ(値が小さいほど重力の影響を受けない)

GravityDir
-XYZ軸ごとの重力補正値(オブジェクトのXYZ軸方向に値分の重力補正がかかる)

DragForce
-力の減衰(値が小さいほど抵抗が減る)

VRMモデルの最終エクスポート

設定お疲れ様でした!!

上記までの設定を反映させたVRMモデルを最終エクスポートしていきます。
HierarchyのVRMモデルを選択しメニューバーよりVRM→UniVRM-0.53.0→Export Humanoidをクリック

TitleやAuthorには最初のエクスポート時に入力したものが入力されています。
その下の”Force T Pose”と”Pose Freeze”にチェックが入っていないことを確認し、Exportを押す。

エクスポート先のフォルダを聞かれますので、好きな位置に出力しましょう。
エクスポートしてできたVRMファイルがVRMモデルデータになります。

このVRMモデルをスマホ用アプリの”VPocket”に入れるとこのようになります。

これでVRChatで使用しているアバターモデルを別のVRM対応のゲームで遊ぶことができるようになりました!!!

最後に

割と長くなってしまった・・・
VRMモデルは作るにあたってそれなりに設定項目が多いから今後の自分の備忘録も兼ねてまとめさせていただきました♪

今後はこのVRMモデルで何かできることなどを紹介できたらなぁと思います♪♪

ぜひぜひ皆さまもVRMモデルを持っていろんなゲームを楽しんでみませんか?

ではでは、今回はここまで
最後まで読んでいただきありがとうございました!!

スポンサーリンク