mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-08-28 05:44:48 -05:00
implement normalization for VRMSpringBoneColliderGroup
This commit is contained in:
@@ -130,6 +130,7 @@ namespace VRM
|
||||
}
|
||||
|
||||
{
|
||||
// springbone
|
||||
var secondary = go.transform.Find("secondary");
|
||||
if (secondary == null)
|
||||
{
|
||||
@@ -143,7 +144,7 @@ namespace VRM
|
||||
dstSecondary.SetParent(root.transform, false);
|
||||
}
|
||||
|
||||
// 揺れモノ
|
||||
// VRMSpringBoneColliderGroup
|
||||
foreach (var src in go.transform.GetComponentsInChildren<VRMSpringBoneColliderGroup>())
|
||||
{
|
||||
var dst = map[src.transform];
|
||||
@@ -151,17 +152,18 @@ namespace VRM
|
||||
dstColliderGroup.Colliders = src.Colliders.Select(y =>
|
||||
{
|
||||
var offset = dst.worldToLocalMatrix.MultiplyPoint(src.transform.localToWorldMatrix.MultiplyPoint(y.Offset));
|
||||
var ls = src.UniformedLossyScale;
|
||||
return new VRMSpringBoneColliderGroup.SphereCollider
|
||||
{
|
||||
Offset = offset,
|
||||
Radius = y.Radius
|
||||
Radius = y.Radius * ls
|
||||
};
|
||||
}).ToArray();
|
||||
}
|
||||
|
||||
// VRMSpringBone
|
||||
foreach (var src in go.transform.GetComponentsInChildren<VRMSpringBone>())
|
||||
{
|
||||
// Copy VRMSpringBone
|
||||
var dst = dstSecondary.gameObject.AddComponent<VRMSpringBone>();
|
||||
dst.m_comment = src.m_comment;
|
||||
dst.m_stiffnessForce = src.m_stiffnessForce;
|
||||
|
||||
@@ -31,15 +31,23 @@ namespace VRM
|
||||
[SerializeField]
|
||||
Color m_gizmoColor = Color.magenta;
|
||||
|
||||
public float UniformedLossyScale
|
||||
{
|
||||
get
|
||||
{
|
||||
return Mathf.Max(
|
||||
transform.lossyScale.x,
|
||||
transform.lossyScale.y,
|
||||
transform.lossyScale.z
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
Gizmos.color = m_gizmoColor;
|
||||
Matrix4x4 mat = transform.localToWorldMatrix;
|
||||
var ls = Mathf.Max(
|
||||
transform.lossyScale.x,
|
||||
transform.lossyScale.y,
|
||||
transform.lossyScale.z
|
||||
);
|
||||
var ls = UniformedLossyScale;
|
||||
Gizmos.matrix = mat * Matrix4x4.Scale(new Vector3(
|
||||
1.0f / transform.lossyScale.x * ls,
|
||||
1.0f / transform.lossyScale.y * ls,
|
||||
|
||||
Reference in New Issue
Block a user