作者:Ansen
近期有学员问到如下问题:
双轨扫掠时, 两条路径曲线阶数和控制点数都相同并且我已经参数均匀过,断面线的端点也在编辑点上,但是还是不能勾选最简扫掠?
我们把解决方法做了整理,供有相同问题的用户作参考。
使用Rhino 6新增的 指令:ShowEnds 将两条路径线的闭合点显示出来就能找到原因。
最简扫掠要求断面曲线的端点必须精确放置在路径线对应序号的编辑点上,对于封闭的路径线来说,我们可以把闭合点看作是序号为1的编辑点便于理解。
很明显,红色的断面线端点放置的有问题。
做个简单的测试:
重新捕捉路径曲线闭合点绘制一条断面线并做双轨扫掠,这样就可以做到最简,但曲面的整体结构是扭的,不符合造型的要求。
我们很容易想到去改变路径线闭合点的位置。
以路径B为例。如果直接使用 指令: CrvSeam 移动曲线的闭合点会让曲线控制点增多。达不到最简扫掠的要求。
那么有没有“无损”移动曲线闭合点的方法呢?
这里说的无损是指维持曲线形状与控制点数量不变。
提供2种解决方法供大家参考。
方法1
- 使用 指令: CrvSeam 移动曲线的闭合点到正确的位,这里的位置不能是随意的,请勾选节点捕捉,精确捕捉到节点;
- 使用 指令: MakePeriodic 重将曲线周期化,曲线的控制点数量就可以恢复到之前。参考GIF01
这个方法虽然步骤少,但是很难去理解其背后的原理。
学会怎么用就可以了。
▼ 参考GIF01完整操作过程。
再介绍一个比较容易理解的做法。
方法2
- 使用 指令: ExtractControlPolygon 提取原曲线的控制点连线,得到一条封闭的多重直线;
- 使用 指令: CurveThroughPolyline 借助上一步得到的多重直线生成一条相同形状的曲线,注意新生成的曲线阶数与原曲线要保持一致(操作之前开启记录建构历史,方便下一步调节用)
- 使用 指令: CrvSeam 移动多重直线的闭合点到正确的角点处,间接的移动新生成曲线的闭合点位置。
▼ 参考GIF02完整操作过程。
一些初学者可能还会有困惑:
是不是必须要把断面线的端点放在路径的闭合点位置才能最简呢?
当然不是,你可以再去理解本文一开始就提到的 对应序号的编辑点 并且结合下图就明白了。
需要注意的是,以上方法中我们强调了新的闭合点必须是在节点位置才可以实现“无损”,而且对原曲线还有其他的一些要求,这里就不展开细说了。
我们还是建议各位养成良好的建模习惯,好的习惯往往从一开始就能够避免后面可能出现的问题,而不是在后面遇到问题再去解决。
本教学完!