3D坐标系
左手系和右手系
点
x,y,z与w(齐次坐标)
矩阵
- 第一个下标表示行号,第二个下标表示列号。
- 矩阵乘法不满足交换律
- 矩阵乘法=矩阵合并
- 一个矩阵乘以它的逆矩阵=单位矩阵
变化矩阵
平移矩阵
缩放矩阵
除了可以缩放,
还可以利用缩放,在给定右手系的情况确定左手系,相互转换
旋转矩阵
3D空间中旋转物体,需要指定旋转轴和旋转角
向量
向量的加减法
归一化
点积的应用
- 求两个向量的夹角 (单位向量点积)
- 是否正交
- 是否同向
- 是否平行相反
- 是否在夹角范围内
- 向量大小
- 点到平面的距离
叉积的应用
生成一个正交于两个向量的向量
遵循右手定则
局部空间与世界空间
局部空间 local space:物体的坐标系,又名模型空间 model space 物体空间 object space
在世界空间中为对象定位及定向的矩阵称为模型矩阵,通常记为 M
视觉空间和合成相机
已知OpenGl相机的位置永远是原点,相机的方向永远是z轴负方向,相机的上方永远是y轴正方向。
那么想要将物体放到相机前方,需要将物体的坐标系转换到相机坐标系即可。
我们根据虚拟/期望的相机位置/欧拉角,来计算视图变换矩阵,将物体从世界坐标转换到相机坐标系。
将平移和旋转矩阵(相机从原点移动到期望位置)合并得到的矩阵称为视图变换矩阵(viewing transform),记作 V。
视图变换矩阵
模型-视图(Model-View,MV)矩阵:模型空间直接转换至相机空间(把M模型矩阵和V视图变换矩阵合并了)
投影矩阵
透视投影矩阵
参数:纵横比、视场、近剪裁平面(也称投影平面)、远剪裁平面
视场 Field Of View, FOV:是可视空间的纵向角度
横纵比 aspect ratio:远近剪裁平面的宽度与高度之比
正交投影矩阵
参数:
(a)从相机到投影平面的距离 znear;
(b)从相机到远剪裁平面的距离 zfar;
(c)L、R、T 和 B 的值,其中 L 和 R 分别是投影平面左、右边界的 x 坐标,T 和 B 分别是投影、平面上、下边界的 y 坐标。
LookAt矩阵
当你想要把相机放在某处并看向一个特定的位置时,就需要用到它。
参数
- 叉积计算
- fwd相机正面
- side相机侧面
- up相机上面
- 相机位置
- 目标位置
构建矩阵变换的GLSL函数
GLSL