【问题标题】:Polyhedron/sphere-ray intersection determination?多面体/球体射线相交确定?
【发布时间】:2013-07-08 10:34:55
【问题描述】:

我正在寻找任何 C++ 库,它可以让我获得直线和多面体/球体之间的 3D 碰撞点(其中直线由两个 3D 点和有限数量的 3D 点组成的多面体)

令我惊讶的是,我似乎找不到这样的库(或者我不知道要搜索哪些短语)。

另外,我见过的大多数碰撞库都是 2005/2006 年的(但没有人说如何获取命中点坐标,其中大部分用于可视化事物和检查边界,或两个 3d 对象之间的碰撞等。太矫枉过正了对我来说 - 我只想要一条线和一个 3D 对象 [多面体/球体] 之间的 3D 碰撞点)

那么......截至 2013 年,哪些库是最新的并利用新技术实现最佳性能?

或者有我的案例的代码示例吗?

我有时喜欢重新发明轮子,但在这种情况下,我希望将其用于游戏插件 - 所以首选可靠且快速的东西。

【问题讨论】:

    标签: c++ math 3d collision-detection computational-geometry


    【解决方案1】:

    什么是快速和高效的取决于有多少对象等等。如果您只是要测试几个对象,那么构建八叉树或其他一些空间分区没有多大意义。您可能会考虑尝试找到包围多面体的(边界)球体(原点+半径),并测试它是否首先相交。或轴对齐边界框 (AABB)。

    然后您可以进行更昂贵的多面体测试 - 这可能需要针对每个“正面”三角形进行测试。如果对象不是凸面的,比如网格,就会出现问题,在这种情况下,您需要距离最短的光线。

    请参阅:CGALGeometric Tools

    【讨论】:

    • 第二个链接很好,但我似乎找不到任何解释代码的评论
    【解决方案2】:

    【讨论】:

    • 实时渲染页面上的链接大多已失效/过时,我阅读了第二个链接。至于第一个链接,我要弄清楚设置并开始使用有多难。
    • MathGeoLib 的文档(顺便说一句看起来很棒)有点……Hard?掌握,特别是我一直在寻找/嗅探源代码中的任何例子:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多