两曲面相交结果不准确


相交很失败.3dm (589.6 KB)

一个那么简单的形态用了300多个控制点。显然是不科学的。
我将他rebuild成 1阶2点 X 3阶100点
相交就成功了。
Snipaste_2022-03-20_16-32-45
请学习一下基础建模部分。不要让自己的模型有太多冗余的控制点。

1 个赞

这个简单的面是通过了变动后才有这么多的控制点,把他取消修剪也能算出正确的相交,说明与控制点多少无关。

建议发一下原始问题。
尽可能回避操作这类控制点很多的物体。

如果某方法要求A做高阶计算(流动,bend,cageedit等)得到B。B再需要去和C求交集。
应该尽可能降低A的复杂度。
根据你这个情况,变动之前的A物体也具有较多控制点。

在控制点很多的情况下,又是修剪曲面,会加大计算失败的可能。所以你会发现取消修剪以后成功计算了。

我来补充下,我们不清楚你这张面是通过怎样的方式修剪得到的,总之这张面只是你看着没问题,实际上它有问题。

你可以查看下这张曲面的 详细描述 中关于 边缘公差 的描述:

展开给你解释下:

正常情况下,修剪后的边缘公差也是在系统公差以内的,but 如你所见,你这张修剪面的边缘公差很大,这就会影响计算的结果。建模过程中误差是累加的,结构越复杂的面得到这类结果的概率会更大。

最快的方式就是 @Deer 大鹿说的,简化你的曲面,同时会规避你曲面之前的问题,还有一种办法是你可以用 重建边缘(指令: RebuildEdges)来重塑这个面的边缘,重建的公差设置为系统公差(你这个文件是0.005)即可。
image

重建边缘后再次查看物件详细描述,这个修剪边缘的公差范围才正常。

最后计算交线,结果正常:

以我们的经验,出现这类问题都是用户建模习惯和方法不规范导致的,所以你如果想继续讨论这个话题,可以把你之前做这几张面的过程阐述下,这样可以给你更多建议。

3 个赞

每次做一些特定操作会增加模型的信息量。
最典型的就是相交、投影和修剪,他们的本质很类似。流动,弯曲等高级变形也属于这个范畴。
假设A面和B面本来是拥有4的信息量,他们做了以上的特定操作后,例如求出了交线C
计算机实际会做的事情是:确保C上面的点离开A和B都满足小于公差t,如果不能保证,则增加控制点。
因为C同时需要满足A和B的条件,也就是C同时需要包含A和B这两者的信息量,因此C的信息量可能是4+4甚至更高。
落实到最后你会发现A和B可能都是3阶4点的最简曲面,而C就成了3阶34个点,如下图

当你再次把这个3阶34点的曲线投影到另一个3阶4点的曲面A2后,会发现新的曲线D成为了49个控制点,如下图

因为D需要同时满足C的投影+落在这个曲面上这两个条件。要满足小于公差t,34个点就不够用了,得加到49个点。

而当你做第二次投影,投到A3后(也是3阶4点),会发现他的控制点不再增加,如下图

因为在当前的限定条件下,49个控制点足够满足公差t了。
此时我们再做第三次投影,但是这次接受投影的曲面不再是3阶4点的最简曲面了,而是3阶10点的曲面B2
会发现投影出来的结果曲线E有82个控制点。如下图:

经过以上实验,再回顾一下自己的建模过程,你就能发现信息的增加是必然的,因为你不断再给模型提出新的要求。曲线E的82个控制点其实包含了AB交线,到A2的投影,到A3的投影,再到B2的投影那么多信息。
你会去想我的每一步看似都是顺理成章的,看似最后82个点的结果无法回避。有两个思路提供给你
1:中间给予模型信息的这些AB曲面,他们都做到尽量最简单了吗?
2:那么多实打实的求交线,投影等计算,他们的条件都是必须满足的吗?有没有可能他们只是你造型时的贪图方便的操作?有没有可能用直接挪动控制点来塑形?

3 个赞