相机空间转换 (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 | 包含视图转换的矩阵 |
相关主题