SubD转为NURBS后不光滑问题

请问为什么SubD的时候看上去挺光滑的,但是转为NURBS后(主要是星点位置)就不太光滑,甚至不连续了?
不只是视觉问题,从两者的斑马线也可以明显看出来。

请在执行 ToNURBS 指令时指令行点选 细分选项 > 星点=G2 再试试

改成G2以后连续性提高了,但是也局部会有突起。从控制点位置看一明显观察到
捕获

1 个赞

请问你有更新至最新的 Rhino7.17

SR15
J大的意思是你们已经注意到这个问题,在SR17里解决了是吗?

请上传一下你的模型。

上图黄色的点,是同时承担了控制两个红色区域的曲率的。
保证G2连续需要让两个红色区域都是G2连续,因此这个点的位置会相对比较“勉强”。

1 个赞

是的,这个原理我是理解的。这只是任意一个模型,并不是特指我做的模型。
只是想确认一下这些问题是不是软件SubD功能本身还不够完善。
谢谢您的回复

这个是目前 SubD 转换为 NURBS 在处理星点处多面连续性时还不够完善的地方,3星点处的效果还是可以,但是我们常见的5星点处就处理的不够好。

你可以在转 NURBS 之前把 SubD 模型做细分(记得备份原模型)来改善转换后的结果,原理就是让连续性影响的范围变小。


下图是细分2次的前后对比,通过指令: _SetPerFaceColorByFacePack 可以预判到 SubD 转成 NURBS 曲面后的曲面拼合状态(一种颜色对应一张曲面)。

细分后转成 NURBS 的曲面分布是没有变的,只是每张曲面的控制点会增多而已。

上图的 SubD 转为 NURBS 时连续性我选了G1,查看 Zebra,对比很明显。


如果你有一定的NURBS建模经验,这种结构的曲面拼合连续性是很难做到 G2 的,软件的算法也是如此,还需要不断优化。

目前 Rhino 7 在转换时连续性选择 G1 效果会比 G2 好(没有跳点的情况),有时候 G0 也勉强说得过去,具体的你可以对比测试。

4 个赞

可以再参考一下这个帖子内提到的概念。
注意连续性永远是算法计算出来的逼近值。
他不像1+1=2这样的计算,更加类似于F(x)=2, 而F是一个复杂的函数,x可能包含多个变量(例如x1到x5),为了求出x需要用到一些常用的微积分手段,一些相对高级的算法。(二分法,牛顿迭代法等等)
很多犀牛(包括大部分CAD类软件)指令都会有大量这样的情况出现,例如offset,project,intersection等等类型的操作。
以intersection求相交为例,用户看起来是一个我给你A,给你B,求出一个C的顺序操作流程
但其实计算机所做的事情是F(C)=A&B,用一些迭代的算法不断“尝试”C的可能性,让C能够满足又在A面上,又在B面上。

要让F(x)更容易接近目标,有两个基本思路,第一个思路是Ansen老师说的提高细分数,相当于增加自变量x的个数,例如本来是10个x(x1到x10),现在增加到20个 (x1到x20)。第二个思路是提高算法本身,所以建议你升级到最新版的rhino7再尝试看看。

2 个赞

非常感谢大佬的耐心解答

谢谢版主的解答,虽然我不懂程序,但是意思我已经get到了。辛苦各位了