VRM - humanoid 3d avatar format for VR

VRMファイルを作ってみたい

VRMファイルのつくりかた(既存3Dモデルからのコンバート)

vrm workflow VRMファイルをつくるためには、UnityUniVRMを使用します。 おおまかな作業のながれは以下のようになります

  1. Unityで3DモデルデータとUniVRMを読み込む。Unity上で大きさやマテリアルなどを調整・設定する
  2. 一度UnityからVRMファイルを出力する(※正規化と呼びます)
  3. 上記出力した VRMファイルをUnityで読み込み、Unity上でVRM独自の設定(ライセンス・揺れ物・表情・目線など)を行う
    • 場合によってはここでUnity上でモデルを実際に動かして(再生して)挙動を確認する
  4. 設定が終わったら再度VRMファイルを出力する。すべての設定が埋め込まれたVRMファイルが出力されます。

ポイントは、 すでに作られた3DモデルをUnity上で調整し、Unityから出力するということと、一度VRMファイルを作り、それを再度読み込んでから細かい調整・設定を行うところとなります。


1.Unityで空のプロジェクトを作る

Unityを起動し、プロジェクトを新規作成します。New→Create projectをクリック。

2.UnityにUniVRMをインストール

package_import UniVRM/releasesから最新のunitypackageをダウンロードし、Assets/VRMにインストールします。 既存のVRMが存在している場合、あらかじめVRMフォルダを削除することを推奨しています。 UniVRM-XXX.unitypackageファイルをUnityにインポートしてください。

3.UnityでHumanoidとして扱えるモデルデータを用意します

FBX等のUnityで読み込めるHumanoidモデルを用意しUnityにインポートします。ボーンの設定もされている必要があります。また、必ずご自分で作られたモデル、ないし、加工しVRアバターとして使うことが許諾されているモデルデータをご用意ください。後述しますが、VRMファイル自体にライセンス情報を記述する項目がありますので、特にその項目については権利者自身が設定するようにしてください

インポート後、FBXのImport SettingsのRigタブでAnimationTypeをHumanoidにしてください。

FBXインポート時の自動認識が食い違うことがありますので、ボーンの設定が間違っていたら修正します

  • 前髪に顎ボーンが割り当てられる
  • 目のハイライトに目ボーンが割り当てられる

4.モデルデータを調整し、メニューから一度VRMをエクスポートする(※正規化)

3.で用意したモデルデータを一度Unityのシーンに配置します。その上で、以下の項目を調整します。

  • モデルの位置
    • モデルは原点に位置する
  • モデルのスケール
    • 1.0 = 1m
  • モデルの向き
    • モデルは+Zの方向に向いている
  • 質感(マテリアル/シェーダ)
    • 以下のシェーダの中から使用することを強く推奨します。
      • PBR
        • Standardシェーダー(Unity標準)
      • Unlit系シェーダー
        • VRM/UnlitTexture (UnityのUnit/Textureと同じ)
        • VRM/UnlitCutout (UnityのUnit/Coutoutと同じ)
        • VRM/UnlitTransparent (UnityのUnit/Transparentと同じ)
        • VRM/UnlitTransparentZWrite (アルファブレンディングかつZWriteありです。実体のある半透明物への適用を想定しています)
      • Toonシェーダー
        • VRM/MToon (照明対応トゥーンシェーダ)

調整が終わったら、UnityのHierarchyでモデルデータを選択し、メニューからVRM→Export humanoidを実行します

チェックボックスを設定してExportを押してください。

  • Force T Pose
    • 回転・スケールの除去前にモデルを強制的にT-Poseにします。
  • Pose Freeze
    • 回転・スケールの除去処理を実行するか否か。VRMの規約に合致するようにモデルを正規化する処理です。初回は必ずチェックを入れてください。事前にこの処理を通過させることにより各種コンポーネントが正しく動作するようになります。

Exportを押すと、VRMファイルが出力されます。ファイル名はわかりやすいように「(元のモデル名)_Normalized.vrm」などとしておくとよいでしょう。

5.先ほどエクスポートしたVRMを再度Unity上に読み込む

4.で出力したVRMファイルを、UnityのAssetsにドラッグ&ドロップするだけで、VRMファイルがインポートされモデルデータのPrefabが生成されます

さきほど4.で配置したモデルデータをいったん消し、VRMから生成されたPrefabをあらためてシーンに配置します。 すると、メッシュなどが正規化されたモデルデータが表示されます。

6.VRM独自の設定を行う

5.で読み込まれたモデルデータをHierarchyで選択すると、インスペクタにさまざまな設定項目があらわれます。また、secondaryには揺れ物の設定が入っています。これらを設定していきます。 少なくとも、タイトル・作者・ライセンス情報は埋めるようにしてください。特にライセンス情報は重要です!

  • Information(一般情報)

    • Title
      • アバターモデル名称。自由入力
    • Version
      • アバターモデルのバージョン。自由入力
    • Author
      • 作者名
    • Contact Information
      • 作者への連絡先
    • Reference
      • アバターの「親作品」となるようなものがあれば、その情報
  • License(使用許諾・ライセンス情報)

ほかに、

がありますので必要に応じて設定していきます。

7.Unity上で再生し挙動を確認する(※必要であれば)

AnimationClip/AnimationControllerをセットしたり、VRMLookAtHeadのTargetにGameObjectをセットしたり(視線がどこを向くかの設定)して、実際にUnity上で動作を確認します。 また、非常に簡単なテストスクリプト「AIUEO」と「Blinker」を用意しています。Add Componentから「AIUEO」を選んでセットすれば「あ」「い」「う」「え」「お」の口の形に順番に切り替わるアニメーションが、「Blinker」を選んでセットすれば定期的にまばたきのアニメーションが行われます。

8.VRMファイルを出力する

調整が終わったら、UnityのHierarchyでモデルデータを選択し、再度メニューからVRM→Export humanoidを実行します

このとき、「Force T Pose」と「Pose Freeze」のチェックは外してください。このチェックは初回(正規化)のときのみ使用します。 ファイル名を指定してVRMファイルを出力します

完成!

これでセットアップ済のVRMファイルが出来ました。対応アプリケーションに読み込ませてみましょう!

VRM - humanoid 3d avatar format for VR