0
我想做一個簡單的矢量旋轉。旋轉矢量
目標是領導我的第一人稱攝像機,它正在指向目標t方向d到新方向d1的新目標t1。
d和d1之間的過渡應該是一個平滑的運動。
隨着
public void FlyLookTo(Vector3 target) {
_flyTargetDirection = target - _cameraPosition;
_flyTargetDirection.Normalize();
_rotation = new Matrix();
_rotationAxis = Vector3.Cross(Direction, _flyTargetDirection);
// This bool tells the Update()-method to trigger the changeDirection() method.
_isLooking = true;
}
我開始與它的新參數的方向變化和
// this method gets executed by the Update()-method if the isLooking flag is up.
private void _changeDirection() {
dist = Vector3.Distance(Direction, _flyTargetDirection);
// check whether we have reached the desired direction
if (dist >= 0.00001f) {
_rotationAxis = Vector3.Cross(Direction, _flyTargetDirection);
_rotation = Matrix.CreateFromAxisAngle(_rotationAxis, MathHelper.ToRadians(_flyViewingSpeed - Math.ToRadians(rotationSpeed)));
// update the cameras direction.
Direction = Vector3.TransformNormal(Direction, _rotation);
} else {
_onDirectionReached();
_isLooking = false;
}
}
我執行實際的運動。
我的問題:實際運行工作正常,但移動速度減慢更多的電流方向越接近所期望的方向,如果連續執行數次,這使得它非常不愉快的運動。
如何使相機以相同的速度從方向d移動到方向d1?
看到我的答案在這裏:http://gamedev.stackexchange.com/questions/38594/rotate-a-vector和在這裏:http://stackoverflow.com/questions/12797811/rotation-axis-to-perform-迴轉 –