首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从三维几何模型中提取可见顶点

从三维几何模型中提取可见顶点
EN

Computer Graphics用户
提问于 2017-06-22 15:44:42
回答 2查看 1.6K关注 0票数 2

假设我们有一个由XYZ-formatted顶点(如点云模型)组成的三维模型。我的问题是给出相机或相机投影的位置和正常值(例如,我在看那些点--通常是由我的API给出的),我如何提取可见点并移除不可见点?

例如,在这里,对应于黑点云框和红色框的后表面的点被移除。在点云中,点有一个大小。因此,让我们假设他们有一个大小,比如说5像素半径只是为了建模的目的。

不一定是完美的。只要任何方法,以某种方式删除不可见的点,所以减少总点,但对可见点没有太大的影响,将工作。

下面是要使用的测试点云模型:https://www.dropbox.com/s/dfhyy9xa5i9o2fz/testPLY.ply?dl=0

EN

回答 2

Computer Graphics用户

回答已采纳

发布于 2017-06-27 02:46:40

创意A:

画一个看不见的网格,它将遮住我们不想要的点。

  1. 从点云创建一个网格。
  2. 将该网格呈现到深度缓冲区,但不呈现到颜色缓冲区。
  3. 使用深度测试“接近或相等”呈现点云。

这种方法应该给出预期的结果,但它的问题是第一部分,这一点一点也不简单。

Idea B:

用脂肪颗粒近似于网格,这些粒子足够大,足以隐藏背景中的点。

  1. 选择一个大小大约是两个点之间的典型距离。
  2. 用这个尺寸作为颗粒直径。
  3. 用这样大的粒子将点云渲染到深度缓冲器,而不是颜色缓冲器。也许能稍微抵消一点云,所以离相机有点远。
  4. 这一次使用点来呈现点云,并使用“更接近或相等”的深度测试。

这个方法应该比A简单得多,因为不再需要三角剖分。但是,结果并不完美:一些应该是可见的点可能消失,而一些不应该可见的点将保持可见。调整颗粒直径和偏置会产生不同的结果。

Idea C:

作为一个非常便宜的技巧,只需渲染点云的雾功能。离摄像机越远的地方,它们就越不明显。此方法不会隐藏任何点,但仍有助于读取卷。

票数 4
EN

Computer Graphics用户

发布于 2017-07-04 14:42:26

从概念上来说,最简单的方法是把它看作一个光线投射问题,把每个点表示为一个小球体。它应该像常规射线追踪器中的阴影射线一样工作:遍历你所有的点,并且对每一个点,跟踪一条光线到相机。如果光线与代表另一个点的球体相交,则将其移除。

如果点的数目足够小,你可以直接这样做,但是如果速度不够快,你应该把这些点放到一个加速结构中,比如kd-树。(如果需要这种优化,最好从现有的射线跟踪器(如PBRT )开始,而不是从头开始编写。)

如果点表示表面探测(从像激光扫描仪),你也可能有表面正常在每个点,取决于扫描仪技术。在这种情况下,您可能会得到更好的结果使用小光盘,而不是球。从一个角度看,这会使你的脸更加健壮。

最后,如果您还需要移除相机视图之外的点(例如摄像机后面),您可以同时通过比较每条光线的方向和摄像机的视图界限来做到这一点。

票数 3
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/5274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档