【问题标题】:Find neigbouring vertices of a vertex查找顶点的相邻顶点
【发布时间】:2020-07-30 19:40:21
【问题描述】:

我正在做一个项目来寻找一个顶点的相邻顶点,例如在一个特定顶点(Xi,Yj,Zk)的矩形网格中,相邻顶点将是

Xi+1 , Yj , Zk (right vertex)
Xi-1 , Yj , Zk (left vertex)
Xi , Yj+1 , Zk (top vertex)
Xi , Yj-1 , Zk (bottom vertex)
Xi , Yj , Zk+1 (front vertex)
Xi , Yj , Zk-1 (back vertex)

但是如何才能找到三角形网格。 是否有任何代码可以找到它们附近或一定范围内的顶点。

我目前正在使用 js 脚本,尤其是 three.js 脚本 我加载了一个 3d obj 模型,它是一个缓冲区几何体。然后我使用它的几何属性获得了网格的顶点。现在对于每个顶点,我想找到它的连接顶点......就像找到给定顶点与其共享边的顶点...... 任何小的引用都会有很大的帮助。 提前致谢

【问题讨论】:

  • 我也评论了 Mugen87 的回答。如果我没看错问题,您希望三角形内的邻居,而不是某种局部空间内。无论如何,我认为这个问题需要更多的关注。具体来说,您正在使用什么类型的几何图形? Geometry? BufferGeometry?如果是后者,是否已编入索引?
  • 是的,不在本地空间内。但更具体地说,只有那些直接连接的,比如被它包围并共享边缘的那些。它是一个被索引的 BufferGeometry。 .

标签: three.js 3d vertex vertices cannon.js


【解决方案1】:

是否有任何代码可以找到它们附近或一定范围内的顶点。

不,至少不在存储库中。但是,您可以自己实施基本解决方案。这个想法是创建一个THREE.Sphere 的实例来表示neighborhood 的概念。 center 属性将是您的顶点,radius 属性将是您的范围。然后,您可以遍历所有其他顶点并调用THREE.Sphere.containsPoint() 来验证顶点是否位于定义的邻域内。

three.js R115

【讨论】:

  • 谢谢。会尝试一下...但是这种方法也可以获取未链接到中心顶点的顶点。我如何确保只获取与中心顶点连接的顶点。
  • “与中心顶点相连”是什么意思?如果您指的是三角形的其他顶点,那么您可以从缓冲区几何图形中获取此信息。根据是索引还是非索引,您必须评估 position 缓冲区属性或相应的索引。
  • 我将@PopupDev 的请求视为后者。我正在写一个回复,但它开始变得非常深入。我认为这个问题需要更多的注意力集中在一个问题上,或者至少通过准确定义正在使用的几何类型和绘制模式来缩小问题的范围。
  • 我加载了一个 3d obj 模型,它是一个缓冲几何体。然后我使用它的几何属性获得了网格的顶点。现在对于每个顶点,我想找到它的连接顶点......就像找到给定顶点共享边的顶点......
【解决方案2】:

Three.js 没有开箱即用的东西,但您可以修改一个脚本以获得所需的结果。

SubdivisionModifier 需要比较相邻顶点位置来计算位置平均值。为了实现这一点,它将 BufferGeometry 转换为 Geometry

geometry = new THREE.Geometry().fromBufferGeometry( geometry );

然后它使用每条边来查找哪两个三角形(面)连接到该边。您可以在其source code, line 216 中看到这一点。如果您将此脚本复制粘贴到您的源代码中,您可以进行修改以执行您想要的操作:

  1. 仅搜索与您的顶点相连的边。
  2. 返回位于这些边另一侧的顶点。

我知道这不是一个完整的答案,但这是我能想到的最接近的建议,可能会解决您的问题。

【讨论】:

  • 感谢您的回复..但我是初学者,我无法使其工作。你能给它写代码吗..
  • @PopupDev 我很乐意为您编写代码作为付费合同。如果您有兴趣,请告诉我。
  • 我能知道它会花多少钱......只是出于好奇。
猜你喜欢
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
相关资源
最近更新 更多