Opengl 定义灯光坐标

Opengl 定义灯光坐标,opengl,graphics,light,Opengl,Graphics,Light,几天前我参加了一次计算机图形学考试,考试中有如下额外的学分问题: 灯光可以通过以下两种方式之一定义。它可以在世界坐标中定义,例如街灯,或在观察者(眼睛坐标)中定义,例如矿工佩戴的头灯。无论哪种情况,视点都可以自由更改。描述在这两种情况下灯光应如何变换 因为我要到春假后才能看到结果,所以我想在这里问一下 似乎所使用的类比是误导性的——你能不能定义一个光源,它在世界坐标系中位于观众眼睛的位置,就像在眼睛坐标系中一样?我一直在研究OpenGL如何处理光线,似乎它总是使用眼睛坐标——ModelView矩

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

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

因为我要到春假后才能看到结果,所以我想在这里问一下

似乎所使用的类比是误导性的——你能不能定义一个光源,它在世界坐标系中位于观众眼睛的位置,就像在眼睛坐标系中一样?我一直在研究OpenGL如何处理光线,似乎它总是使用眼睛坐标——ModelView矩阵将应用于世界坐标中的任何光线

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

然后,我可能会完全在思考(或过度思考)

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


有什么想法吗?

灯光的位置由定义灯光时处于活动状态的modelview矩阵进行变换

如果此时modelview矩阵为恒等式,则将获得眼睛坐标中的灯光


如果modelview矩阵是摄影机矩阵的逆矩阵,则将在世界空间中获得灯光。

对于路灯,当视点移动时,世界坐标将保持不变


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

很遗憾,你不能接受两个答案,因为这实际上是两者的结合。