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>();
}Code language: C# (cs)

ドキュメント:

Runtime Load (v1.0~) | UniVRM Programming ドキュメント [公式]

コード:

LoadModel – VRM10ViewerUI.cs at v0.109.0 – GitHub

LoadPathAsync – Vrm10.cs at v0.109.0 – GitHub

LoadAsync – Vrm10Importer.cs at v0.109.0 – GitHub

非同期読み込み

バージョン 0.44 以降で LoadAsync を使う場合、次のような非同期関数でモデルを読み込む。

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;
    }
}

(出典UniVRM

ドキュメント:

Runtime Import (v0.44 ~) | UniVRM Programming ドキュメント [公式]

DisposeOnGameObjectDestroyed (v0.68 ~) | UniVRM Programming ドキュメント [公式]

参考:

UniVRM を使って VRM モデルをランタイムロードする方法 v0.44 – Qiita

VRM のランタイムロードがなんもわからん | simplestar の技術ブログ

Await Caller

  • ImmediateCaller タスクを即時に実行する/同期実行したい場合に用いる (デフォルト)
  • RuntimeOnlyAwaitCaller ランタイム時に非同期実行する

ドキュメント:

Runtime Import 非同期ロード (v0.87 ~) | UniVRM Programming ドキュメント [公式]

VrmUtility

VrmUtility.LoadAsync を使って、非同期で VRM ファイルを読み込む。

VrmUtility.MaterialGeneratorCallback materialCallback = (VRM.glTF_VRM_extensions vrm) => GetVrmMaterialGenerator(m_useUrpMaterial.isOn, vrm);
VrmUtility.MetaCallback metaCallback = m_texts.UpdateMeta;

var instance = await VrmUtility.LoadAsync(path, GetIAwaitCaller(m_useAsync.isOn), materialCallback, metaCallback);

SetModel(instance);Code language: C# (cs)

(出典UniVRM

ドキュメント:

簡単 API (v0.95 ~) | UniVRM Programming ドキュメント [公式]

コード:

VRM ファイルからモデルをロードするだけ (nishi-yuki) – GitHub Gist

参考:

VrmUtility で VRM ファイルをランタイムロードするメモ | にし

VRM0 から VRM1 への変換

ドキュメント:

アップグレードの互換性 | VRM ドキュメント [公式]

ドキュメント

Load – VRM-1.0 API | UniVRM Programming ドキュメント [公式]

Tips

VRM 1.0 を使うメモ/URP 対応含む – Qiita

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA