async void Load() { #if UNITY_STANDALONE_WIN var path = FileDialogForWindows.FileDialog("open VRM", ".vrm"); #elif UNITY_EDITOR var path = UnityEditor.EditorUtility.OpenFilePanel("Open VRM", "", "vrm"); #else var path = Application.dataPath + "/default.vrm"; #endif if (string.IsNullOrEmpty(path)) { return; } var loaded = await VrmUtility.LoadAsync(path); loaded.ShowMeshes(); loaded.EnableUpdateWhenOffscreen(); if (m_model != null) { GameObject.Destroy(m_model.gameObject); } m_model = loaded.gameObject; }
async void OnLoadClicked() { #if UNITY_STANDALONE_WIN var path = FileDialogForWindows.FileDialog("open VRM", ".vrm"); #elif UNITY_EDITOR var path = UnityEditor.EditorUtility.OpenFilePanel("Open VRM", "", "vrm"); #else var path = Application.dataPath + "/default.vrm"; #endif if (string.IsNullOrEmpty(path)) { return; } // GLB形式でJSONを取得しParseします var data = new GlbFileParser(path).Parse(); // VRM extension を parse します var vrm = new VRMData(data); using (var context = new VRMImporterContext(vrm)) { // metaを取得(todo: thumbnailテクスチャのロード) var meta = await context.ReadMetaAsync(); Debug.LogFormat("meta: title:{0}", meta.Title); // ParseしたJSONをシーンオブジェクトに変換していく var loaded = await context.LoadAsync(); loaded.ShowMeshes(); loaded.EnableUpdateWhenOffscreen(); OnLoaded(loaded.gameObject); } }
static void Export(GameObject model, bool useNormalize) { //#if UNITY_STANDALONE_WIN #if false var path = FileDialogForWindows.SaveDialog("save VRM", Application.dataPath + "/export.vrm"); #else var path = Application.dataPath + "/../export.vrm"; #endif if (string.IsNullOrEmpty(path)) { return; } var bytes = useNormalize ? ExportCustom(model) : ExportSimple(model); File.WriteAllBytes(path, bytes); Debug.LogFormat("export to {0}", path); }