diff --git a/Assets/VRM/UniVRM/Scripts/Format/glTF_VRMExtensions.cs b/Assets/VRM/UniVRM/Scripts/Format/glTF_VRMExtensions.cs index 9e0955f6b..47e10a1df 100644 --- a/Assets/VRM/UniVRM/Scripts/Format/glTF_VRMExtensions.cs +++ b/Assets/VRM/UniVRM/Scripts/Format/glTF_VRMExtensions.cs @@ -19,13 +19,27 @@ namespace VRM public static glTF_VRM_BlendShapeBind Create(Transform root, BlendShapeBinding binding, gltfExporter exporter) { - var transform = root.transform.Find(binding.RelativePath); - if (transform == null) + if (string.IsNullOrEmpty((binding.RelativePath))) { - Debug.LogWarning($"{binding.RelativePath} not found"); + Debug.LogWarning("binding.RelativePath is null"); return null; } - var renderer = transform.GetComponent(); + var found = root.transform.Find(binding.RelativePath); + if (found == null) + { + var name = binding.RelativePath.Split('/').Last(); + found = root.GetComponentsInChildren().Where(x => x.name == name).First(); + if (found == null) + { + Debug.LogWarning($"{binding.RelativePath} not found"); + return null; + } + else + { + Debug.LogWarning($"fall back '{binding.RelativePath}' => '{found.RelativePathFrom(root)}'"); + } + } + var renderer = found.GetComponent(); if (renderer == null) { return null;