相机空间转换 (Direct3D 9)

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

V = V * wvMatrix

通过使用通用视图矩阵的反向转置转换对象法线来计算相机空间中的顶点法线。 通用视图矩阵可能正交,也可能不正交。

N = N * (wvMatrix⁻¹)T

矩阵反转和矩阵转置在 4 x 4 矩阵上进行。 乘法组合了法线与生成的 4 x 4 矩阵的 3 x 3 部分。

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

N = norm(N)

通过使用视图矩阵转换光源位置来计算相机空间中的光线位置。

Lₚ = Lₚ * vMatrix

将光源方向乘以视图矩阵,标准化,然后对结果求反,从而计算相机空间中定向光的光线方向。

Ldir = -norm(Ldir * wvMatrix)

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

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

参数 默认值 类型 说明
Ldir 空值 D3DVECTOR 从对象顶点到光线的方向矢量
V 空值 D3DVECTOR 相机空间中的顶点位置
wvMatrix 标识 D3DMATRIX 包含通用和视图转换的复合矩阵
N 空值 D3DVECTOR 顶点法线
Lₚ 空值 D3DVECTOR 相机空间中的光线位置
vMatrix 标识 D3DMATRIX 包含视图转换的矩阵

 

照明的数学运算