Shader入门(8)各种坐标空间的定义和变换演示

文中内容主要参考书籍《unity shader入门精要》,作者为冯乐乐。

该篇建议先浏览前面篇章的渲染流水线部分结合理解。

一、模型空间(model space)
模型空间(model space)在不同的游戏引擎或者是软件中又称作对象空间(object space)或者局部空间(local space)。
在游戏中的每一个模型或者物体都有各自独立的坐标空间,模型有自己的前后左右,这是它的自身属性,旋转或者是移动和缩放模型并不能改变它的前后左右。
在这里插入图片描述
在Unity中,模型空间使用的是左手坐标系,因此在模型空间中,+x轴+y轴+z轴分别对应的是模型的右,上和前向。如上图。
模型的顶点坐标是根据模型空间的原点定义的,在上图中的正方体中,模型空间的原点就在模型的几何中心,但是模型空间的原点是可以编辑的,在很多其他模型中,原点可以是任何位置。
当模型放在场景中之后,就会产生一个基于模型原点模型空间。因为模型的长宽高都是1,上面的正方体上的一点A点在模型空间中的坐标为(0.5,0.5,0.5)。

二、世界空间(world space)
世界空间是最外层的空间,可以被用于描述绝对位置,这个绝对位置的概念类似于在我们现实世界的经度纬度海拔,而前一部分说的模型坐标则可以理解为个人的前后左右。

在Unity编辑场景时,选中一个模型的细节面板,其中的Transform属性栏表示的就是模型原点在世界空间中进行的变换。
在这里插入图片描述
比如我们之前的正方体的坐标就如上图显示。
在渲染中,顶点变换的第一步就是把顶点从模型空间转换到世界空间。空间变换的第一步就是要构建变换矩阵。构建变换矩阵其实就是根据子空间原点在父空间中进行的变换来再对顶点进行一次同样的变换。
根据上图的ransform属性栏可以看出,模型在世界坐标下进行了(2,2,2)的缩放,围绕y轴旋转了30度,还被移动了(1,3,5)个单位。那么就可以计算变换矩阵M model->world:

在这里插入图片描述

在这里需要注意的是,看Transform面板的时候是从下往上看的,最先做缩放,再旋转,再移动。而在计算变换矩阵的时候,最后做的动作放在最左边,最先做的动作放在最右边。

有了如上的变换矩阵就可以对A点进行空间变换了。
在这里插入图片描述
所以,A点在世界空间中的坐标就是(2.366, 4, 5.366)。

如果要从世界空间再变回模型空间的话,很明显是不能直接转置整个M model->world变换矩阵的,因为他不是正交矩阵。根据定理:1.正交矩阵的转置矩阵等于它的逆矩阵2.一个矩阵的逆矩阵和它本身相乘结果是一个单位矩阵。我们可以验证

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值