VRM.VRMData
以下の手順で import します。
- VRMをパースして、
GltfData
を得る。 GltfData
からVRMData
を得る。VrmData
からRuntimeGltfInstance
をロードする。RuntimeGltfInstance
を使う。
サンプルの Assets\VRM\Samples\SimpleViewer\ViewerUI.cs
も参照してください。
1. GltfData
を得る
GltfData Load(string path)
{
return new GlbFileParser(path).Parse();
}
2. VRMData
を得る
VRMData vrm = new VRMData(data);
3. Load する
async RuntimeGltfInstance Load(VRMData vrm)
{
// 使用後に Dispose で VRMImporterContext を破棄してください。
using(var loader = new VRMImporterContext(vrm))
{
var instance = await loader.LoadAsync();
return instance;
}
}
URP 向けに materialGenerator
を指定する(実験)
materialGenerator
引き数(省略可能)を指定することで URP マテリアルを生成するようにカスタムできます。
指定しない場合は built-in
向けのデフォルトが使用されます。
async RuntimeGltfInstance Load(VRMData vrm)
{
var materialGenerator = new VRMUrpMaterialDescriptorGenerator(vrm.VrmExtension);
using(var loader = new VRM.VRMImporterContext(vrm, materialGenerator: materialGenerator))
{
var instance = await loader.LoadAsync();
return instance;
}
}
- まだ URP 向け MToonShader が作成されていないので、
UniUnlit
にフォールバックします。
4. Instance
// SkinnedMeshRenderer に対する指示
instance.EnableUpdateWhenOffscreen();
// 準備ができたら表示する(デフォルトでは非表示)
instance.ShowMeshes();
使用後に以下のように破棄してください。関連する Asset(Texture, Material, Meshなど)も破棄されます。
// GameObject.Destroy(instance);
// RuntimeGltfInstance ではなくて、その GameObject を Destroy します。
GameObject.Destroy(instance.gameObject);