假设您有描述 3D 模型旋转的四元数。
我想要做的是,给定一个对象(带有rotationQuaternion,侧向量......),我想将它与目标点对齐。
对于宇宙飞船,我希望驾驶舱指向一个目标。
这是我的一些代码......它没有做我想要的,我不知道为什么......
if (_target._ray.Position != _obj._ray.Position)
{
Vector3 vec = Vector3.Normalize(_target._ray.Position - _obj._ray.Position);
float angle = (float)Math.Acos(Vector3.Dot(vec, _obj._ray.Direction));
Vector3 cross = Vector3.Cross(vec, _obj._ray.Direction);
if (cross == Vector3.Zero)
cross = _obj._side;
_obj._rotationQuaternion *= Quaternion.CreateFromAxisAngle(cross,angle);
}
// Updates direction, up, side vectors and model Matrix
_obj.UpdateMatrix();
一段时间后,旋转四元数在 X、Y、Z 和 W 处几乎为零
有什么帮助吗?谢谢 ;-)