【问题标题】:Line and 3D model intersection线与 3D 模型相交
【发布时间】:2018-07-04 23:18:29
【问题描述】:

我正在开发可显示不同 3D 模型的平板电脑应用程序。我当前的任务是找出用户在触摸屏幕时是否点击了模型。我有 X、Y 触摸坐标,我有两种解决方案:

1) 我使用 OpenGL ES 2.0 进行模型渲染,所以也许我可以创建额外的帧缓冲区,并在片段着色器中以每个像素深度的颜色渲染它。我的意思是,如果深度为 MAX,我可以将像素颜色设置为黑色,如果深度为零,则可以设置为白色。然后我可以使用这个帧缓冲区中的数据来获取我的点深度并找出我需要的东西。

2) 第二种解决方案是从接触点运行射线,然后使用常见的射线-三角形相交算法查看我所有的模型三角形。

我的问题是:有更快的解决方案吗? 谢谢你。

【问题讨论】:

  • 您是否已经有一个具有广泛相位的场景图,例如八叉树?我们在谈论什么样的几何形状?
  • @Tommy 我只有顶点和法线数组。通常我使用我的应用程序只显示一个模型。但是它可能有近 10,000 个顶点。

标签: c++ opengl-es 3d


【解决方案1】:

我知道这是一个老问题,但 AFAIK 在这种情况下的最佳做法是执行射线三角形相交测试。你可以通过蛮力,通过测试每个三角形来做到这一点。或者你可以使用数据结构来加速事情。 octreek-d tree 应该可以解决问题,尽管它们各有优缺点。

【讨论】:

    猜你喜欢
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多