UniVRM
Unity で VRM 形式のモデルをインポートあるいはエクスポートするためのパッケージ。各種エディタ拡張や glTF (.glb) 形式のエクスポート機能なども含まれる。
参考:
vrm-c/UniVRM: Unity package that can import and export VRM format – GitHub
目次
- 1 概要
- 2 ダウンロード
- 3 インストール
- 4 導入
- 5 使い方
- 6 入門
- 7 仕組み
- 8 VRM モデルをインポートする
- 9 VRM モデルを作成する (変換/エクスポート)
- 10 サムネイル画像を設定する
- 11 VRM モデルの再インポート/モデルデータの更新
- 12 VRM を実行時に読み込む
- 13 シェーダー/マテリアル
- 14 エクスポート
- 15 MToon シェーダー
- 16 テクスチャ
- 17 表情モーフの設定/編集
- 18 URP で使いたい
- 19 glTF (.glb) をエクスポートする
- 20 ポリゴンを両面描画する
- 21 BVH/モーションキャプチャーデータ
- 22 サンプル
- 23 API
- 24 ドキュメント
- 25 リンク
- 26 VRM Spring Bone
- 27 Mesh Utility
- 28 VRMSpringBoneCopy
- 29 CopyVRMSettings.cs
- 30 VRMViewer
- 31 MToon to HDRP Shader Change Supporter
- 32 Change_MToonToUTS2
- 33 VRoidMaterialChanger
- 34 Shader Graphs MToon for URP VR
- 35 VRM Tool Kit
概要
参考:
ダウンロード
v0.80.0 以降では Unity 2019 LTS より新しいバージョンの Unity に対応している。
1.0 ベータ版
- VRM-X.YY.Z_xxxx.unitypackage (VRM-1.0Beta)
v0.87.0 以降
- UniVRM-X.YY.Z_xxxx.unitypackage
v0.81.0 以降
2つのパッケージをダウンロードして順にインポートする。
- UniGLTF_VRMShaders-X.YY.Z_xxxx.unitypackage
- UniVRM-X.YY.Z_xxxx.unitypackage
v0.80.0 以前
- UniVRM-X.YY.Z_xxxx.unitypackage:UniVRM のメインパッケージ
- UniVRM-samples-X.YY.Z_xxxx.unitypackage:UniVRM を使用するサンプル
参考:
Releases · vrm-c/UniVRM – GitHub
インストール
パッケージを新しいバージョンに更新する場合は事前に古いバージョンを削除する。
参考:
導入
参考:
キャラの作成方法と Unity で操作する方法 | CG メソッド
VRoid Studio で作成したモデルを Unity で動かすまで | YouDoYou BLOG
VRoid で作ったキャラを Unity のアニメーションを適応してみるよ | すたじお・くろす
Unity で VRM ファイルをインポートして使うときの覚え書き – Qiita
UniVRM を使って Unity で VRM モデルを編集する | MR が楽しい
Unity に VRM 形式の 3D モデルをインポートする | 気ままなシュミログ
使い方
参考:
自分のアバターを VRM にしてもっと遊ぶ 表情・揺れモノ編 | WhiteAtelier Archives
入門
参考:
パーティクルライブを VRoid Studio と STYLY で作る | STYLY
仕組み
参考:
フォルダ構成 · vrm-c/UniVRM Wiki – GitHub
VRM モデルをインポートする
参考:
VRM ファイルを Unity で編集できるようにする | 神楽ゆのん
UniVRM を導入して VRM ファイルをインポートする方法 | StarGazer
VRM モデルを作成する (変換/エクスポート)
参考:
人型アバターの FBX ファイルを VRM ファイルに変換する | STYLY
FBX アバターを VRM へ変換する方法のご紹介! | ケーキの PC 情報集会所
Vroid と Blender で作った 3D モデルを Unity で VRM 出力する方法 1 | Vtuber の解剖学
Vroid と Blender で作った 3D モデルを Unity で VRM 出力する方法 2 | Vtuber の解剖学
サムネイル画像を設定する
参考:
VRoid からエクスポートした VRM ファイルに任意のサムネイルを設定する | Play Rough
VRM モデルの再インポート/モデルデータの更新
Issue #56 に対応して、VRM モデルを再インポートした際に既存の BlendShapeClip, BlendShapeAvatar, Material が存在する場合に自動的には上書きされない仕様になっている。更新した VRM モデルのデータで置き換えたい場合は該当するアセットを VRM モデルの再インポート前に削除しておく。
参考:
設定した関連コンポーネントのプロパティが失われる · Issue #56 · vrm-c/UniVRM – GitHub
VRM を実行時に読み込む
非同期読み込み
バージョン 0.44 以降で LoadAsyc
を使う場合、次のような非同期関数でモデルを読み込む。
private async Task<GameObject> LoadVrmAsync(string vrmFilePath) { var parser = new GltfParser(); await Task.Run(() => { var file = File.ReadAllBytes(vrmFilePath); parser.ParseGlb(file); }); using (var context = new VRMImporterContext(parser)) { await context.LoadAsync(); context.EnableUpdateWhenOffscreen(); context.ShowMeshes(); context.DisposeOnGameObjectDestroyed(); return context.Root; } }
VRM-1.0
var vrm = await Vrm10.LoadPathAsync( path, canLoadVrm0X: true, normalizeTransform: true, showMeshes: false, awaitCaller: new RuntimeOnlyAwaitCaller(), materialGenerator: new Vrm10UrpMaterialDescriptorGenerator(), vrmMetaInformationCallback: updateMeta, ct: cancellationToken ); if (vrm) { m_instance = vrm.GetComponent<RuntimeGltfInstance>(); }
参考:
UniVRM を使って VRM モデルをランタイムロードする方法 – Qiita
RuntimeLoad (1.0~) | UniVRM Programming ドキュメント (vrm-c.github.io)
RuntimeImport 非同期ロード (0.87~) | UniVRM Programming ドキュメント (vrm-c.github.io)
RuntimeImport (0.44~) | UniVRM Programming ドキュメント (vrm-c.github.io)
LoadModel – VRM10_Samples/VRM10Viewer/VRM10ViewerUI.cs at 7ad78c3bb4 – vrm-c/UniVRM
LoadPathAsync – VRM10/Runtime/IO/Vrm10.cs at 7ad78c3bb4 – vrm-c/UniVRM
シェーダー/マテリアル
参考:
アプリケーションのビルド | UniVRM Programming Document (vrm-c.github.io)
VRMShaders/README.md – vrm-c/UniVRM – GitHub
エクスポート
VRM モデル (あるいは glTF 形式) のエクスポートに対応しているシェーダーは Standard、Unlit、UniGLTF、VRM 系の以下のシェーダー
glTF レイヤー
- Standard
- Unlit/Color
- Unlit/Texture
- Unlit/Transparent
- Unlit/Transparent Cutout
- UniGLTF/UniUnlit
- VRM/UnlitTexture
- VRM/UnlitTransparent
- VRM/UnlitCutout
VRM レイヤー
- VRM/UnlitTransparentZWrite
- VRM/MToon
参考:
MToon シェーダー
Rendering Type
- Opaque:不透明
- Cutout:カットアウト (閾値で完全透過と不透明を切り替え)
- Transparent:半透明 (アルファチャンネルで透過度をコントロールする)
- TransparentWithZWrite:奥行き情報ありの透過
参考:
Santarh/MToon: Toon Shader with Unity Global Illumination – GitHub
VRM フォーマットで使われる MToon シェーダーのキャラクターセットアップ – Qiita
VRM 形式のアバターの半透明の前後関係 | サンフラワーふじ
MToon リファレンス | VirtualCast wiki
VRM 標準シェーダ MToon の使い方 – SlideShare
テクスチャ
参考:
表情モーフの設定/編集
モデルにアタッチされている VRMBlendShapeProxy コンポーネントの「Blend Shape Avatar」に設定されているアセットが表情モーフを管理するアセットである。設定されているアセット名をダブルクリックするとアセットを選択状態にして Inspector に表示することができる。
VRM モデルをインポートすると、インポートしたディレクトリ下にある「(モデル名).Blendshapes」ディレクトリ内に表情モーフのアセット「BlendShape.asset」及びアニメーションクリップが作成される。
Game Play 中は VRM Blend Shape Proxy に各ブレンドシェイプを 0
~ 1
で操作するスライダーが表れて簡易的に表情モーフのテストが行える。
Project ウィンドウで「BlendShape.asset」を選択すると、Inspector ウィンドウで表情モーフを扱える。
- Editor タブで BlendShapeClip の編集
- List タブで BlendShapeClip を一覧表示
BlendShapeClip
- Neutral:基本 (ニュートラル)
- A:あ (口開け)
- I:い (口を横に引く)
- U:う (すぼみ口)
- E:え (口を横に引く/下唇を下げる)
- O:お (口を開けて唇を突き出す)
- Blink:両目閉じ
- Blink_L:左目閉じ (ウインク)
- Blink_R:右目閉じ (ウインク)
- Angry:怒り (眉下げ/への字口)
- Fun:楽しい (口角上げ)
- Joy:喜び (目閉じ/口開き)
- Sorrow:悲しい (困り眉/すぼみ口)
- Surprised:驚き (目を見開く/口開き)
- Extra:不等号目 (
><
) - LookUp:上を見る
- LookDown:下を見る
- LookLeft:左を見る
- LookRight:右を見る
15~18 の LookUp、LookDown、LookLeft、LookRight は目線をモーフで制御するタイプのモデルで使用する。
視線をボーンで制御するタイプのモデルでは、VRMLookAtBoneApplyer コンポーネントを使用する。視線をモーフで制御する場合は VRMLookAtBoneApplyer を削除して、 代わりに VRMLookAtBlendShapeApplyer コンポーネントを付与する。
「Add BlendShapeClip」ボタンを押して、新しい表情モーフを追加 (新規の BlendShapeClip を作成) することができる。事前定義された表情モーフを追加する場合は Preset から該当するプリセットを選び、それ以外の表情モーフを追加する場合は Unknown
を選ぶ。(スクリプトから表情モーフをコントロールする際に、事前定義された表情モーフはプリセット名で指定することができる。)
参考:
VRoid で出力した VRM ファイルの表情調整 | しま
VRoid Studio 製モデルには実は表情が6つある。牙も生やせるし2種類もある。これらの使い方と調整の方法 | 友黎火の note
Unity で VRM の表情を追加&編集する | 神楽ゆのん
VMagicMirror 向け VRoid Studio 産 VRM モデルに Unity で新規表情パターンを追加 & 微調整する方法 | Vtuber の雑学メモ帳
UniVRM の VRMBlendShapeProxy で表情アニメーション処理を共通化する – Qiita
VRM で数秒後に表情を変化させる | まゆたまガジェット開発逆引き辞典
キャラクターの表情やまばたきの制御方法 | Unity でゲームを作ろう!(unity.moon-bear.com)
URP で使いたい
参考:
VRoid のモデルのマテリアルを URP 対応のマテリアルに変更してみた – Qiita
LWRP / URP support · Issue #368 · vrm-c/UniVRM – GitHub
When unity URP will be supported? · Issue #387 · vrm-c/UniVRM – GitHub
glTF (.glb) をエクスポートする
参考:
glbファイルの作り方 · vrm-c/UniVRM Wiki – GitHub
ポリゴンを両面描画する
参考:
VRM アバターでテクスチャの裏側が透明になってしまうときの解決法 | ミッコちゃん
BVH/モーションキャプチャーデータ
参考:
VRM と BVH (モーションデータ) | 120 のブロマガ
サンプル
- VRM_Samples (UniVRM_samples-X.YY.Z_xxxx.unitypackage)
- AnimationBridgeSample
- FirstPersonSample
- RuntimeExporterSample
- SimpleViewer
- VRM10_Samples (VRM_Samples-X.YY.Z_xxxx.unitypackage)
- VRM10FirstPersonSample
- VRM10Viewer
- UniVRMTest:VRM ビューワー
参考:
vrm-c/UniVRM/Assets/VRM_Samples – GitHub
vrm-c/UniVRM/Assets/VRM10_Samples – GitHub
API
参考:
UniVRM Programming Document (vrm-c.github.io)
ドキュメント
参考:
リンク
参考:
VRM Spring Bone
参考:
Assets/VRM/Editor/SpringBone – vrm-c/UniVRM – GitHub
Assets/VRM/Runtime/SpringBone – vrm-c/UniVRM – GitHub
VRM モデルの髪をセットアップする | ForgeVision Engineer Blog
Blender で編集したモデルに Unity で物理演算を再設定する方法 (VRoid) | Vtuber の解剖学
バーチャルキャストのアバターの揺れもの設定 | サンフラワーふじ
VRM 変換大作戦! VRM Spring bone で長めのスカートを制御してみた | 闇魔研究所
VRoid モデルの髪を揺らしてみたい! 後編 Unity 作業 | 蒼空の下で
VRM の揺れ物の設定 | VirtualCast wiki
VRIK (FinalIK) を適用すると VRM の揺れもの (VRM Spring Bone) の動きがおかしくなる時の対処 – Qiita
VRM 変換大作戦!VRM Spring Bone で長めのスカートを制御してみた | 闇魔研究所
Mesh Utility
参考:
Assets/UniGLTF/Editor/MeshUtility – vrm-c/UniVRM – GitHub
Assets/UniGLTF/Runtime/MeshUtility – vrm-c/UniVRM – GitHub
VRMSpringBoneCopy
参考:
VRM モデルの Spring Bone をコピーするツール | broken55
VRM モデルの Spring Bone をコピーするツールを作りました – Qiita
CopyVRMSettings.cs
参考:
VRMViewer
参考:
VRM ファイルのインポート ローカル版 | Sirohood
MToon to HDRP Shader Change Supporter
参考:
VRoid モデルのマテリアルを簡単に HDRP 用に変えるスクリプト (やまぎしラボ) | BOOTH
Change_MToonToUTS2
参考:
MrSlip777/LoadVRM/ChangeShader/Change_MToonToUTS2.cs – GitHub
MrSlip777/LoadVRM/ChangeShader/LoadVRM/README.md – GitHub
Release ChangeShader_UTS2_MToon at 5.1 · MrSlip777/LoadVRM
URP プロジェクトに VRM のモデル持ってきたときに MToon シェーダーを UTS2 シェーダーに置換するスクリプトを作成しました (@KjmCh2s) | Twitter
VRoidMaterialChanger
参考:
Carnaite0224/VRoidMaterialChanger – GitHub
VRoid のモデルのマテリアルを URP 対応のマテリアルに変更してみた – Qiita
2021.2 の URP で VRoid を表示する | さとけん
Shader Graphs MToon for URP VR
参考:
simplestargame/ShaderGraphsMToonForURPVR: ShaderGraphsMToonForURPVR – GitHub
VRM Tool Kit
参考: