From 443001957ba4ea671a0e4b60b3291e68e8e1bba6 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 12 Apr 2021 20:01:11 +0900 Subject: [PATCH] =?UTF-8?q?Model=20=E3=81=8B=E3=82=89=20VRM=E3=80=80?= =?UTF-8?q?=E6=83=85=E5=A0=B1=E3=81=8C=E9=99=A4=E5=8E=BB=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=9F=E3=81=AE=E3=81=A7=E3=80=81ToGlb=20=E3=81=AB=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=81=AE=E5=BC=95=E6=95=B0=E3=81=8C=E5=BF=85=E7=94=A8?= =?UTF-8?q?=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/VRM10/Runtime/IO/ModelExtensions.cs | 5 +++-- Assets/VRM10/Runtime/IO/Vrm10Exporter.cs | 2 +- Assets/VRM10/Runtime/Scenes/Sample.cs | 2 +- Assets/VRM10/Tests/ApiSampleTests.cs | 23 ++++++++++------------ 4 files changed, 15 insertions(+), 17 deletions(-) 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"); } }