shader|顶点的模型变换

    顶点变换的第一步,就是将顶点坐标从模型空间变换到世界空间中。这个变换通常叫做模型变换。

一、模型空间

    模型空间也被称为对象空间、局部空间。每个模型都有自己独立的坐标空间,当它移动或旋转的时候,模型空间也会跟着它移动和旋转。
    在模型空间中,我们经常使用一些方向概念,例如:前、后、左、右、上、下。
Unity在模型空间中使用的是左手坐标系,因此,在模型空间中,+x轴、+y轴、+z轴分别对应的是模型的右方、上方、前方。

二、世界空间

    在Unity中经常有父物体、子物体的层次关系。我们有时候需要知道在父物体经过一系列坐标变换后,子物体在世界坐标中的位置。这时,我们只需要把子物体从父物体中拖出来就可以就看到Position的相关数据,但是,数据是通过怎样的运算得到的呢?

    比如:父物体此时坐标为(0,0,0),子物体在父物体中的坐标为(0,2,4),扩展到齐次坐标系下为(0,2,4,1),此时将父物体模型扩大2倍,绕y轴旋转150度,向右方平移5个单位、前方平移25个单位,那么此时子物体在世界坐标中的位置是多少?

在Unity中显而易见,子物体在世界坐标中的位置是(9,4,18.0716):

shader|顶点的模型变换

shader|顶点的模型变换

shader|顶点的模型变换

底层运算过程如下:

shader|顶点的模型变换

发布了162 篇原创文章 · 获赞 20 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_39766005/article/details/84851344
今日推荐