5

几天前我参加了计算机图形学考试,其中有额外的学分问题,如下所示:

可以通过以下两种方式之一来定义灯光。它可以在世界坐标中定义,例如路灯,或在观察者(眼睛坐标)中,例如矿工佩戴的头灯。在任何一种情况下,视点都可以自由改变。描述在这两种情况下应该如何改变光。

由于要等到春假之后才能看到结果,所以我想我会在这里问。

似乎所使用的类比具有误导性 - 您能否在世界坐标中定义位于观察者眼睛处的光源,就像在眼睛坐标中一样?我一直在研究 OpenGL 如何处理光线,似乎它总是使用眼睛坐标——ModelView 矩阵将应用于世界坐标中的任何光线。

在这种情况下,答案可能只是您必须使用诸如 ModelView 矩阵之类的东西将在世界坐标中定义的光转换为眼睛坐标,而在眼睛坐标中定义的光只需要通过投影矩阵进行转换。

再说一次,我可能完全在思考(或过度思考)。

我的另一个想法是它决定了渲染阴影的方式,但这更多地与光的位置及其类型(点、方向、发射等)有关,而不是与表示它的坐标有关。

有任何想法吗?

4

2 回答 2

5

灯光的位置由定义灯光时处于活动状态的模型视图矩阵进行转换。

如果模型视图矩阵在那个时候是恒等的,你会得到眼睛坐标中的光。

如果模型视图矩阵是您的相机矩阵的逆矩阵,您将在世界空间中获得光。

于 2010-03-11T19:19:55.423 回答
3

在路灯的情况下,当视点移动时,世界坐标将保持不变。

在前照灯的情况下,当视点移动时,眼睛坐标将保持不变。

于 2010-03-11T19:21:39.297 回答