基本上我想要做的就是在我的opengl窗口中单击某个有模型的地方,然后进行某种检查以查看我是否选择了一个对象。我不知道我会怎么做我了解opengl但不了解数学,一些源代码会很好。
user1544257
问问题
346 次
2 回答
1
基本的“待办事项”相当简单:将光线从您的视图投射到您的 3D 世界中,并将其与您的对象相交。
一个非常简单的方法是:
- 确定已单击的视口位置。
- 反转视图/投影矩阵或使用其他方式来确定从您的相机穿过点击点的一条线。如果您知道相机的视野,则可以跳过矩阵内容。使用相机的“前向矢量”并相应地转置它(例如单击视口的最左侧 -> 将矢量旋转一半水平视野)。
- 将该线与对象的边界框相交以确定已单击的项目(使用最接近的项目来确定最前面的对象)。
可以在此处找到一个相当复杂的示例实现(这是使用 GL_SELECTION;另一种方法)。
可以在这里找到另一个解决方案(使用数学方法)。
于 2012-07-22T17:39:03.593 回答
1
另一种方法是在具有不同 ID 的选择缓冲区中渲染每个可选择的几何图形,然后获取鼠标下方的 ID。
于 2012-07-23T12:41:34.683 回答