《Unity Shader入门精要》第四章学习笔记
学习Shader所需要的数学基础
不懂数学者不得入内 -- 柏拉图学院碑文
- 笛卡尔坐标系 二维坐标系:
-
三维坐标系:
坐标轴,也被成为坐标系的基矢量,
**三维坐标系分为: **
左手系:顺时针旋转为正
右手系:逆时针旋转为正
左手系和右手系,不能通过旋转来经行转换。
- Unity使用的坐标系: Unity 模型空间和世界空间使用左手系: right:+x up: +y forward: +z Unity 观察空间使用右手系
- 矢量运算:
矢量加减法: a+b = (ax+bx,ay+by,az+bz) a-b = (ax-bx,ay-by,az-bz) 矢量点积(内积):a.b = (ax,ay,az).(bx,by,bz) = (axbx + ayby + azbz
a.b = |a||b|cos$ 点积的几何意义:b矢量在矢量a上的投影 矢量叉积(外积):axb
= (ax,ay,az)x(bx,by,bz) = (aybz-azby,azbx-axbz,axby-aybx)
-
Matrix 转置矩阵 逆矩阵 正交矩阵: 一个方阵M和它的转置矩阵的成绩是单位矩阵,则该矩阵是正交矩阵,反之也成立。 正交矩阵的逆矩阵等于它的转置矩阵
行矩阵、列矩阵表示矢量决定了矢量是左乘还是右乘。 Unity中,把矢量放在矩阵的右侧,即把矢量转换成列矩阵来计算,这意味着我们的矩阵通常都是右乘矢量,对于矢量则是:矢量左乘变换矩阵。 常规认为:列矩阵(openGL矩阵)叫左乘。
坐标系变换:
模型空间(Model space)也叫作对象空间、局部空间
|
世界空间
|
观察空间(摄像机空间)
|
裁剪空间(clip space,也被称为齐次裁剪空间) 它使用的矩阵被叫做投影矩阵(包含正交投影矩阵和透视投影矩阵)
|
透视除法
|
屏幕空间