From 6c5e8c0f533f89faa702ea0ffbcfe7b477aaf8a5 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 19 May 2020 12:39:37 +0900 Subject: [PATCH] skip BlendShapeBind if render is not active #398 --- .../Scripts/Format/glTF_VRMExtensions.cs | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Assets/VRM/UniVRM/Scripts/Format/glTF_VRMExtensions.cs b/Assets/VRM/UniVRM/Scripts/Format/glTF_VRMExtensions.cs index da96c1ca3..28be28847 100644 --- a/Assets/VRM/UniVRM/Scripts/Format/glTF_VRMExtensions.cs +++ b/Assets/VRM/UniVRM/Scripts/Format/glTF_VRMExtensions.cs @@ -19,8 +19,22 @@ namespace VRM { var transform = UniGLTF.UnityExtensions.GetFromPath(root.transform, binding.RelativePath); var renderer = transform.GetComponent(); + if (renderer == null) + { + return null; + } + + if(!renderer.gameObject.activeInHierarchy) + { + return null; + } + var mesh = renderer.sharedMesh; var meshIndex = meshes.IndexOf(mesh); + if (meshIndex == -1) + { + return null; + } return new glTF_VRM_BlendShapeBind { @@ -36,7 +50,16 @@ namespace VRM var list = new List(); if (clip.Values != null) { - list.AddRange(clip.Values.Select(y => Create(transform, meshes.ToList(), y))); + foreach (var value in clip.Values) + { + var bind = Create(transform, meshes, value); + if (bind == null) + { + Debug.LogFormat("{0}: skip blendshapebind", clip.name); + continue; + } + list.Add(bind); + } } var materialList = new List();