OpenGL自定义导航/选择

时间:2012-03-27 12:16:50

标签: opengl-es webgl

我有一种情况,我不确定如何处理。我有一个大约20k顶点的openGl对象,我需要为用户提供选择这些顶点中的任何一个的可能性(假设可能有最小的误差范围)。现在这就是我想要做的事情:

在对象的3D画布旁边,我还为用户提供由飞机x = 0完成的3'切片'; y = 0且z = 0。比如对于球体的最简单的例子,这些将是3个圆圈,相当于“切割”其中一个维度。现在让我们以z = 0为例来说明这个例子。当用户点击一个点(x_circle,y_circle)时,我想获得他点击的3d表示中的实际点。 z当然是0,但我无法找到获得x和y的方法。我可以轻松地翻译(x_circle, y_circle) -> (x_screen, y_screen),这些结果与在这些坐标处的画布上点击一样,但我需要找到一种方法将其转换为3D视图中的(x,y,0)坐标。

同样的事情需要用x = 0,y = 0来完成但我认为如果我能理解/实现z = 0的方法我可以应用或多或少相同的解决方案,增加一些旋转。如果有人可以提供任何示例/代码甚至数学背后的帮助,那将会有很大帮助,因为目前我还不确定如何继续。

1 个答案:

答案 0 :(得分:2)

当用户点击时,您可以使用GL.POINTS(具有一定大小,如果您愿意)将顶点渲染到屏幕外缓冲区,使用着色器将每个顶点的索引呈现为RGBA。然后你回读鼠标位置上的像素,看看它是什么索引。