我正在尝试使用 GLUI 在 OpenGL 中实现一个功能,以便使用“Arcball”控件输入光的位置。我不确定如何解决这个问题,因为轨迹球给出的旋转矩阵是 4x4 维度,而灯光位置是 3 个坐标的一维数组。
user1737647
问问题
105 次
1 回答
1
围绕场景旋转灯光仅对定向灯光(即无限远位置)有意义。所以你不是在旋转一个点,而是一个方向,就像法线一样。很简单:让未旋转的光有方向(0,0,1,0)。然后围绕场景旋转它,将它乘以给定矩阵的转置逆。但既然你知道,这个矩阵确实只包含一个旋转,这是一个特殊情况,其中转置逆与原始矩阵相同。
因此,您只需将初始光线方向 (0,0,1,0) 与矩阵相乘。
我们可以进一步简化这一点。如果你看一下乘法,你会看到,它本质上只是提取了原始光位置向量为非零的矩阵的(加权)列。因此,如果我们真的从 (0,0,1,0) 的光线方向开始,您只需从轨迹球旋转矩阵中取出第 3 列。
于 2012-11-09T08:09:48.463 回答