我几天前参加了一次计算机图形学考试,其中有以下额外的学分问题:
可以用两种方式之一定义灯光。它可以在世界坐标中定义,例如街灯,或观察者(眼睛坐标),例如矿工所戴的头灯。无论哪种情况,观点都可以自由改变。描述在这两种情况下光的转换方式不同。
因为在春假之前我不会看到这个结果,我想我会在这里问。
似乎所使用的类比具有误导性 - 您是否可以在眼睛坐标中定义位于世界坐标中的观察者眼睛的光源?我一直在研究OpenGL如何处理光线,似乎它总是使用眼睛坐标 - ModelView矩阵将应用于世界坐标中的任何光线。
在这种情况下,答案可能只是你需要使用类似ModelView矩阵的方法将世界坐标中定义的光转换为眼睛坐标,而眼睛坐标中定义的光只需要通过投影矩阵进行变换。 / p>
然后,我可能完全在思考(或者过度思考)。
我的另一个想法是,它决定了渲染阴影的方式,但这更多地与光的位置及其类型(点,方向,发射等)相比,而不是它所代表的坐标。 / p>
有什么想法吗?
答案 0 :(得分:5)
灯光的位置由模型视图矩阵转换,该矩阵在定义灯光时处于活动状态。
如果模型视图矩阵在该点处是同一性,则您将获得眼睛坐标中的光。
如果模型视图矩阵与相机矩阵相反,您将获得世界空间中的光。
答案 1 :(得分:3)
在路灯的情况下,当视点移动时,世界坐标将保持不变。
在前照灯的情况下,当视点移动时,眼睛坐标将保持不变。