Unity Shader 空间坐标系
一个顶点坐标从模型到最终渲染到屏幕中需要经过顶点变换。其中顶点需要经过多个坐标空间的转换才能最终显示到屏幕上。
1. 模型空间
模型空间,是某个模型或者对象有关的。以这个模型的原点为参照物,每个模型都有自己的独立的坐标空间,当它移动或者旋转时,模型空间也会随之移动和旋转。模型空间也被成为对象空间或者局部空间。
模型空间的原点和坐标轴由美术人员在建模软件中定好。
2. 世界空间
世界空间是游戏中最大(最外层)的空间,类比到现实世界中就是经纬度和海拔(高度值)。世界空间描述基于世界原点的坐标,为游戏空间提供一个相对于世界原点的绝对位置。
顶点变换的第一个步骤就是将顶点坐标从模型空间转换到世界空间中,这个转换称为模型转换。
3. 观察空间(摄像机空间)
摄像机决定了渲染游戏所使用的视角。在观察空间中,摄像机位于原点,unity中观察空间采用右手坐标系,+x轴指向右方,+y轴指向上方,+z轴指向摄像机后方。
顶点变换的第二步就是将顶点坐标从世界空间转换到观察空间中。这个变换称为观察变换。
4.裁剪空间
裁剪空间是方便渲染的图元进行裁剪,对处于该空间内的图元进行渲染,而不处于该空间的图元进行剔除。裁剪空间由视锥体决定。
视锥体:视锥体指空间内的一块区域,该区域决定了摄像机可以看到的空间。视锥体由六个平面包围而成,这些平面称为裁剪平面。视锥体有两种类型,一种是正交投影,一种是透视投影。正交投影中,模型的渲染大小与离摄像机的远近没有关系,只与模型的基础大小有关。而透视投影中离摄像机越远的物体渲染出来就越小,模拟了人眼看世界的效果。
5.屏幕空间
屏幕空间就是最终显示到屏幕的空间,这时候我们会得到真正的像素位置,这个位置是屏幕的二维坐标。