坐标变换-知识点


概念:
1、齐次坐标
“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换“
从普通坐标转换成齐次坐标时,
如果(x,y,z)是个点,则变为(x,y,z,1);
如果(x,y,z)是个向量,则变为(x,y,z,0)
从齐次坐标转换成普通坐标时,
如果是(x,y,z,1),则知道它是个点,变成(x,y,z);
如果是(x,y,z,0),则知道它是个向量,仍然变成(x,y,z)
2、线性插值
,从a到b的每一个点都与c到d上的唯一一个点对应。有一个x,就可以求得一个y。
此外,如果x不在[a, b]内,比如x < a或者x > b,则得到的y也是符合y < c或者y > d,比例仍然不变,插值同样适用。


非一致缩放(non-formscalings) UnityObjectToWorldDir和UnityObjectToWorldNormal区别 首先,将法线 norm 从模型空间转换到世界空间,需要用 unity_ObjectToWorld 的逆转置矩阵左乘该法线。(书4.7) 其次,unity_WorldToObject 是 unity_ObjectToWorld 的逆矩阵。那么我们只需要进行转置操作即可。 所以,法线 norm 在世界空间中的表示为 mul((float3x3)transpose(unity_WorldToObject), norm)。 因为 unity_WorldToObject 为行主序的矩阵(书4.9.2),所以可以很容易得到,上述 mul 运算的结果为 unity_WorldToObject[0].xyz * norm.x + unity_WorldToObject[1].xyz * norm.y + unity_WorldToObject[2].xyz * norm.z