【问题标题】:3D intersection test3D相交测试
【发布时间】:2010-02-10 16:40:36
【问题描述】:

我已经加载了这个 3D 模型。然后在同一个屏幕上,我在上面绘制了很多点。如何确定这些点是否在模型上。只考虑 XY 平面。

任何人都可以教我如何只在 XY 平面上进行 3D 相交测试,因为我真的很无能。

【问题讨论】:

    标签: java opengl 3d intersection jogl


    【解决方案1】:

    有几种方法可以做到这一点。最实用的选项可能是:

    a) 使用渲染模型时写入的模板缓冲区和 glReadPixels(...) 来查看是否为屏幕上的特定 (x,y) 点设置了模板缓冲区。

    b) 将 (x,y) 点从相机位置转换为 3D 空间中的一条线。然后对您的模型进行线交叉测试(简单但缓慢的方法是针对每个多边形进行测试,您可以通过使用包围体等显然获得更快的结果)

    c) 使用 glReadPixels(...) 读取屏幕上 (x,y) 点的颜色。显然,这只有在您能够准确区分哪些颜色是模型的一部分时才有效。

    如果您能够为此目的设置和使用模板缓冲区,那么 a) 可能是最容易实现的。否则 b) 可能是最有用的通用解决方案。

    【讨论】:

    • 模板缓冲区是最快的。如果不是,光线相交就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多