相机空间转换 (Direct3D 9)

相机空间中的顶点是通过使用世界视图矩阵转换对象顶点来计算的。

V = V * wvMatrix

顶点法线(在相机空间中)通过用世界视图矩阵的反转置转换对象法线来计算。 世界视图矩阵可以是正交的,也可能不是正交矩阵。

N = N * (wvMatrix⁻ー)T

矩阵反转和矩阵转置在 4x4 矩阵上运行。 乘法与生成的 4x4 矩阵的 3x3 部分组合在一起。

如果呈现状态,则D3DRENDERSTATE_NORMALIZENORMALS设置为 TRUE,转换到相机空间后,顶点法向量将规范化,如下所示:

N = norm(N)

相机空间中的光位置通过转换光源位置与视图矩阵进行计算。

Lp = Lp * vMatrix

方向光的相机空间中光线的方向是通过将光源方向乘以视图矩阵、规范化和否定结果来计算的。

Ldir = -norm(Ldir * wvMatrix)

对于D3DLIGHT_POINT和D3DLIGHT_SPOT光方向的计算方式如下:

Ldir = norm(V * Lp),其中参数在下表中定义。

参数 默认值 类型 描述
Ldir N/A D3DVECTOR 从对象顶点到光线的方向向量
V N/A D3DVECTOR 相机空间中的顶点位置
wvMatrix 身份 D3DMATRIX 包含世界和视图转换的复合矩阵
N N/A D3DVECTOR 顶点法线
Lp N/A D3DVECTOR 相机空间中的光位置
vMatrix 身份 D3DMATRIX 包含视图转换的矩阵

 

照明 数学