Tôi muốn máy ảnh của người thứ nhất của tôi thay đổi trơn tru hướng nhìn từ hướng d1 sang hướng d2. Hướng thứ hai được chỉ định bởi vị trí mục tiêu t2.
Cho đến nay tôi đã thực hiện một vòng quay hoạt động tốt nhưng tốc độ của vòng quay chậm lại càng gần hướng hiện tại đến hướng mong muốn. Đây là những gì tôi muốn tránh.
Đây là hai phương pháp rất đơn giản mà tôi đã viết cho đến nay:
// this method initiates the direction change and sets the parameter
public void LookAt(Vector3 target) {
_desiredDirection = target - _cameraPosition;
_desiredDirection.Normalize();
_rotation = new Matrix();
_rotationAxis = Vector3.Cross(Direction, _desiredDirection);
_isLooking = true;
}
// this method gets execute by the Update()-method if _isLooking flag is up.
private void _lookingAt() {
dist = Vector3.Distance(Direction, _desiredDirection);
// check whether the current direction has reached the desired one.
if (dist >= 0.00001f) {
_rotationAxis = Vector3.Cross(Direction, _desiredDirection);
_rotation = Matrix.CreateFromAxisAngle(_rotationAxis, MathHelper.ToRadians(1));
Direction = Vector3.TransformNormal(Direction, _rotation);
} else {
_onDirectionReached();
_isLooking = false;
}
}
Một lần nữa, xoay hoạt động tốt; máy ảnh đạt đến hướng mong muốn của nó. Nhưng tốc độ không bằng quá trình di chuyển -> nó chậm lại.
Làm thế nào để đạt được một vòng quay với tốc độ không đổi?