Esempio n. 1
0
        //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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }