在我的OpenGL应用程序中,我有很多球体(超过100,000个),我想实现一个高效的射线拾取算法。
到目前为止,我的方法是天真的:
计算与鼠标指针对应的射线(在对象空间中),然后与我拥有的每个球体相交。虽然这种方法对于我的应用程序可能足够快(实际渲染球体的速度可能比用射线拾取它们慢...),但我想知道这种情况下最好的方法是什么。
我特别关注的是这些球体可能具有任意半径,我不知道如何在空间划分结构(如八叉树)中考虑这一点。
你有什么建议吗?
我将添加更多细节:
所涉及的应用程序是一个分子查看器,其中原子被表示为球体,如下图所示:
球体可以部分或完全重叠。场景可以是动态的(您可以进行分子模拟),但通常在动画期间不希望选择任何内容。
理想情况下,我希望找到一个解决方案,也可以将其扩展到未来的圆柱体。
到目前为止,我的方法是天真的:
计算与鼠标指针对应的射线(在对象空间中),然后与我拥有的每个球体相交。虽然这种方法对于我的应用程序可能足够快(实际渲染球体的速度可能比用射线拾取它们慢...),但我想知道这种情况下最好的方法是什么。
我特别关注的是这些球体可能具有任意半径,我不知道如何在空间划分结构(如八叉树)中考虑这一点。
你有什么建议吗?
我将添加更多细节:
所涉及的应用程序是一个分子查看器,其中原子被表示为球体,如下图所示:
球体可以部分或完全重叠。场景可以是动态的(您可以进行分子模拟),但通常在动画期间不希望选择任何内容。
理想情况下,我希望找到一个解决方案,也可以将其扩展到未来的圆柱体。