“老司机翻车,往往不是因为不会开,而是因为太熟悉那条路,忘了路上新挖的坑。”这话是我做完去年那个文旅装置项目后,刻在工位上的。
今天不讲虚的,就复盘一个真实的文旅互动装置项目——“云岫”曲面艺术装置。客户要的是类似扎哈风格的流线型外壳,但预算只够做玻璃钢翻模,工期只有45天。我带着两个学生,用Rhino+Weaverbird硬是把一个NURBS曲面“化骨绵掌”成了可加工的网格,中间踩的雷、填的坑,全盘托出。

一、需求拆解:为什么NURBS玩不转,非得动网格?
项目初期,我按老习惯用NURBS建了主体曲面——双轨扫掠加混接,曲率梳顺滑得能当镜子照。但到了深化阶段,问题来了:
- 曲面细分无法均匀化:NURBS的UV结构在曲面收敛处(比如球体极点)必然产生奇点,而玻璃钢模具需要均匀的网格来铺贴玻璃纤维布,否则应力集中会导致开裂。
- 加工方只认STL:CNC泡沫雕刻和3D打印的通用格式是三角网格,NURBS转STL后,曲率大的地方网格疏密不均,边缘会出现锯齿。
- 成本卡死:如果按NURBS曲面直接分块加工,模具费要翻三倍。用网格细分平滑,可以在不改变整体形态的前提下,用更少的控制点生成更均匀的拓扑。
所以,技术选型必须转向网格。而Weaverbird,就是Rhino生态里最顺手的网格细分平滑插件——它把Catmull-Clark细分算法和Loop细分算法封装成了几组电池,让设计师不用写代码就能控制网格的“呼吸感”。
⚠️ 注意:Weaverbird不是万能药。如果你的模型是纯NURBS且需要高精度尺寸标注,别碰它。它擅长的是形态推敲和有机造型的网格化,不是工程级B-rep。
二、技术选型:Weaverbird的三种细分逻辑,我为什么选了Catmull-Clark?
Weaverbird的核心是三个电池:Catmull-Clark细分、Loop细分、框架(Frame)。很多人拿到就点,但不知道背后的算法思想,结果细分完模型缩成一团。
1. Catmull-Clark:四边面之王
它的核心思想是:每个面生成一个面点,每条边生成一个边点,每个顶点根据邻接面重新计算位置。公式如下:
新顶点 = (F + 2R + (n-3)P) / n
其中:F=邻接面重心平均值,R=邻接边中点平均值,P=原顶点,n=邻接边数
这个算法保证了细分后曲面收敛于双三次B样条曲面,也就是为什么它细分后依然保持光滑,且不会像Loop细分那样在三角面处产生扭曲。我们的装置是四边面为主的网格,所以Catmull-Clark是首选。
2. Loop细分:三角面专用,但我不推荐
Loop细分针对三角网格,每个三角面分裂成四个小三角。它的优点是计算快,但缺点是对非流形边和三角面质量极其敏感。我们的模型从NURBS转过来时,边缘有大量狭长三角形,用Loop细分后,这些地方直接“炸毛”——出现尖刺。所以直接Pass。
3. 框架(Frame):控制网格的骨骼
Weaverbird的Frame电池可以把网格的边变成管状结构,这对于生成装置的骨架线非常有用。但它不是用来平滑的,而是用来做结构可视化。我最后用Frame提取了主龙骨线,交给结构工程师算截面。
| 细分类型 | 适用面型 | 平滑效果 | 计算速度 | 本项目适用性 |
|---|---|---|---|---|
| Catmull-Clark | 四边面 | 极佳,收敛B样条 | 中等 | ✅ 主力 |
| Loop | 三角面 | 一般,易产生尖刺 | 快 | ❌ 弃用 |
| Frame | 任意 | 不适用 | 快 | ✅ 提取龙骨 |
三、踩坑实录:从“惊喜”到“惊吓”的72小时
选完算法,我带着学生开始搭Grasshopper电池。第一次跑通,看到平滑后的网格,大家都觉得稳了。结果导出STL给加工方,对方回了一句:“你这模型全是破面,没法雕。”
坑1:NURBS转网格的拓扑灾难
问题出在源头。Rhino的Mesh命令从NURBS转网格时,默认用的是“粗糙”设置,生成的网格顶点没有合并,相邻面片之间是断开的。Weaverbird细分时,它不认这些断开的面,所以细分后模型表面出现裂缝。
解决方案:转网格前,先用Weld(焊接)命令把重合顶点合并,公差设0.01mm。然后检查网格法线是否统一,用UnifyMeshNormals。这一步不做,后面全白搭。
坑2:细分层级与性能的平衡
Weaverbird的Catmull-Clark细分电池有个Level输入。我一开始设了3级,结果模型面数从2万直接飙到128万,Grasshopper卡死,Rhino直接闪退。后来学乖了:
- 一级细分:面数×4,用于快速预览形态。
- 二级细分:面数×16,用于确认曲率连续性。
- 三级细分:面数×64,只在最终导出时用,且必须关闭其他计算。
更重要的是,我用了ReduceMesh插件在细分前先优化原始网格,把不必要的边塌陷掉,这样细分后模型既光滑又轻量。

坑3:边缘硬边丢失
装置有锐利的边缘,但Catmull-Clark会把所有边都圆滑掉。我用了Weaverbird的Crease电池,在需要硬边的网格边上设置折痕权重。原理是:在细分时,折痕边不参与顶点位置平均,从而保持锐利。但要注意,折痕权重不能超过1,否则会产生自交。
💡 技巧:对于玻璃钢翻模,建议边缘保留2-3mm的圆角,避免脱模时崩边。所以Crease权重设0.6-0.8即可,不要追求绝对锐利。
四、实战流程:从NURBS到可加工网格的标准化路径
经过三天两夜的调试,我总结了一套标准流程,后来成了火星人教育工业设计课程里的经典案例:
- NURBS建模:确保曲面无外露边缘,曲率梳连续。用Zebra斑马线检查连续性。
- 转初始网格:Mesh命令,密度调至“中等”,勾选“焊接顶点”。
- 网格优化:用ReduceMesh减少三角面,目标面数控制在5万以内。
- 重拓扑:用QuadRemesh(Rhino 7+)把三角面转成四边面,这是Catmull-Clark的最佳输入。
- Weaverbird细分:Catmull-Clark,Level=2,Crease权重设0.7。
- 厚度与龙骨:用Weaverbird Frame提取主龙骨线,用OffsetMesh生成壳体厚度。
- 导出STL:检查网格是否封闭(MeshRepair),法线统一,公差0.05mm。
这套流程走下来,模型面数控制在80万左右,加工方直接说:“这次没问题了。”
五、成果与反思:网格细分平滑的边界在哪里?
最终装置在杭州某文旅小镇落地,总长12米,高4.5米,表面氟碳漆喷涂,效果很炸。客户满意,但我们自己知道,中间差点因为网格破面导致工期延误。

反思几点,给后来者:
- Weaverbird是形态工具,不是制造工具。它输出的网格必须经过修复才能用于CNC或3D打印。
- 细分层级不是越高越好。2级足够表达曲率,3级只用于最终渲染或高精度打印。
- 拓扑决定一切。四边面是Catmull-Clark的“粮食”,三角面是“毒药”。前期花时间重拓扑,后期省十倍时间。
- 永远保留NURBS源文件。网格是衍生品,修改形态还得回NURBS。
如果你也在做有机形态的落地项目,欢迎来火星人教育找我聊。我们工业设计课程里,这类从概念到制造的完整链路是必修模块。毕竟,软件只是工具,能把东西做出来,才是设计师的底气。
关于火星人教育
火星人教育,创办24年来专注数字艺术与AIGC实战职业技能培训。我们开设的课程覆盖AI漫剧创作、AIGC视觉设计、UE5游戏特效、室内全屋定制、MAYA三维动画、C4D动态设计、工业设计、NUKE影视后期、摄影摄像实训等方向。北京、深圳双校区开设线下面授班,面向美术生、在校大学生及意向转行的职场人群,以项目化实训教学,夯实专业技能,助力就业与职业提升。像今天复盘的这个文旅装置项目,就是课堂上的真实案例拆解。咨询电话:010-65918670。








评论(0)