在空间网格中查找角点

问题描述 投票:1回答:1

因此,我一直在研究一些代码,以从点云网格获得地板。到目前为止,我已经实现了构成该地板网格的三角形,但是现在我想创建一个平面以覆盖这些点来表示地板。

Floor mesh

好吧,只是让它更清楚一点。现在我有了这个网状。 (三角形,顶点和法线)。我想创建一个平面或类似图形的东西来覆盖此网格以表示地板(因为该地板不如实际地板平)。

It should create 1 or multiple planes to cover the encapsulated area

我确实知道要使用一个库,该库可以根据一些关键点来计算区域。因此,如果我能够从网格中获取这些点(请参见下文),它将创建以下对象(请参见下文)。这也会给我想要的结果。

belowfurther below

如果有人以前做过类似的事情,或者对如何解决这个问题有一个想法,我将非常感激:)。

((我正在使用Unity和C#btw)

关于该网格的最后一件事,令人遗憾的是,并非所有三角形之间的连接都很好。因此,网格中间的点有些突出。这使得检查三角形是否在拐角上更加困难。

c# unity3d mesh hololens
1个回答
1
投票

如果我正确理解了您的问题,您可能实际上在创建点云网格时做了很多工作,但是还是很酷。

如果您想要的只是地板所在的平面,那么您所拥有的就是一个近似问题;您可以根据自己的实际情况选择简单或复杂的一种。

最简单的路线:您知道在这种情况下是地板,因此您可以假设正常的vec向上(即Vector3.up),因此第一步是估算平面的z坐标。最简单的方法是对点云中点的全部或部分z坐标取平均值。

现在,您需要找到飞机转角的x和y坐标。 absolute simplest解决方案是假设大多数房间都是矩形的,您正在使用的房间也是如此。然后,您可以找到任何方向(x和y方向)上最远的点,并使用这些点创建一个矩形平面。

这当然不考虑地板的旋转(您可能并没有看起来完全垂直于墙壁站立),这需要更多的思考。

© www.soinside.com 2019 - 2024. All rights reserved.