矩阵-坐标空间转换
Contents
坐标空间转换
- 渲染管线(流水线)的基本概念是将数据分阶段的变为屏幕图像的过程
- 在渲染管线中的顶点阶段和光栅化阶段会对数据进行处理其中最重要的一部分工作就是坐标转换、顶点变换等等
- 矩阵主要就是来完成变换的 可以通过平移、旋转、缩放矩阵来完成对点或向量的变换
坐标空间是什么
坐标空间是一个用于描述和定位物体位置的数学概念。
一般由一个基础参照物(原点)和轴线(相互垂直的轴线)组成
常见的坐标空间包括二位平面坐标空间和三维空间
在三维空间中 通常决定一个原点(0,0,0)并使用三个坐标轴(通常是xyz轴)来描述点的位置
Unity中的坐标空间
- 世界坐标系
- 物体坐标系
- 屏幕坐标系
- 等等
之所以存在这么多不同的坐标空间,主要是因为不同的问题需要不同的坐标系来描述和解决特定的空间问题
坐标空间的变换
在Shader开发中 为了方便制作模型、使用模型、渲染模型 也存在很多不同的坐标空间
比如:模型空间、世界空间、观察空间、裁剪空间、屏幕空间
在设计模型时 使用的是模型空间(顶点、法线相关数据都是基于模型空间坐标系的)
当模型被导入Unity后,最终能够在屏幕上显示 就经历了一系列坐标转换
模型空间->世界空间->观察空间->裁剪空间->屏幕空间
坐标空间的变换规则
Unity中大部分的坐标空间 都是世界坐标空间的子坐标空间
这些子坐标空间的原点和轴向相关表示数据都是基于世界坐标空间的
因此在Unity的坐标空间中会形成一种层级结构