【问题标题】:Clipping Library Difference issue剪辑库差异问题
【发布时间】:2015-12-12 19:05:59
【问题描述】:

我从这个网站开始使用剪辑库:http://sourceforge.net/projects/polyclipping/

我在 Unity(C#) 中工作。

一切都很好,联合,交叉点,差异......是的,差异,有一种情况是我不确定我做错了什么或算法无法正确处理。

我正在尝试获取 A-B 的差异,它应该看起来像图 2)中的那个,不幸的是,输出是图 1)中的网格 A 和网格 B。

我做什么:

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,但它没有任何改变。我在这里,征求你的意见:)

编辑: 我想要得到(如图“预期结果”)是带孔的网格。 我实际得到的是 2 元素列表列表,其顶点与我作为输入提供的完全相同的顶点,所以当我从这些顶点创建网格时,没有一个网格有孔,而是一个网格覆盖另一个网格和 Z-Fighting。应该有一些功能可以创建带有孔的网格,但我无法找到它。正如我在该库的 C# 版本的 GUIDEMO 中看到的那样,它可以工作,我看到地图(可能是澳大利亚)中间有一个切孔。

输入:顶点 A(作为主体):(0,0), (0,10), (10,10), (10,0)。 顶点 B(作为剪辑):(2,8),(6,8),(6,2),(2,2)。 输出完全相同: List<List<IntPoint>> 是 2 元素,包含这两个列表。您可以在上面看到。

【问题讨论】:

  • 如果您显示从剪辑操作获得的结果坐标,然后显示您期望的坐标,将会有所帮助。
  • 我编辑了我的帖子,以便您更清楚地看到这一点。谢谢你的时间:)
  • 我有这个相同的问题(unity 3d c#),你找到解决方案了吗? clipperlib 是实现“C”顶点的正确工具吗?

标签: unity3d polygon mesh clipping


【解决方案1】:

我得到的裁剪解决方案是:

(((10, 10),(0, 10),(0, 0),(10, 0)), ((2, 2),(2, 8),(6, 8),(6, 2)))

注意 2 条路径的不同方向。这表明内部路径是外部路径(多边形)的一个洞,具有非零或奇偶填充规则。

【讨论】:

  • 没错,现在的问题是如何打洞?我是这个图书馆的新手(可能学习了两个小时)你能引导我找到我迫​​切寻找的解决方案吗?
  • 你在吗? :) 真的需要这个
  • 同样的问题!你找到解决办法了吗?我也被困在“我如何获得洞”部分,我知道解决方案会返回 2 个单独的多边形,一个代表轮廓,另一个代表洞,图书馆可以只返回一个带洞的网格吗?
猜你喜欢
  • 2011-08-08
  • 2016-10-19
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多