【发布时间】:2012-02-15 21:27:44
【问题描述】:
对于我遇到的问题:a) 点的有序列表 b) 构成每个多边形的点的列表
例如
point1 = (1, 2, 2)
point2 = (1, 2, 3)
point3 = (1, 3, 3)
polygon1 = [ point1, point2, point3 ]
=> polygon1 是一个三角形,可以是模型外部的一部分。
我需要在 OpenGL 中计算正确的光照法线。
我知道我可以根据给定的点计算平面上的向量,并通过叉积得到 A 垂直于平面,但 OpenGL 要求法线指向正确的方向(即向外)。
这个过程需要自动化,因为我有很多多边形。
如果我在平面上选择两个向量,我无法确定如何确定法线我计算的点在正确的照明方向上(即在模型的外部。)
我想我可以将计算出的法线添加到平面上的一个点,看看它是否离原点更远,看看它是否正确,但是模型非常复杂,一些法线可能需要指向原点(ish)
如果有帮助,原来所有的多边形都是三角形(虽然看不出它有什么帮助,应该能够为任何多边形抽象)
【问题讨论】:
-
如果有一个三角形自己漂浮在空间中,“正确”的一面是什么?在我看来,唯一正确的答案是双面照明。
-
你不能简单地使用正面排序(顺时针或逆时针)来定义你做叉积的顺序吗?
-
@ananthonline - 它不是一个漂浮在太空中的三角形,我有很多多边形,它们都连接起来形成一个漂亮的封闭对象
-
@user1118 不太确定您的意思-您是否认为给出点的顺序对应于外面的哪张脸?它是 VTK 格式,所以我想我会查阅他们的文档
-
啊,我误会了。 @datenwolf 的回答对我来说似乎是正确的。