矩阵在游戏开发中的应用

矩阵在游戏开发中的平移变换:
刚开始看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数学:图形与游戏开发》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zero游戏开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值