diff --git a/Assets/VRM10/Runtime/IO/ModelExtensions.cs b/Assets/VRM10/Runtime/IO/ModelExtensions.cs index b88227440..7037dfe71 100644 --- a/Assets/VRM10/Runtime/IO/ModelExtensions.cs +++ b/Assets/VRM10/Runtime/IO/ModelExtensions.cs @@ -6,7 +6,7 @@ namespace UniVRM10 { public static class ModelExtensions { - public static byte[] ToGlb(this VrmLib.Model model, Func getTextureBytes) + public static byte[] ToGlb(this VrmLib.Model model, GameObject root, RuntimeVrmConverter converter, Func getTextureBytes) { // export vrm-1.0 var exporter10 = new Vrm10Exporter(_ => false); @@ -14,7 +14,8 @@ namespace UniVRM10 { // vrm = false }; - exporter10.Export(null, model, null, option, getTextureBytes); + + exporter10.Export(root, model, converter, option, getTextureBytes); var glb10 = UniGLTF.Glb.Parse(exporter10.Storage.ToBytes()); return glb10.ToBytes(); } diff --git a/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs b/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs index 89f22b7f2..dbefca5ab 100644 --- a/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs +++ b/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs @@ -200,7 +200,7 @@ namespace UniVRM10 (UniGLTF.Extensions.VRMC_vrm.VRMC_vrm vrm, UniGLTF.Extensions.VRMC_springBone.VRMC_springBone springBone, int? thumbnailIndex) ExportVrm(GameObject root, Model model, RuntimeVrmConverter converter, VRM10MetaObject meta) { - var vrmController = root.GetComponent(); + var vrmController = root?.GetComponent(); if (meta == null) { diff --git a/Assets/VRM10/Runtime/Scenes/Sample.cs b/Assets/VRM10/Runtime/Scenes/Sample.cs index 927aed4b1..959b936f3 100644 --- a/Assets/VRM10/Runtime/Scenes/Sample.cs +++ b/Assets/VRM10/Runtime/Scenes/Sample.cs @@ -35,7 +35,7 @@ public class Sample : MonoBehaviour var model = exporter.ToModelFrom10(vrm0x); // 右手系に変換 model.ConvertCoordinate(VrmLib.Coordinates.Vrm1); - var exportedBytes = model.ToGlb(TextureExporter.GetTextureBytesWithMime); + var exportedBytes = model.ToGlb(vrm0x, exporter, TextureExporter.GetTextureBytesWithMime); // Import 1.0 var vrm10 = Import(exportedBytes, src); diff --git a/Assets/VRM10/Tests/ApiSampleTests.cs b/Assets/VRM10/Tests/ApiSampleTests.cs index ed8dba284..1305956ba 100644 --- a/Assets/VRM10/Tests/ApiSampleTests.cs +++ b/Assets/VRM10/Tests/ApiSampleTests.cs @@ -35,18 +35,11 @@ namespace UniVRM10.Test } } - VrmLib.Model ToModel(UnityEngine.GameObject target) - { - var exporter = new UniVRM10.RuntimeVrmConverter(); - var model = exporter.ToModelFrom10(target); - return model; - } - - byte[] ToVrm10(VrmLib.Model model) + byte[] ToVrm10(GameObject root, RuntimeVrmConverter converter, VrmLib.Model model) { // 右手系に変換 VrmLib.ModelExtensionsForCoordinates.ConvertCoordinate(model, VrmLib.Coordinates.Vrm1); - var bytes = UniVRM10.ModelExtensions.ToGlb(model, AssetTextureUtil.GetTextureBytesWithMime); + var bytes = UniVRM10.ModelExtensions.ToGlb(model, root, converter, AssetTextureUtil.GetTextureBytesWithMime); return bytes; } @@ -61,14 +54,18 @@ namespace UniVRM10.Test var parser = new GltfParser(); parser.Parse(path, migrated); - var asset = BuildGameObject(parser, true); - Debug.Log(asset); + var go = BuildGameObject(parser, true); + Debug.Log(go); // export - var dstModel = ToModel(asset); + // var dstModel = ToModel(go); + var exporter = new UniVRM10.RuntimeVrmConverter(); + var dstModel = exporter.ToModelFrom10(go); + // return model; + Debug.Log(dstModel); - var vrmBytes = ToVrm10(dstModel); + var vrmBytes = ToVrm10(go, exporter, dstModel); Debug.Log($"export {vrmBytes.Length} bytes"); } }