矩阵在游戏开发中的应用
矩阵在游戏开发中的平移变换:
刚开始看3D数学学了矩阵之后并不明白他在游戏中的实际应用到底是怎么回事。
比如(1,0,0)可以表示一个点,也可以表示一个向量,当作为一个点沿x轴平移一个单位之后他的结果是(2,0,0),但是作为一个向量平移之后他的结果是不变的。因此我们需要用到矩阵去进行变换。
一般使用4*4的矩阵进行变换,可能会有人想为什么不用3*3,那样不正好吗?首先先设置一个矩阵M,把一个点放在一个向量v中,v*M=w,w就是变换之后的矩阵,但是还是如上面的例子一样,作为一个点和向量平移之后的结果不同,因此不能用3*3矩阵去表示。
那为什么用4*4就可以呢,请继续往下看。
平移
比如一个点D(x,y,z)要进行平移,我们只要将一个平移向量Q(tx,ty,tz)与其相加就行了,平移之后就是(x+tx,y+ty,z+tz),但是是4*4的矩阵所以我们要增加一个维度w,则行向量为[x,y,z,w]。
设位移向量b=(tx,ty,tz),点(x,y,z)经过位移之后的点为(x+tx,y+ty,z+tz).
如果我们把偏移量放在斜边上的三个位置,则变换后只是简单的倍数关系
如果把偏移量放在最后一行的三个位置则是于位移偏量的相加,第四个数为w*w
这样就很明显看出(x,y,z)的变换。
如果(x,y,z)是坐标就让w=1;
如果(x,y,z)是向量就让w=0
unity中输出物体矩阵信息测试:
缩放:
缩放可以改变一个物体的大小形状,在unity中进行变化就可以通过倍数关系的矩阵,可以采用下面的形式:
这样就放大了a倍。
举个例子,比如通过一个最小点(-4,-4,0)和一个最大点(4,4,0)来定义一个正方形,希望将其沿x轴缩小0.5倍,y轴放大2倍,z轴不变,则我们对应的缩放矩阵则是:
旋转:
先说下旋转该怎么表示,在2D旋转中:
p旋转到q可以得到以下形式的构造矩阵:
所以在3D旋转中一个轴的旋转可以得出:
那么最后三个轴,也就是一个物体的旋转可以推导为:
推导过程很复杂,有兴趣可以看一下。
参考文献:《3D数学:图形与游戏开发》
矩阵在游戏开发中的应用相关推荐
- 3D游戏开发中的矩阵详解
矩阵很多同学没有接触过,所以感觉很难,很复杂,其实只要学过矩阵的同学都知道,矩阵运算并不难.今天我们给大家讲讲游戏开发中的矩阵的运算. 这里有个游戏开发交流小组 大家可以一起来学习交流哦 1:矩阵是什 ...
- 游戏开发中的矩阵与变换
游戏开发中的矩阵与变换 介绍 矩阵组件和恒等矩阵 缩放转换矩阵 旋转变换矩阵 变换矩阵的基础 翻译转换矩阵 全部放在一起 剪切变换矩阵(高级) 转换的实际应用 在转换之间转换位置 相对于自身移动对象 ...
- 游戏开发中的进阶向量数学
游戏开发中的进阶向量数学 飞机 到飞机的距离 远离原点 以2D方式构建平面 飞机的一些例子 3D碰撞检测 更多信息 飞机 点积具有带有单位向量的另一个有趣的属性.想象一下,垂直于该矢量(并通过原点)的 ...
- 【转载】【《Real-Time Rendering 3rd》 提炼总结】(九) 第十章 · 游戏开发中基于图像的渲染技术总结
本文由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/78309500 这是一篇近万字的总结式 ...
- 游戏开发中的数学和物理算法10-18
1.标量 标量只有大小没有方向. 2.矢量 矢量既有大小又有方向. 3.常用举例: 物理上常用的矢量与标量的对应概念有:速度和速率:距离和位移等.如图: 距离: 假设A到B的距离为a,B到C的距离为b ...
- 【《Real-Time Rendering 3rd》 提炼总结】(九) 第十章 · 游戏开发中基于图像的渲染技术总结
本文由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/78309500 这是一篇近万字的总结式 ...
- 游戏开发中必备的数学知识(一)——向量
3D空间中的向量 向量:只有长度和方向,不含有位置信息的量,也就是说,两个向量只要长度和方向相同,则二者相同. 左手坐标系和右手坐标系 同样是三维的坐标系,两者的差别在Z轴上面.在左手坐标系中,Z轴正 ...
- 坦克大战游戏开发中的设计模式总结
坦克大战游戏开发中的设计模式总结 github地址: https://github.com/2017403603/TankGame_Simple1.0.git https://github.com/2 ...
- 游戏开发中的基本物理学知识
第三章:不能再简单的世界 在真正开始编写之前,先回顾一下初中学过的经典物理的知识,OK,闭上眼睛想三分钟,嗯,动量守恒,摩擦系数,胡克定律,弹性碰撞...是不是突然想到了很多,但是并不系统,这里就简单 ...
最新文章
- chrome浏览器本地文件支持ajax请求的解决方法
- C#使用剪切板复制程序
- 使用html元素的getBoundingClientRect来获取dom元素的时时位置和大小
- 微软官方首度回应黑屏恐慌:不强制 不诉讼
- Failed to connect to database. Maximum number of connections to instance exceeded
- tensorflow错误:InvalidArgumentError (see above for traceback): Cannot assign a device for operation
- WebForm控件多字段绑定
- 05-用两个栈实现一个队列
- 游戏开发者“谈虎色变”的游戏审批流程到底是怎么一回事?
- 苍天有眼,我终于搞定了win7使用建行华大智宝U盾的问题了!
- SpringBoot+Mybatis-Plus+Shiro整合的RBAC权限系统
- 计算机的主要配件是哪两个,组成计算机cpu的两大部件是什么
- 【NA】埃尔米特插值法
- SoviChart数据可视化:条形图(Bar chart)
- 转载之-中值滤波均值滤波
- 广州车展直击:现代汽车携豪华阵容共建未来汽车生态圈
- java周记工作内容
- 帝国网站服务器,帝国CMS程序服务器迁移的方法
- 用Python将PPT转换PDF
- liunx系统基础知识