using System; using System.IO; using VrmLib; using UniJSON; namespace UniVRM10 { /// /// utility for load VrmLib Model from byte[] /// public static class VrmLoader { // TODO: const string VRM0X_LICENSE_URL = "https://vrm-consortium.org/"; /// /// Load VRM10 or VRM0x from path /// public static Model CreateVrmModel(string path) { var bytes = File.ReadAllBytes(path); return CreateVrmModel(bytes, new FileInfo(path)); } public static Model CreateVrmModel(byte[] bytes, FileInfo path) { if (!UniGLTF.Glb.TryParse(bytes, out UniGLTF.Glb glb, out Exception ex)) { throw ex; } var json = glb.Json.Bytes.ParseAsJson(); var extensions = json["extensions"]; foreach (var kv in extensions.ObjectItems()) { switch (kv.Key.GetString()) { // case "VRM": // { // var storage = new Vrm10Storage(glb.Json.Bytes, glb.Binary.Bytes); // var model = ModelLoader.Load(storage, path.Name); // model.ConvertCoordinate(Coordinates.Unity); // return model; // } case "VRMC_vrm": { var storage = new Vrm10Storage(glb.Json.Bytes, glb.Binary.Bytes); var model = ModelLoader.Load(storage, path.Name); model.ConvertCoordinate(Coordinates.Unity); return model; } } } // this is error // throw new NotImplementedException(); return null; } } }