VRMファイルのマテリアル拡張を提供するUnityライブラリです。VRM標準には含まれないマテリアル定義を追加したVRMファイルの作成・読み込みを可能にします。
VRM標準ではサポートされていないシェーダーを使用している3DキャラクターモデルをVRM対応アプリケーションで取り扱うことができます。
| マテリアル / シェーダー | 備考 |
|---|---|
| lilToon | v1.8.5で動作確認済み。「簡易設定」のパラメーターのみサポート。 |
| MToon (URP) | UniVRM標準機能 |
| MToon (Built-in) | UniVRM標準機能 |
| Standard / URP Lit | glTF標準機能 |
将来的に他のマテリアル(シェーダー)のサポートを追加できるアーキテクチャになっています。
追加のマテリアル定義を含むVRMファイルを出力することができます。
エクスポーターで出力したVRMモデルをこのライブラリが導入されていないアプリケーションで読み込む場合、
他のツールで作成されたVRMモデルと同様に、VRM標準のマテリアル定義を用いてモデルを読み込むことができます。
モデルデータのポータビリティが失われることはありません。
追加のマテリアル定義を含むVRMファイルを読み込むことができます。
- Unity 2022.3以降
- 依存関係
UniVRMとlilToonをプロジェクトにインストールしてください。
UnityエディターのPackage Managerからインストールできます。
- Package Managerウィンドウを開く
+ボタンをクリックして「Add package from git URL」を選択する- 次のURLを入力:
https://github.com/sotanmochi/UniVRMMaterialExtensions.git?path=src/UniVRMMaterialExtensions/Assets/VRM10.Extensions.Materials#0.4.0
Packages/manifest.jsonを直接編集してインストールすることも可能です。
// Packages/manifest.json
{
"dependencies": {
...
"jp.sotanmochi.vrm.extensions.materials": "https://github.com/sotanmochi/UniVRMMaterialExtensions.git?path=src/UniVRMMaterialExtensions/Assets/VRM10.Extensions.Materials#0.4.0",
...
}
}
- VRMモデルをシーンに配置して選択する
- メニューから [VRM] → [Export VRM with Material Extensions] をクリックする
- カスタムマテリアルの情報を含むVRMファイルがエクスポートされます
例えば、lilToonを使っているモデルをエクスポートした場合、VRMファイルにEXT_materials_liltoon_simpleの情報が格納される。
- VRMファイルをプロジェクトにドラッグ&ドロップする
- VRMファイルを選択してInspectorでImporterを
UniVRM10.Extensions.Materials.VrmScriptedImporterに変更する Material TypeをlilToonに設定するApplyボタンをクリックしてインポート設定を適用する
using System.IO;
using UnityEngine;
using UniVRM10;
using UniVRM10.Extensions.Materials.lilToon;
namespace Sandbox
{
public sealed class ImportSample : MonoBehaviour
{
[SerializeField] string _streamingAssetsPath = "VRM/Sample_Alpha_PerfectSync_lilToon.vrm";
async void Start()
{
var filePath = Path.Combine(Application.streamingAssetsPath, _streamingAssetsPath);
var materialGenerator = new lilToonMaterialDescriptorGenerator();
await Vrm10.LoadPathAsync(
path: filePath,
canLoadVrm0X: true,
showMeshes: true,
materialGenerator: materialGenerator,
ct: default);
}
}
}







