当前位置: 首页>>代码示例>>C#>>正文


C# Matrix4.ExtractTranslation方法代码示例

本文整理汇总了C#中Matrix4.ExtractTranslation方法的典型用法代码示例。如果您正苦于以下问题:C# Matrix4.ExtractTranslation方法的具体用法?C# Matrix4.ExtractTranslation怎么用?C# Matrix4.ExtractTranslation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Matrix4的用法示例。


在下文中一共展示了Matrix4.ExtractTranslation方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ApplyMatrixTransform

        public static void ApplyMatrixTransform(TransformMatrix transformMat, matrix m)
        {
            var transform = transformMat.transform;
            var values = m.Values;
            var mat = new Matrix4(
                (float)values[0], (float)values[1], (float)values[2], (float)values[3],
                (float)values[4], (float)values[5], (float)values[6], (float)values[7],
                (float)values[8], (float)values[9], (float)values[10], (float)values[11],
                (float)values[12], (float)values[13], (float)values[14], (float)values[15]
            );
            mat.Transpose();
            transformMat.matrix *= mat;

            var translation = mat.ExtractTranslation();
            transform.Translation += translation;

            if (translation != Vector3.Zero)
                transform.Flags |= (int)Transform.TransformFlags.HasTranslation;

            var rotation = mat.ExtractRotation();
            transform.Rotation *= rotation;

            if (rotation != Quaternion.Identity)
                transform.Flags |= (int)Transform.TransformFlags.HasRotation;

            var scale = mat.ExtractScale();
            transform.ScaleShear[0, 0] *= scale[0];
            transform.ScaleShear[1, 1] *= scale[1];
            transform.ScaleShear[2, 2] *= scale[2];

            if (transform.ScaleShear != Matrix3.Identity)
                transform.Flags |= (int)Transform.TransformFlags.HasScaleShear;
        }
开发者ID:Norbyte,项目名称:lslib,代码行数:33,代码来源:ColladaHelpers.cs

示例2: BillboardMatrix

 /// <summary>
 /// Strip away the rotation in the view matrix to make an object always face the camera
 /// http://stackoverflow.com/questions/5467007/inverting-rotation-in-3d-to-make-an-object-always-face-the-camera/5487981#5487981
 /// </summary>
 public static Matrix4 BillboardMatrix(ref Matrix4 modelViewMat)
 {
     Vector3 trans = modelViewMat.ExtractTranslation();
     Vector3 scale = modelViewMat.ExtractScale();
     return new Matrix4 (
         scale.X, 0f, 0f, 0f,
         0f, scale.Y, 0f, 0f,
         0f, 0f, scale.Z, 0f,
         trans.X, trans.Y, trans.Z, 1f);
 }
开发者ID:kniteli,项目名称:SimpleScene,代码行数:14,代码来源:OpenTKHelper.cs

示例3: Camera

        public Camera(int viewportWidth, int viewportHeight, Matrix4 cameraViewMatrix, string name = "Default")
        {
            PreciseTimer = new Stopwatch();

            SetViewportSize(viewportWidth, viewportHeight);

            Location = cameraViewMatrix.ExtractTranslation();
            CameraViewMatrix = cameraViewMatrix;

            //TODO: Someone figure out what this section is meant to be. (tree_game is a good test)
            var quaternion = CameraViewMatrix.ExtractRotation(false);
            Pitch = quaternion.Y;
            Yaw = quaternion.Z;

            Name = name;
        }
开发者ID:SteamDatabase,项目名称:ValveResourceFormat,代码行数:16,代码来源:Camera.cs

示例4: ApplyLightMatrix

        public static void ApplyLightMatrix(Matrix4 world)
        {
            int uEyePosition = Graphics.GetShader().GetUniformLocation("uEyePosition");
            Vector4 eyePosition = Vector4.Transform(new Vector4(world.ExtractTranslation(), 1), world);
            GL.Uniform4(uEyePosition, ref eyePosition);

            for (int i = 0; i < _numLights; i++)
            {
                Vector4 position = _lights[i].Position;
                int uLightPositionLocation = Graphics.GetShader().GetUniformLocation("uLight[" + i + "].Position");
                position = Vector4.Transform(position, world);
                GL.Uniform4(uLightPositionLocation, position);

                Vector4 direction = _lights[i].Direction;
                int uLightDirectionLocation = Graphics.GetShader().GetUniformLocation("uLight[" + i + "].Direction");
                direction = Vector4.Transform(direction, world.ExtractRotation());
                GL.Uniform4(uLightDirectionLocation, direction);
            }
        }
开发者ID:jikoriko,项目名称:OpentkEngine,代码行数:19,代码来源:Lighting.cs

示例5: GenerateLookAt

 public virtual void GenerateLookAt(Matrix4 centerTransform)
 {
     Matrix4 e = new Matrix4();
     Matrix4 v = new Matrix4();
     e = Matrix4.CreateTranslation(1, 0, 0) * Matrix4.CreateRotationZ(Orientation.X) * Matrix4.CreateRotationY(Orientation.Y) * Matrix4.CreateTranslation(CameraSettings.Offset) *  centerTransform;
     v = Matrix4.CreateTranslation(CameraSettings.Offset) *  centerTransform;
     World.WorldMatrix = Matrix4.LookAt(v.ExtractTranslation(), e.ExtractTranslation(), Vector3.UnitY);
 }
开发者ID:jakakordez,项目名称:Eternal,代码行数:8,代码来源:Camera.cs

示例6: DrawMesh

 public static void DrawMesh(MeshReference mr, Matrix4 transform)
 {
     Mesh mesh = (Mesh)findFile(mr.PrimaryMesh, RFile.RFileType.Mesh).obj;
     if (mesh != null)
     {
         Matrix4 trans = transform * World.WorldMatrix;
         GL.LoadMatrix(ref trans);
         int dl = Graphics.GetDetailLevel(transform.ExtractTranslation(), mesh.Size);
         if (dl == 3) mesh.Draw(mr.MeshColor, false);
         else if (dl == 0) return;
         else if (dl < 3)
         {
             mesh = (Mesh)findFile(mr.LowPolyMesh, RFile.RFileType.Mesh).obj;
             if (dl == 2) mesh.Draw(mr.MeshColor, false);
             else mesh.Draw(mr.MeshColor, true);
         }
     }
 }
开发者ID:jakakordez,项目名称:Eternal,代码行数:18,代码来源:Resources.cs


注:本文中的Matrix4.ExtractTranslation方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。