比方说,我有我的世界空间法线,我想将它们转换成viewspace。 我该怎么办? 我已经试图通过viewProjection矩阵,并通过反演变换视图矩阵相乘他们,但都没有奏效。 蓝色通道(z轴)似乎缺少。 我很困惑。
Answer 1:
在固定管道无能为力它为您的工作
正常工作的所有世界/对象变换应该是模型视图矩阵里面还有像雾一些先进的东西,将无法正常工作(即
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
)
你没有删除矩阵的位置,其将到顶点的位置法线向量...这是古怪的原因...所以无论从。减去的结果矩阵的偏移或不偏移(由矩阵相乘origin = (0,0,0)
文章来源: Transforming normals from worldspace to the viewspace