Fix create physical bone when up vector is collinear to child rest origin
This commit is contained in:
parent
df491d2f1c
commit
234637ab79
1 changed files with 7 additions and 1 deletions
|
@ -416,8 +416,14 @@ PhysicalBone3D *Skeleton3DEditor::create_physical_bone(int bone_id, int bone_chi
|
|||
capsule_transform.basis = Basis(Vector3(1, 0, 0), Vector3(0, 0, 1), Vector3(0, -1, 0));
|
||||
bone_shape->set_transform(capsule_transform);
|
||||
|
||||
/// Get an up vector not collinear with child rest origin
|
||||
Vector3 up = Vector3(0, 1, 0);
|
||||
if (up.cross(child_rest.origin).is_equal_approx(Vector3())) {
|
||||
up = Vector3(0, 0, 1);
|
||||
}
|
||||
|
||||
Transform3D body_transform;
|
||||
body_transform.basis = Basis::looking_at(child_rest.origin);
|
||||
body_transform.basis = Basis::looking_at(child_rest.origin, up);
|
||||
body_transform.origin = body_transform.basis.xform(Vector3(0, 0, -half_height));
|
||||
|
||||
Transform3D joint_transform;
|
||||
|
|
Loading…
Reference in a new issue