Unity-Shader读书笔记(3)
Unity-Shader读书笔记(3)
Unity中使用的坐标系
模型空间
模型(model space)空间也称为是对象空间(object space)或者局部空间(local space)。每一个模型都有自己独立的坐标空间,当它移动或是旋转的时候模型空间也会跟着它移动和旋转。Unity中模型空间是左手坐标系的。而模型空间中的原点和坐标轴一般是由美术人员在建模软件里面确定好的。
世界空间
Unity中世界空间是左手坐标系的。其实我们在Unity中布置场景的坐标系就是世界坐标系。
观察空间
Unity中观察空间是右手坐标系的。观察空间(view space),通俗来说就是以摄像机位为原点的坐标系,所以观察空间也被称作摄像机空间(camera space)。在这个坐标系中,摄像机的前向(摄像机所观察的方向)是z轴的负方向,所以z方向的值减少意味着场景深度增加。
裁剪空间
裁剪空间(clip space)也被称为齐次裁剪空间。裁剪空间的目标是能够方便的对渲染图元进行裁剪。而如何去裁剪这就要由视椎体来决定了。关于这些可以看这个视频GAMES101-现代计算机图形学入门-闫令琪。
屏幕空间
屏幕空间是一个二维空间,我们将把顶点从裁剪空间投影到屏幕空间中来生成对应的二维坐标。
模型变化顺序
绝大多数的情况下,我们约定变换的顺序是先缩放再旋转最后做平移。
这是因为如果我们使用矩阵进行这些操作这样的顺序才会让变化只针对图形本身。(这里我表达的确实不够清楚,以后有机会一定补上。)而旋转也是按照一定的顺序去做的,在Unity中这个旋转顺序是zxy,这一点在Unity官网上也有说明Rotation and orientation in Unity - Unity 手册,只是在我看的时候还没有翻译成中文。
顶点变换
顶点变换的第一步:坐标顶点从模型空间坐标转变为世界空间坐标。这个变换也被称作模型变换(model transform)。
顶点变换的第二步:坐标顶点从世界空间坐标转变为观察空间坐标。这个变换也被称作观察变换(view transform)。
顶点变换的第三步:坐标顶点从观察空间坐标转变为裁剪空间坐标。这个变换也被称作投影变换。
顶点变换的第四步:坐标顶点从裁剪空间坐标转变为裁屏幕间坐标。这个变换也被称作屏幕映射。
Unity Shader的内置变量
PS:其实书中也是介绍一下这些变量,再多提用法。我觉得没啥用所以就放个官网的链接。
这部分书中大多数是讲解数学。而关于裁剪的部分我个人觉得还是去看b站的视频就好了,因为本身大佬的讲解就很通俗易懂了。所以这部分我也没有记录什么。