假设我在worldspace中有法线,我想将它们转换为视图空间。我该怎么办?我已经尝试通过viewProjection矩阵和反向变换的视图矩阵将它们相乘,但两者都不起作用。蓝色通道(z轴)似乎缺失。我很迷惑。
答案 0 :(得分:1)
无需为您完成任务
要正常工作所有世界/对象变换应该在模型视图矩阵内,否则一些高级的东西,如 FOG 将无法正常工作(即GL_PROJECTION
矩阵滥用)但在大多数情况下你不会看到一件事......
在着色器上你可以处理自己的照明,这就是这种方式
point' = object_2_world_matrix * world_2_camera_matrix * projection_matrix * point
vector' = object_2_world_matrix(with origin 0,0,0) * world_2_camera_matrix(with origin 0,0,0) * vector
object_2_world_matrix
是表示渲染模型空间的变换矩阵
world_2_camera_matrix
是表示相机空间的反转变换矩阵
Z轴通常是观察方向
projection_matrix
只是透视矩阵(用于渲染......)
通过将(0,0,0)
元素设置为零(元素为12,13,14
)
0,..,15
的矩阵
醇>
你没有删除将法线向量转换为顶点位置的矩阵位置......这就是奇怪的原因......所以要么从结果中减去矩阵的偏移量,要么乘以没有偏移量的矩阵({{1} })