diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10Runtime.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10Runtime.cs index 07adca4d6..7c1d11a61 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10Runtime.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10Runtime.cs @@ -112,11 +112,21 @@ namespace UniVRM10 gravityDir = joint.m_gravityDir, gravityPower = joint.m_gravityPower, stiffnessForce = joint.m_stiffnessForce - } + }, + DefaultLocalRotation = GetOrAddDefaultTransformState(joint.transform).rotation }).ToArray(), }).ToArray()); } + private (Vector3 position, Quaternion rotation) GetOrAddDefaultTransformState(Transform tf) + { + if (m_defaultTransformStates.TryGetValue(tf, out var defaultTransformState)) + { + return defaultTransformState; + } + return m_defaultTransformStates[tf] = (tf.position, tf.rotation); + } + private static BlittableColliderType TranslateColliderType(VRM10SpringBoneColliderTypes colliderType) { switch (colliderType) diff --git a/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneBuffer.cs b/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneBuffer.cs index 84186af62..89df4753b 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneBuffer.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneBuffer.cs @@ -108,7 +108,7 @@ namespace UniVRM10.FastSpringBones.System parentTransformIndex = parent != null ? transformIndexDictionary[parent] : -1, currentTail = currentTail, prevTail = currentTail, - localRotation = joint.Transform.localRotation, + localRotation = joint.DefaultLocalRotation, boneAxis = localChildPosition.normalized, length = localChildPosition.magnitude }); diff --git a/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneJoint.cs b/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneJoint.cs index 7aff7cf71..98d1a8e65 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneJoint.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneJoint.cs @@ -9,5 +9,6 @@ namespace UniVRM10.FastSpringBones.System { public Transform Transform; public BlittableJoint Joint; + public Quaternion DefaultLocalRotation; } } \ No newline at end of file