From bc1edff9c91664fabc82fed26bb3b9a4a35224f5 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Thu, 26 Sep 2024 19:36:12 +0900 Subject: [PATCH] =?UTF-8?q?Renderer=20export=20=E3=81=AE=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit x.gameObject.activeInHierarchy && x.TryGetComponent(out var renderer) && renderer.enabled) mesh の export 条件と renderer の export 条件が別であることに注意。gltf の node.mesh --- .../VRM10/Runtime/IO/Model/ModelExporter.cs | 2 +- Assets/VRM10/Runtime/IO/Vrm10Exporter.cs | 26 +++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Assets/VRM10/Runtime/IO/Model/ModelExporter.cs b/Assets/VRM10/Runtime/IO/Model/ModelExporter.cs index d8f6955ba..ea7632a19 100644 --- a/Assets/VRM10/Runtime/IO/Model/ModelExporter.cs +++ b/Assets/VRM10/Runtime/IO/Model/ModelExporter.cs @@ -105,7 +105,7 @@ namespace UniVRM10 } // material and textures - var rendererComponents = root.GetComponentsInChildren(); + var rendererComponents = root.GetComponentsInChildren().Where(x => x.gameObject.activeInHierarchy && x.enabled).ToArray(); { foreach (var renderer in rendererComponents) { diff --git a/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs b/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs index efa2ecfbb..6634b8b39 100644 --- a/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs +++ b/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs @@ -646,7 +646,13 @@ namespace UniVRM10 }; foreach (var f in firstPerson.Renderers) { - vrm.FirstPerson.MeshAnnotations.Add(ExportMeshAnnotation(f, vrmController.transform, getIndex)); + var annotation = ExportMeshAnnotation(f, vrmController.transform, getIndex); + if (annotation.Node < 0) + { + // maybe disabled Rendeer + continue; + } + vrm.FirstPerson.MeshAnnotations.Add(annotation); } } @@ -718,6 +724,15 @@ namespace UniVRM10 Func getIndexFromRelativePath = relativePath => { var rendererNode = vrmController.transform.GetFromPath(relativePath); + var renderer = rendererNode.GetComponent(); + if (renderer == null) + { + return -1; + } + if (!renderer.enabled) + { + return -1; + } var node = converter.Nodes[rendererNode.gameObject]; return model.Nodes.IndexOf(node); }; @@ -751,7 +766,14 @@ namespace UniVRM10 { try { - vrmExpression.MorphTargetBinds.Add(ExportMorphTargetBinding(b, getIndexFromRelativePath)); + var binding = ExportMorphTargetBinding(b, getIndexFromRelativePath); + if (binding.Node < 0) + { + // node もしくは renderer が存在しない + continue; + } + + vrmExpression.MorphTargetBinds.Add(binding); } catch (Exception ex) {