//Called once before the drawing sequence ==> Computed interpolated values here ! public override void VTSUpdate(double interpolationHd, float interpolationLd, float elapsedTime) { //Do interpolation on the value received at update time Vector3D.Lerp(ref _worldPosition.ValuePrev, ref _worldPosition.Value, interpolationHd, out _worldPosition.ValueInterp); Quaternion.Slerp(ref _cameraOrientation.ValuePrev, ref _cameraOrientation.Value, interpolationLd, out _cameraOrientation.ValueInterp); Quaternion.Slerp(ref _cameraYAxisOrientation.ValuePrev, ref _cameraYAxisOrientation.Value, interpolationLd, out _cameraYAxisOrientation.ValueInterp); ComputeCameraMatrices(); _frustum = new SimpleBoundingFrustum(ref _viewProjection3D); }
protected virtual void CameraInitialize() { _cameraOrientation.Initialize(Quaternion.Identity); float aspectRatio = Viewport.Width / Viewport.Height; Matrix.PerspectiveFovLH((float)Math.PI / 3, aspectRatio, NearPlane, FarPlane, out _projection3D); var matrix = Matrix.Identity; if (_frustum == null) { _frustum = new SimpleBoundingFrustum(ref matrix); } }
public override void VTSUpdate(double interpolationHd, float interpolationLd, float elapsedTime) { //Do interpolation on the value received at update time Vector3D.Lerp(ref _worldPosition.ValuePrev, ref _worldPosition.Value, interpolationHd, out _worldPosition.ValueInterp); Quaternion.Slerp(ref _cameraOrientation.ValuePrev, ref _cameraOrientation.Value, interpolationLd, out _cameraOrientation.ValueInterp); Quaternion.Slerp(ref _cameraYAxisOrientation.ValuePrev, ref _cameraYAxisOrientation.Value, interpolationLd, out _cameraYAxisOrientation.ValueInterp); //Console.WriteLine("From Interpolation : " + _worldPosition.ValueInterp); //The camera is used as a focus Point = Its the 0;0;0 reference point in world space !! FocusPoint.ValueInterp = _worldPosition.ValueInterp; FocusPointMatrix.ValueInterp = Matrix.Translation(_worldPosition.ValueInterp.AsVector3() * -1); ComputeCameraMatrices(); _frustum = new SimpleBoundingFrustum(ref _viewProjection3D); }
public override void VTSUpdate(double interpolationHd, float interpolationLd, float elapsedTime) { if (_zoomingPower != 0.0f) { if (_zoomingPower > 0) { _offsetDistance -= _zoomingStep * (float)elapsedTime; _zoomingPower -= _zoomingStep * (float)elapsedTime; if (_zoomingPower < 0.0f) { _zoomingPower = 0.0f; } if (_offsetDistance < 0.0f) { _offsetDistance = 0.0f; } } else { _offsetDistance += _zoomingStep * (float)elapsedTime; _zoomingPower += _zoomingStep * (float)elapsedTime; if (_zoomingPower > 0.0f) { _zoomingPower = 0.0f; } if (_offsetDistance > MaxDistance) { _offsetDistance = MaxDistance; } } } //Do interpolation on the value received at update time Vector3D.Lerp(ref _worldPosition.ValuePrev, ref _worldPosition.Value, interpolationHd, out _worldPosition.ValueInterp); Quaternion.Slerp(ref _cameraOrientation.ValuePrev, ref _cameraOrientation.Value, interpolationLd, out _cameraOrientation.ValueInterp); Quaternion.Slerp(ref _cameraYAxisOrientation.ValuePrev, ref _cameraYAxisOrientation.Value, interpolationLd, out _cameraYAxisOrientation.ValueInterp); //The camera is used as a focus Point = Its the 0;0;0 reference point in world space !! FocusPoint.ValueInterp = _worldPosition.ValueInterp; FocusPointMatrix.ValueInterp = Matrix.Translation(_worldPosition.ValueInterp.AsVector3() * -1); ComputeCameraMatrices(); _frustum = new SimpleBoundingFrustum(ref _viewProjection3D); }