private void DoKeyboardRotation() { var keyboardRotationX = 0.0; var keyboardRotationY = 0.0; var keyboardRotationZ = 0.0; if (_pressedKeys.Contains(_pitchUp)) { keyboardRotationY = ApplicationConfiguration.KeyboardRotationDelta; } if (_pressedKeys.Contains(_pitchDown)) { keyboardRotationY = -ApplicationConfiguration.KeyboardRotationDelta; } if (_pressedKeys.Contains(_yawUp)) { keyboardRotationZ = ApplicationConfiguration.KeyboardRotationDelta; } if (_pressedKeys.Contains(_yawDown)) { keyboardRotationZ = -ApplicationConfiguration.KeyboardRotationDelta; } if (_pressedKeys.Contains(_rollUp)) { keyboardRotationX = ApplicationConfiguration.KeyboardRotationDelta; } if (_pressedKeys.Contains(_rollDown)) { keyboardRotationX = -ApplicationConfiguration.KeyboardRotationDelta; } CameraViewModel.Rotate(keyboardRotationX, keyboardRotationY, keyboardRotationZ); }
private void DoKeyboardMovement() { var delta = new Vector3D(); if (_pressedKeys.Contains(_forward)) { delta += CameraViewModel.UnaryForward; } if (_pressedKeys.Contains(_backward)) { delta -= CameraViewModel.UnaryForward; } if (_pressedKeys.Contains(_left)) { delta += CameraViewModel.UnaryLeft; } if (_pressedKeys.Contains(_right)) { delta -= CameraViewModel.UnaryLeft; } if (_pressedKeys.Contains(_up)) { delta += CameraViewModel.UnaryUp; } if (_pressedKeys.Contains(_down)) { delta -= CameraViewModel.UnaryUp; } CameraViewModel.Move(delta); }
private void DoOrbitMovement() { var sphereCenter = new Point3D(0, 0, 0); var mousePositionWhenButtonPressed = _pressedButtons[ApplicationConfiguration.OrbitMouseButton]; var vector = mousePositionWhenButtonPressed - _currentMousePosition; if (vector.Length != 0) { vector.Normalize(); } var rotationY = -vector.Y; var rotationZ = vector.X; var transformGroup = new Transform3DGroup { Children = new Transform3DCollection { new RotateTransform3D(new AxisAngleRotation3D(CameraViewModel.UnaryLeft, rotationY), sphereCenter), new RotateTransform3D(new AxisAngleRotation3D(CameraViewModel.UnaryUp, rotationZ), sphereCenter) } }; //This does the orbiting var newPosition = transformGroup.Transform(CameraViewModel.Position); CameraViewModel.Move(newPosition); //This makes the camera face the center of the sphere CameraViewModel.LookAt(sphereCenter); }
private void DoMouseWheelMovement() { if (_wheelDelta > 0) { _wheelDelta--; CameraViewModel.Move(CameraViewModel.UnaryForward * ApplicationConfiguration.MouseWheelDelta); } else if (_wheelDelta < 0) { _wheelDelta++; CameraViewModel.Move(-CameraViewModel.UnaryForward * ApplicationConfiguration.MouseWheelDelta); } }
private void DoMouseRotation() { var mousePositionWhenButtonPressed = _pressedButtons[ApplicationConfiguration.RotateMouseButton]; var vector = mousePositionWhenButtonPressed - _currentMousePosition; if (vector.Length != 0) { vector.Normalize(); } vector = vector * ApplicationConfiguration.MouseRotationDelta; CameraViewModel.Rotate(0, -vector.Y, vector.X); }
private void DoMousePanMovement() { var mousePositionWhenButtonPressed = _pressedButtons[ApplicationConfiguration.PanMouseButton]; var vector = mousePositionWhenButtonPressed - _currentMousePosition; if (vector.Length != 0) { vector.Normalize(); } var movementVector = CameraViewModel.UnaryUp * vector.Y + CameraViewModel.UnaryLeft * vector.X; CameraViewModel.Move(movementVector * ApplicationConfiguration.MousePanDelta); }