【发布时间】:2016-05-23 04:34:04
【问题描述】:
我正在尝试将两个几何/网格(红色和蓝色)合并为一个独特的。但是在创建一个新的几何图形并应用 geometry.merge() 我发现所有内部顶点和面仍然存在(绿色区域)。
我想删除所有额外的信息,因为它会在渲染的面上产生视觉故障,而且我无法正确计算合并的体积。我需要像最后一张图片一样的东西,一个只包含最小的网格外部/外部面和顶点,移除内部面和顶点。
我尝试应用 ThreeCSG 来减去网格,但我发现它在尝试加载大型模型时会不断崩溃。我还尝试应用 raycaster 来检测常见人脸,但这对大型模型的性能也有很大影响。
ThreeCSG 是这里唯一的好选择吗?但由于我不能在每个模型上都使用它,我应该丢弃它。我想快速应用一些不太依赖于网格三角形数量的东西。
【问题讨论】:
-
您可以将 ThreeCSG 代码转换为生成器并为其添加产量,这样浏览器就不会将您排除在外。在stackoverflow.com/questions/34631657/… 上查看我的描述。
-
@spacorum 我用一个例子更新了我的答案......
-
@fluffybunny 我仍在尝试了解这个收益概念。这只是几行代码,但对我来说非常先进。我根本无法理解它的作用以及如何将其应用于我当前的问题......
-
与您尝试通过相交网格进行的操作相比,我的代码很愚蠢,而不是高级。
-
我的代码是杂乱无章的。 Javascript 是单线程的,如果你的代码在一定时间内没有返回,浏览器会故意让你崩溃。通过在 settimer 中运行一小部分代码,然后执行另一个 settimer 来运行更多代码,您可以逐步完成算法。为了让使用具有大 for 循环的预先存在的代码变得“容易”,您可以使用 javascript 生成器(查找它)将代码变成小块,然后您可以在计时器链中运行。
标签: javascript three.js vertices threecsg face