async void LoadModelAsync(string path, bool isVrm) { if (!File.Exists(path)) { return; } Debug.LogFormat("{0}", path); GltfData data; try { data = new AutoGltfFileParser(path).Parse(); } catch (Exception ex) { Debug.LogWarningFormat("parse error: {0}", ex); return; } if (isVrm) { try { var vrm = new VRMData(data); using (var loader = new VRMImporterContext(vrm, materialGenerator: GetVrmMaterialGenerator(m_useUrpMaterial.isOn, vrm.VrmExtension))) { await m_texts.UpdateMetaAsync(loader); var instance = await loader.LoadAsync(GetIAwaitCaller(m_useAsync.isOn)); SetModel(instance); } } catch (NotVrm0Exception) { // retry Debug.LogWarning("file extension is vrm. but not vrm ?"); using (var loader = new UniGLTF.ImporterContext(data, materialGenerator: GetGltfMaterialGenerator(m_useUrpMaterial.isOn))) { var instance = await loader.LoadAsync(GetIAwaitCaller(m_useAsync.isOn)); SetModel(instance); } } } else { using (var loader = new UniGLTF.ImporterContext(data, materialGenerator: GetGltfMaterialGenerator(m_useUrpMaterial.isOn))) { var instance = await loader.LoadAsync(GetIAwaitCaller(m_useAsync.isOn)); SetModel(instance); } } }
public static async Task <RuntimeGltfInstance> LoadAsync(string path, IAwaitCaller awaitCaller = null, MaterialGeneratorCallback materialGeneratorCallback = null, MetaCallback metaCallback = null, bool loadAnimation = false ) { if (!File.Exists(path)) { throw new FileNotFoundException(path); } if (awaitCaller == null) { Debug.LogWarning("VrmUtility.LoadAsync: awaitCaller argument is null. ImmediateCaller is used as the default fallback. When playing, we recommend RuntimeOnlyAwaitCaller."); awaitCaller = new ImmediateCaller(); } using (GltfData data = new AutoGltfFileParser(path).Parse()) { try { var vrm = new VRMData(data); IMaterialDescriptorGenerator materialGen = default; if (materialGeneratorCallback != null) { materialGen = materialGeneratorCallback(vrm.VrmExtension); } using (var loader = new VRMImporterContext(vrm, materialGenerator: materialGen, loadAnimation: loadAnimation)) { if (metaCallback != null) { var meta = await loader.ReadMetaAsync(awaitCaller, true); metaCallback(meta); } return(await loader.LoadAsync(awaitCaller)); } } catch (NotVrm0Exception) { // retry Debug.LogWarning("file extension is vrm. but not vrm ?"); using (var loader = new UniGLTF.ImporterContext(data)) { return(await loader.LoadAsync(awaitCaller)); } } } }
public static async Task <RuntimeGltfInstance> LoadAsync(string path, IAwaitCaller awaitCaller = null, MaterialGeneratorCallback materialGeneratorCallback = null, MetaCallback metaCallback = null ) { if (!File.Exists(path)) { throw new FileNotFoundException(path); } using (GltfData data = new AutoGltfFileParser(path).Parse()) { try { var vrm = new VRMData(data); IMaterialDescriptorGenerator materialGen = default; if (materialGeneratorCallback != null) { materialGen = materialGeneratorCallback(vrm.VrmExtension); } using (var loader = new VRMImporterContext(vrm, materialGenerator: materialGen)) { if (metaCallback != null) { var meta = await loader.ReadMetaAsync(new ImmediateCaller(), true); metaCallback(meta); } return(await loader.LoadAsync(awaitCaller)); } } catch (NotVrm0Exception) { // retry Debug.LogWarning("file extension is vrm. but not vrm ?"); using (var loader = new UniGLTF.ImporterContext(data)) { return(await loader.LoadAsync(awaitCaller)); } } } }
async void LoadModel(string path) { if (!File.Exists(path)) { return; } Debug.LogFormat("{0}", path); GltfData data; try { data = new AutoGltfFileParser(path).Parse(); } catch (Exception ex) { Debug.LogWarning(ex); return; } var vrm = await System.Threading.Tasks.Task.Run(() => { if (Vrm10Data.TryParseOrMigrate(data, doMigrate: true, out Vrm10Data _vrm)) { return(_vrm); } else { return(null); } }); if (vrm != null) { // vrm using (var loader = new Vrm10Importer(vrm, materialGenerator: GetVrmMaterialDescriptorGenerator(m_useUrpMaterial.isOn), doNormalize: m_useNormalization.isOn)) { // migrate しても thumbnail は同じ var thumbnail = await loader.LoadVrmThumbnailAsync(); if (vrm.OriginalMetaBeforeMigration != null) { // migrated from vrm-0.x. use OldMeta m_texts.UpdateMeta(vrm.OriginalMetaBeforeMigration, thumbnail); } else { // load vrm-1.0. use newMeta m_texts.UpdateMeta(vrm.VrmExtension.Meta, thumbnail); } var instance = await loader.LoadAsync(new RuntimeOnlyAwaitCaller()); SetModel(instance); } } else { // gltf using (var loader = new UniGLTF.ImporterContext(data, materialGenerator: GetMaterialDescriptorGenerator(m_useUrpMaterial.isOn))) { var instance = await loader.LoadAsync(new RuntimeOnlyAwaitCaller()); SetModel(instance); } } }