Fix Quaternion.FromDirection giving bogus output when fed a perfect down vector

This commit is contained in:
Zode
2024-07-17 01:12:17 +03:00
parent 009e1aaebb
commit e1cf41b94b
2 changed files with 8 additions and 0 deletions

View File

@@ -294,6 +294,10 @@ Quaternion Quaternion::FromDirection(const Float3& direction)
{
RotationAxis(Float3::Left, PI_OVER_2, orientation);
}
else if (Float3::Dot(direction, Float3::Down) >= 0.999f)
{
RotationAxis(Float3::Right, PI_OVER_2, orientation);
}
else
{
Float3 right, up;

View File

@@ -654,6 +654,10 @@ namespace FlaxEngine
{
orientation = RotationAxis(Float3.Left, Mathf.PiOverTwo);
}
else if (Float3.Dot(direction, Float3.Down) >= 0.999f)
{
orientation = RotationAxis(Float3.Right, Mathf.PiOverTwo);
}
else
{
var right = Float3.Cross(direction, Float3.Up);