Exemplo n.º 1
0
        private Matrix44 CorrectCameraTransform(Matrix44 origin)
        {
            Matrix44 rotationMatrix;
            Vector3  translation;
            Vector3  scale;

            origin.Decompose(out scale, out rotationMatrix, out translation);
            var newRotation = rotationMatrix.Rotation * CameraPostRotation;

            return(Matrix44.CreateRotation(newRotation) * Matrix44.CreateScale(scale) * Matrix44.CreateTranslation(translation));
        }
Exemplo n.º 2
0
        Matrix44 CalcGizmoTransform(Matrix44 modelGlobalTransform, float gizmoRadiusInPixels)
        {
            var        viewport = GetCurrentViewport3D();
            var        camera = viewport.Camera;
            Vector3    scale, translation;
            Quaternion rotation;

            modelGlobalTransform.Decompose(out scale, out rotation, out translation);
            float distance = (camera.Position - translation).Length;
            var   vfov     = camera.FieldOfView / camera.AspectRatio;
            float s        = gizmoRadiusInPixels * distance * (2 * (float)Math.Tan(vfov / 2) / viewport.Height);

            return(Matrix44.CreateRotation(rotation) * Matrix44.CreateScale(s, s, s) * Matrix44.CreateTranslation(translation));
        }
Exemplo n.º 3
0
 /*!
  * This is a conveniance function that allows you to set the rotation, scale, and translation of an AV object with a 4x4 matrix transform.
  * \n A 4x4 transformation matrix to set the AVObject's transform attributes with.
  * \sa INode::GetLocalTransform
  */
 public void SetLocalTransform(Matrix44 value) => value.Decompose(translation, rotation, scale);