如何使用OpenGL在C ++中创建3D选择工具?

时间:2012-07-22 17:31:01

标签: c++ opengl

基本上我想要做的就是在我的opengl窗口中的某处有一个模型,然后进行某种检查,看看我是否选择了一个对象。我不知道我怎么做这个我理解opengl而不是数学,一些源代码会很好。

2 个答案:

答案 0 :(得分:1)

基本"做"非常简单:将视线中的光线投射到3D世界中并与物体相交。

一个非常简单的方法是:

  • 确定已单击的视口位置。
  • 反转视图/投影矩阵或使用其他方法确定相机通过点击点的线。如果你知道相机的视野,你可以跳过矩阵的东西。使用相机"前进矢量"并相应地转置它(例如,点击视口的最左侧 - >将矢量旋转一半水平视野)。
  • 将该行与对象的边界框相交以确定已单击的项目(使用最接近的项目来确定最前面的对象)。

可以找到一个相当复杂的示例实现here(这是使用GL_SELECTION;另一种方法)。

可以找到另一种解决方案here(使用数学方式)。

答案 1 :(得分:0)

另一种方法是使用不同的ID在选择缓冲区中渲染每个可选择的几何体,然后获取鼠标下的ID。