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


C# Matrix4.Invert方法代码示例

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


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

示例1: Render

        public bool Render(Material material, Light light, Camera camera, Matrix4 worldMatrix, Func<int, bool> renderDelegate)
        {
            Params["m_World"].SetValue(worldMatrix);
            Params["m_WorldIT"].SetValue(worldMatrix.Invert().Transpose());
            Params["m_WVP"].SetValue(worldMatrix * camera.ViewMatrix * camera.ProjectionMatrix);
            Params["g_vLightPos"].SetValue(light.Position);
            Params["m_ViewInv"].SetValue(camera.ViewMatrix.Invert());
            Params["DiffuseTexture"].SetValue(material.DiffuseTexture);
            Params["useNormalMap"].SetValue(material.UseNormalMap);
            Params["NormalTexture"].SetValue(material.NormalTexture);
            Params["specularPower"].SetValue(material.SpecularPower);
            Params["specularColor"].SetValue(material.SpecularColor);
            Params["useOffsetMapping"].SetValue(material.UseOffsetMapping);
            Params["HeightMapTexture"].SetValue(material.HeightMapTexture);
            Params["g_fOffsetBias"].SetValue(material.OffsetHeight);

            return RenderTechnique(renderDelegate, material.Technique);
        }
开发者ID:HaKDMoDz,项目名称:Irelia,代码行数:18,代码来源:Shader.cs

示例2: CalculateMatrices

        private void CalculateMatrices()
        {
            Rectangle viewport = GetViewport3D();
            _projectionMatrix = Matrix4d.Perspective(45, viewport.Width / (double) viewport.Height, 4, 512);

            Bounds3 vec = Bounds3.EmptyBounds;
            Bounds3 allBounds = Bounds3.EmptyBounds;
            int count = 0;

            if (CurrentModel != null)
            {
                int meshIndex = 0;
                foreach (Mesh mesh in CurrentModel.Meshes)
                {
                    allBounds += mesh.Bounds;

                    if (CurrentModel.PartsEnabled[meshIndex])
                    {
                        vec += mesh.Bounds;
                        count++;
                    }

                    meshIndex++;
                }
            }

            if (count == 0)
                vec.Mins = vec.Maxs = allBounds.Mins = allBounds.Maxs = Vector3.Zero;

            GrassY = allBounds.Maxs.Y;
            Vector3 center = vec.Center;

            _viewMatrix =
                Matrix4.CreateTranslation(-center.X + _3DOffset.X, -center.Y + _3DOffset.Y, -center.Z + _3DOffset.Z) *
                Matrix4.CreateFromAxisAngle(new Vector3(0, -1, 0), MathHelper.DegreesToRadians(_3DRotationY)) *
                Matrix4.CreateFromAxisAngle(new Vector3(1, 0, 0), MathHelper.DegreesToRadians(_3DRotationX)) *
                Matrix4.CreateTranslation(0, 0, _3DZoom);

            _cameraMatrix = _viewMatrix;
            _cameraMatrix.Invert();

            CameraPosition = Vector3.TransformPosition(Vector3.Zero, _cameraMatrix);
        }
开发者ID:rmbzlib,项目名称:mcskin3d,代码行数:43,代码来源:Editor.cs

示例3: calibrateZero

 /// <summary>
 /// Called to set the current yaw to be the offset. This is useful when trying to align the sensors to the screen.
 /// </summary>
 public Matrix4 calibrateZero()
 {
     mCalibratedOrientation =  transformOrientation(mCurrentOrientation);
     mCalibratedOrientation.Invert();
     mCalibYawPitchRoll = mYawPitchRoll;
     return mCalibratedOrientation;
 }
开发者ID:bittwiddler1,项目名称:SENSOR-AWARE-PERSONAL-TRAINER,代码行数:10,代码来源:Bone.cs

示例4: Process

 public void Process(BaseCameraApplication app)
 {
     bbox = app.GetPrimaryDevice().GetBoundingBox();
     GroundPlane = app.GetPrimaryDevice().GetGroundPlane();
     GroundPlane.Invert();
 }
开发者ID:zphilip,项目名称:PerceptualImaging,代码行数:6,代码来源:SceneBBoxRender.cs

示例5: Render

        /// <summary>
        /// Current Model View Should be Straight Forward!
        /// </summary>
        /// <param name="render"></param>
        /// <param name="zNear"></param>
        /// <param name="zFar"></param>
        /// <param name="m">Model View Should to Straight Forward</param>
        public void Render(Action render, float zNear, float zFar, Matrix4 m)
        {
            m.Invert();

            GL.loadProjection(90, 90, zNear, zFar);
            GL.Viewport(0, 0, this._Resolution, this._Resolution);

            GL.BindFramebuffer(FramebufferTarget.Framebuffer, this._FrameBuffer);
            GL.DrawBuffer((DrawBufferMode)FramebufferAttachment.ColorAttachment0);

            for (int i = 0; i < 6; i++)
            {
                if (this._Use[i])
                {
                    GL.FramebufferTexture2D(
                        FramebufferTarget.Framebuffer,
                        FramebufferAttachment.ColorAttachment0,
                        CubeColorMap._TextureTargets[i],
                        this._ColorText,
                        0);

                    GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

                    GL.LoadMatrix(ref CubeColorMap._Matrices[i]);
                    GL.MultMatrix(ref m);

                    render();
                }
            }

            GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0);
            GL.DrawBuffer(DrawBufferMode.Back);
        }
开发者ID:SnowmanTackler,项目名称:SamSeifert.GLE,代码行数:40,代码来源:CubeColorMap.cs

示例6: Update

        public void Update()
        {
            Console.WriteLine($"Position: {Position} Target: {Target}");

            //somehow it must be -d and -y
            var p0 = new Vector3(-1,  1, -D); //top left
            var p1 = new Vector3( 1,  1, -D); //top right
            var p2 = new Vector3(-1, -1, -D); //bottom left

            _cameraMatrix = Matrix4.LookAt(Position, Target, Vector3.UnitY);;
            _cameraMatrix.Invert();

            _p0     = Vector3.Transform(p0, _cameraMatrix);
            var tp1 = Vector3.Transform(p1, _cameraMatrix);
            var tp2 = Vector3.Transform(p2, _cameraMatrix);

            _e1 = tp1 - _p0;
            _e2 = tp2 - _p0;
        }
开发者ID:tincann,项目名称:AGR,代码行数:19,代码来源:Camera.cs

示例7: bestFitPlane

        private Vector3 bestFitPlane(Vector3[] vs)
        {
            Vector3 avgs = Vector3.Zero;

            foreach (Vector3 v in vs) avgs = Vector3.Add(v, avgs);

            avgs /= vs.Length;

            var zerod = new Vector3[vs.Length];

            for (int i = 0; i < vs.Length; i++) zerod[i] = Vector3.Subtract(avgs, vs[i]);

            // a b c
            // d e f
            // g h i
            Vector4 row1 = new Vector4(0, 0, 0, 0);
            Vector4 row2 = new Vector4(0, 0, 0, 0);
            Vector4 row3 = new Vector4(0, 0, 0, 0);
            Vector4 row4 = new Vector4(0, 0, 0, 1);

            Vector4 b = new Vector4(0, 0, 0, 1);

            foreach (Vector3 v in zerod)
            {
                row1.X += v.X * v.X;
                row1.Y += v.X * v.Z;
                row1.Z += v.X;

                row2.X += v.Z * v.X;
                row2.Y += v.Z * v.Z;
                row2.Z += v.Z;

                row3.X += v.X;
                row3.Y += v.Z;
                row3.Z += 1;

                b.X += v.Y * v.X;
                b.Y += v.Y * v.Z;
                b.Z += v.Y;
            }

            Matrix4 mat = new Matrix4(row1, row2, row3, row4);
            mat.Invert();

            Vector4 result;
            Vector4.Transform(ref b, ref mat, out result);
            Vector3 ret = new Vector3(result.X, -1, result.Y);

            ret.Normalize();

            if (ret.Y < 0) ret *= -1;

            return ret;
        }
开发者ID:SnowmanTackler,项目名称:SamSeifert.GLE,代码行数:54,代码来源:HeightMapCircle.cs

示例8: Matrix4_InvertTest

        public void Matrix4_InvertTest()
        {
            Matrix4 a = new Matrix4(1, 2, 2, 2,
                    2, 2, 1, 1,
                    1, 2, 1, 0,
                    1, 2, 2, 1);

            Matrix4 b = new Matrix4(-1, 1, -1, 1,
                             1, -0.5f, 1.5f, -1.5f,
                            -1, 0, -1, 2,
                             1, 0, 0, -1);

            Assert.AreEqual(b, a.Invert());

            Matrix4 ai = a.Invert();
            Assert.AreEqual(b, ai);

            // A(A-1) = (A-1)A = I
            Assert.AreEqual(Matrix4.Identity, a * a.Invert());
            Assert.AreEqual(Matrix4.Identity, a.Invert() * a);

            // (AB)-1 = B-1A-1
            Matrix4 c = new Matrix4(2, 3, 2, 2,
                            3, 3, 3, 3,
                            3, 2, 2, 3,
                            3, 2, 1, 2);
            // TODO: Fail in release mode.
            //Assert.AreEqual((a * c).Invert(), c.Invert() * a.Invert());

            // (M-1)-1 = M
            Assert.AreEqual(a, a.Invert().Invert());

            // I-1 = I
            Assert.AreEqual(Matrix4.Identity, Matrix4.Identity.Invert());

            // (MT)-1 = (M-1)T
            Assert.AreEqual(a.Transpose().Invert(), a.Invert().Transpose());
        }
开发者ID:HaKDMoDz,项目名称:Irelia,代码行数:38,代码来源:Matrix4Test.cs

示例9: CalculateProjection

        private void CalculateProjection()
        {
            Matrix4 view = Matrix4.LookAt(_position, _lookAt, _up);
            Matrix4 projection = Matrix4.Identity;
            switch (_cameraType)
            {
                case CameraType.Perspective:
                    projection = Matrix4.CreatePerspectiveFieldOfView(_fov, _aspectRatio, _zNear, _zFar);
                    break;

                case CameraType.Orthogonal:
                    projection = Matrix4.CreateOrthographic(_width * _fov, _height * _fov, _zNear, _zFar);
                    break;

                case CameraType.HUD:
                    projection = Matrix4.CreateOrthographicOffCenter(0.0f, _width, _height, 0.0f, _zNear, _zFar);
                    break;
            }
            _viewProjectMatrix = view * projection;
            _invViewProjectMatrix = _viewProjectMatrix;
            _invViewProjectMatrix.Invert();
            _isDirty = false;
        }
开发者ID:Tokter,项目名称:TokED,代码行数:23,代码来源:Camera.cs

示例10: invert

        public static void invert() {
            var m = new Matrix4(_priorInv);

            m.Invert();

            AreEqual(_postInv, m, 10);
        }
开发者ID:aarondandy,项目名称:vertesaur,代码行数:7,代码来源:Matrix4Facts.cs

示例11: Initialize

        public bool Initialize(String daeFileName)
        {
            var fi = new FileInfo(daeFileName);
            if (!fi.Exists)
                return false;

            var scene = LoadDaeScene(fi.FullName);
            if (scene == null)
                return false;

            foreach (var t in BodyMeshes)
                t.Destroy();
            BodyMeshes.Clear();
            Bones.Clear();
            bonesMapping.Clear();
            Animations.Clear();
            Poses.Clear();
            rootNode = null;
            СurrentAnimation = null;

            m_globalInverseTransform = FromMatrix(scene.RootNode.Transform);
            m_globalInverseTransform.Invert();

            var title = Path.GetFileNameWithoutExtension(fi.FullName);
            LoadBodyMeshes(fi.FullName, scene, scene.RootNode, null);
            LoadBonesInfo(rootNode);
            LoadAnimations(scene, title);

            return true;
        }
开发者ID:reward-hunters,项目名称:PrintAhead,代码行数:30,代码来源:AnimationController.cs


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