diff --git a/Assets/VRM10/Runtime/IO/Model/ModelExporter.cs b/Assets/VRM10/Runtime/IO/Model/ModelExporter.cs index b7f3302e9..d35307261 100644 --- a/Assets/VRM10/Runtime/IO/Model/ModelExporter.cs +++ b/Assets/VRM10/Runtime/IO/Model/ModelExporter.cs @@ -307,7 +307,17 @@ namespace UniVRM10 skin.Root = nodes[skinnedMeshRenderer.rootBone.gameObject]; } - skin.Joints = skinnedMeshRenderer.bones.Select(x => nodes[x.gameObject]).ToList(); + skin.Joints = skinnedMeshRenderer.bones.Select(x => + { + if (x != null) + { + return nodes[x.gameObject]; + } + else + { + return null; + } + }).ToList(); return skin; } diff --git a/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs b/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs index 71c1aef0c..95d68cddc 100644 --- a/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs +++ b/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs @@ -93,7 +93,18 @@ namespace UniVRM10 { gltfSkin = new glTFSkin() { - joints = skin.Joints.Select(joint => nodes.IndexOfThrow(joint)).ToArray() + joints = skin.Joints.Select(joint => + { + var index = nodes.IndexOf(joint); + if (index < 0) + { + return 0; + } + else + { + return index; + } + }).ToArray() }; if (skin.InverseMatrices == null) {