diff --git a/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBone.cs b/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBone.cs index ee75cabbe..f834791c5 100644 --- a/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBone.cs +++ b/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBone.cs @@ -8,9 +8,16 @@ namespace UniVRM10 /// /// The base algorithm is http://rocketjump.skr.jp/unity3d/109/ of @ricopin416 /// DefaultExecutionOrder(11000) means calculate springbone after FinalIK( VRIK ) + /// + /// Setup の Editor の都合から、VRM10SpringBone は MonoBehaviour にする。 + /// Data置き場。Updateは使わない。 + /// + /// Springの根元のTranform (Joints.First()) に AddComponent して使う。 + /// /// + [DisallowMultipleComponent] [Serializable] - public class VRM10SpringBone + public class VRM10SpringBone : MonoBehaviour { [SerializeField] public string Comment; diff --git a/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBoneColliderGroup.cs b/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBoneColliderGroup.cs index 2fb4e3a58..149f59bde 100644 --- a/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBoneColliderGroup.cs +++ b/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBoneColliderGroup.cs @@ -7,7 +7,6 @@ namespace UniVRM10 /// /// VRMC_node_collider /// - [DisallowMultipleComponent] [AddComponentMenu("VRM10/VRM10SpringBoneColliderGroup")] public class VRM10SpringBoneColliderGroup : MonoBehaviour { diff --git a/Assets/VRM10/Runtime/IO/RuntimeUnityBuilder.cs b/Assets/VRM10/Runtime/IO/RuntimeUnityBuilder.cs index f5c4dd71d..926e02826 100644 --- a/Assets/VRM10/Runtime/IO/RuntimeUnityBuilder.cs +++ b/Assets/VRM10/Runtime/IO/RuntimeUnityBuilder.cs @@ -353,7 +353,12 @@ namespace UniVRM10 { foreach (var gltfSpring in gltfVrmSpringBone.Springs) { - var springBone = new VRM10SpringBone(); + if (gltfSpring.Joints == null || gltfSpring.Joints.Count == 0) + { + continue; + } + var firstJointNode = Nodes[gltfSpring.Joints.First().Node.Value]; + var springBone = firstJointNode.gameObject.AddComponent(); springBone.Comment = gltfSpring.Name; // joint