如何获得两个平面网格的共同部分?

时间:2015-09-04 14:46:12

标签: c# algorithm unity3d mesh

我正在研究切割网格。我到底想要实现的是:

输入 - 两个网格(当然是程序生成的)

输出 - 三个网格(或更多,取决于给定的网格)

A - 这是一个meshA子网格B,

B - 这是网格A和B的共同部分,

C - 它是网格B子网格A。

enter image description here

我正在使用Triangulator,对于给定的顶点集合为我创建三角形。我所要做的就是给他那些顶点,这就是问题所在。是否有任何算法可以帮助我做到这一点?当你看到这张照片的时候,也许你的脑子里浮现出这个想法?我在Unity(C#)工作,所以任何与Unity Tools相关的东西都是有用的。谢谢!

编辑:

我正在使用这个剪辑库:http://sourceforge.net/projects/polyclipping/,一切正常,直到这种情况: enter image description here

我试图得到差异A-B,它应该看起来像图2中的那个),遗憾的是输出是网格A和网格B,如图1所示。

我做什么:

Clipper c = new Clipper();
c.AddPath(here goes the vertices of mesh A, polyType.Subject, true);
c.AddPath(here goes the vertices of mesh B, polyType.Clip, true);
c.Execute(ClipType.ctDIfference, a list of lists for my output, PolyFillType.NonZero, PolyFillType.NonZero);

我已经尝试更改PolyFillTypes但它没有改变任何内容。在这里,我要求你的建议:)

0 个答案:

没有答案