Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在空间网格中查找角点_C#_Unity3d_Mesh_Hololens - Fatal编程技术网

C# 在空间网格中查找角点

C# 在空间网格中查找角点,c#,unity3d,mesh,hololens,C#,Unity3d,Mesh,Hololens,因此,我一直在编写一些代码,以便从点云网格获取地板。直到现在,我已经获得了组成这个地板网格的三角形,但现在我想创建一个平面来覆盖这些点,以表示一个平面地板 好的,我只是想说清楚一点。现在我有了这个网。(三角形、顶点和法线)。我想创建一个平面或类似的东西来覆盖这个网格来表示地板(因为这个地板不像实际的地板那么平) 我知道有一个库可以根据一些关键点计算面积。因此,如果我能够从网格中获取这些点(见下文),它将创建以下对象(见下文)。这也会给我期望的结果 如果有人以前做过类似的事情,或者对如何解

因此,我一直在编写一些代码,以便从点云网格获取地板。直到现在,我已经获得了组成这个地板网格的三角形,但现在我想创建一个平面来覆盖这些点,以表示一个平面地板

好的,我只是想说清楚一点。现在我有了这个网。(三角形、顶点和法线)。我想创建一个平面或类似的东西来覆盖这个网格来表示地板(因为这个地板不像实际的地板那么平)

我知道有一个库可以根据一些关键点计算面积。因此,如果我能够从网格中获取这些点(见下文),它将创建以下对象(见下文)。这也会给我期望的结果

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

(我用的是Unity和C#btw)


关于这个网格最后要注意的一点是,遗憾的是,并非所有三角形都能很好地相互连接。所以在网格的中间有一些点有点突出。这使得检查三角形是否在拐角处变得更加困难。

如果我正确理解了您的问题,您可能在创建点云网格时做了太多工作,但无论如何它都很酷

如果你想要的是一个平面,地板在那里,你需要的是一个近似问题;一个可以是简单的,也可以是复杂的

最简单的路线: 在这种情况下,您知道它是地板,因此您可以假设法线向量为向上(即
Vector3.up
),因此步骤1将是估计平面的z坐标。最简单的方法是平均点云中所有或部分点的z坐标

现在需要找到平面角的x和y坐标。最简单的解决方案是假设大多数房间都是长方形的,你正在使用的房间也是长方形的。然后可以在任何方向(x和y方向)上找到最远的点,并使用这些点创建矩形平面


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

当你说你试图“代表地板”时,你的意思是你试图用平面填充网格中的大洞?Hi@LLSv2.0,很抱歉给你带来了困惑。由于这是由全息透镜的点云网格制作而成,我希望能够用全息透镜显示“新地板”。我现在可以从点云中提取地板网格,但由于噪声,它看起来不像地板。我想更像柏林噪音造成的区域?所以我想用一些东西来覆盖这些大洞,但也要覆盖这个网格的其他部分。我希望这能更好地解释它?所以你想得到一个完美的平面来近似点云?是的,所以我想x和y是问题所在。我不知道我会选择哪个轮换。只创建一个大的方形平面确实更容易,尽管它应该在不完全是矩形的房间中工作。我想如果飞机足够大,它最终会填满房间的。我来看看是否能得到网格的近似旋转。如果我能用x和y来计算,我会把它标记为solved。为了得到边缘,你可能想研究算法,找到所谓的“凸包”。我个人不能告诉你太多,除了这些算法的存在。我认为你的主要问题将是你的分数,这可能会使它成为一个缓慢的行动。此外,凸包可能有点杂音,因此也可能需要一些平滑工作。让我们知道你最后得到了什么。现在我只是搜索了离中心最远的点,然后在这些点上放置了一个平面,覆盖了所有的点。它并没有我想要的那么好,但现在它确实起作用了。如果我以后能找到一个更精确的方法来检查地板可能是什么,我会把它贴在下面。