Library Home
总库首页
Reading Desk

量产级晶格设计教程

https://www.bilibili.com/video/BV1s92WB4Ehu

可重渲
success
Reading Desk

主阅读台

这个阶段主阅读台和显性阅读入口都只保留两份主文件:article.md 和 report.md。

阅读文件
Reading Flow

正文整理稿

按视频原讲述顺序整理的正文稿。

当前阅读文件:article.md

《量产级晶格设计教程》

来源:B站 [赛博玩家_CyberPlayer]
时长:00:29:41
BV号:BV1s92WB4Ehu
链接:https://www.bilibili.com/video/BV1s92WB4Ehu
说明:以下文字按视频原讲述顺序整理,口语、重复和明显噪声已做轻度收束。

开场与理念分享

这个视频我将分享三部分内容:首先谈谈我对 Grasshopper 的一些感悟,然后演示如何用 Grasshopper 生成晶格,最后是组装环节。组装部分在实际操作中经历了好几次失败,但我依然把这些过程保留了下来,希望能为大家提供参考。最后阶段的讲解因为反复试错,难免有些不太连贯,还请各位多包涵。

腔体编辑与格子划分

Grasshopper 同时具备了类似编程的抽象过程与非常具象的结果。其中的电池组可以在不同项目中反复使用,完全体现了编程里函数封装的思想,这是其他建模软件难以做到的。实际上,当你积累足够多的经验,熟悉每一个电池的功能,能够预判每一步会生成什么结果,你就能在脑海中完成 Grasshopper 的设计。

晶格的种类虽然不少,但常用的其实就那几种。我个人倾向于把晶格分为两大类:杆状晶格和影视曲面晶格。这期视频分享一个量产级杆状晶格的完整制作过程。量产级项目对模型的要求极为严苛:不能出现破面,不能存在过薄或过厚的区域,不能有剧烈的转折,也不能出现戳出来的尖锐晶格感。导出的网格体必须是严格的封闭网格,不允许存在非流形缺陷。总而言之,只有对每一步的结果都了然于心,最终才能得到一个高质量、可用于加工的网格。

晶格生成与表皮轻量化

在常用晶格的基础上,同时受到项目的各种约束——比如美学、形状、受力等——巧妙地加入变化,让晶格既满足这些约束,又能输出高质量网格,这是一件很考验功底的事情。主要步骤包括:编辑腔体、画格子、筛选、填格子、形成体积、表皮轻量化以及组装。

ntopology组装与首次失败

第一步是编辑腔体。腔体可能来自客户提供、网络下载或自己建模,总之我们需要在这个腔体内部生成晶格。以自行车坐垫为例,我根据功能分区把它分成了上下两部分:上半部分直接接触身体,要求透气和防滑;下半部分固定在底座上,只需做到轻量化。因此我划分了三个图层:第一个图层是完整的腔体,用来制作晶格;第二个图层是上半部分;第三个图层是下半部分。

接下来是划分格子。划分格子的方式有很多种,不同项目应因地制宜地选择。对于这个项目,我使用 PowerFish 插件的 Twisted Boxes 来自行构造。Twisted Boxes 包含一系列电池,对应不同的生成方式,大家可以参考官方示例自行研究。在这个案例中,我手动构建了上边界和下边界,然后使用 Twisted Box to Surfaces 在上下边界之内生成格子阵列,并且可以分别设置长、宽、高方向格子的数量。

格子划分完成后,需要进行一步筛选:只保留那些完全在腔体内部,以及与腔体相交的格子,将完全位于腔体外的格子剔除。这一步的目的是优化程序,降低计算开销,因为越到后面计算量越大,从一开始就尽可能移除无关元素非常关键。

然后,把晶格代入到刚才划分好的每一个格子中。此时线框已经成型,但线框范围大于实际腔体。这里还可以再做一次筛选,把完全处在腔体外部的线段过滤掉。接下来就是把线框转化为有体积的模型:用 Mesh Pipe 把线段转变成圆管,再用 Shrink Wrap 重建网格。这两个电池是做晶格时经常用到的组合。

多次尝试与最终成功方法

晶格完成后,就可以处理表皮了。通常表皮需要镂空,但镂空不能随意进行,必须实现一种渐变效果——距离某个基准越近,镂空尺寸缩小得不明显;离得越远,则缩小得越剧烈。这种手法在参数化设计中非常常见。

表皮和晶格都完成后,我们将它们导入 nTop 进行最终的组装。首先,把菱形的挤出物体导出为 SCP 格式,并命名为“上表皮的布尔”;上表皮也导出一个 SCP 文件;晶格则只能导出 STL 格式;腔体也要导出一个 SCP 文件,命名为“腔体体积”。打开 nTop 进行组装,需要先通过 Input 导入一个 CAD 对象,选择刚才导出的上表皮 SCP 文件。同时把晶格也导入进来。接着,将上表皮从 CAD 转换为 nTop 独有的隐式格式,晶格同样转换为隐式格式。然后,对腔体和晶格做一个相交运算,得到的便是腔体内部的晶格。

接下来,我们依次导入上下表皮和镂空模型。但这一步其实已经有些卡顿了。实际操作中此时遇到了问题,又一次失败了。于是我想:先把上表面转成网格,然后在 nTop 里进行加厚,但这个模型质量较粗糙,这个方法也行不通。只能另想办法。

我在 nTop 里试过布尔运算,结果出现了瑕疵。我也尝试过先在 Rhino 里分别导出,再在 nTop 里做布尔;或者先在 Rhino 里完成布尔再导进来。但后一种方式会导致孔洞变形,因为内部的 second body 有点膨胀的感觉,如果在 Rhino 里提前布尔好,导入后仍会有一定变形。如果两种方法都不可行,就只剩下另一种办法了。

这种情况其实相当常见,因为原始的曲面很可能不是一个完整的单一曲面,而是由许多面拼合而成的多重曲面。在对它进行偏移生成厚度时,有很大概率会发生破面。比如在 Rhino 里,对这个面做一个 offset,偏移后破面的风险非常高。

把它导进 nTop 之后,发现依然存在问题,这很正常。我尝试使用自动修复功能,修复后看起来没有问题,那就只能换一种思路:稍微给它加厚一下。这个加厚功能难免会带来一些变形,但它确实能修复某些错误。不过这个方法也有毛病,结果未必每次都能成功。从算法上可以看到,在与计算方向平行的表面上,会出现明显的条纹,这个效果有些类似于 3D 打印时水平堆叠的层纹。

暂且假设以 0.3 毫米的加厚可以使用,晶格和这部分都完成后,看一下顶视图,晶格恰好与镂空对应上。接下来就把它们合并在一起,合并比较简单,用一个 Union 运算就可以了。

再试一次,我重新处理上表皮。先在原始面上向外偏移 1 毫米,确定后发现局部出现破面。接着在 Rhino 里翻转法线方向,让它朝外偏移,再导出上表皮。回到 Maya(这里应该指 nTop,推测可能口误),删除当前对象,导入上表皮。然后对面做一次“面转实体”,厚度设为 1.5 毫米。再导入上表皮的布尔体,将它们合并后继续做布尔减运算,红减绿。此时检查横截面是否有问题,确认晶格和它是否有交叠,看起来确实交上了,但依然存在一些小瑕疵。

经过刚才的几次失败,最终重新梳理了流程,并成功完成。首先撒点生成面,然后做一个双向偏移——同时向内侧和外侧各偏移 0.7 毫米,总厚度为 1.4 毫米,由于原始数据稍有偏差,描述为 1.6 毫米也无妨。这样做的意义在于,在原始面的基础上内外两侧都拥有厚度,最后进行布尔运算时就不会出现重合。重合是导致布尔失败的常见原因,非常恼人,即便软件没有报错,那个地方也常常存在瑕疵。一定要确保没有重合区域。

此时,将这个两侧都有厚度的面导出,比如导出为上表皮的网格格式。接着在 nTop 里先导入上表皮,再导入晶格。这里我选择先减后加的顺序。先把上表皮的布尔体导进来,合并零件,再做布尔减运算,确定后上表皮的镂空就完成了。这时可以看到表面几乎没有多余的碎线,说明模型质量较高。然后再导入晶格,用体积和晶格做交集,把晶格修剪干净。最后再对晶格和完成镂空的上表皮进行布尔合并,整个组装步骤就顺利完成了。


本文由 AI 基于转写整理,仅供复查参考。

Post Process

这篇后面怎么留?

第一版先只接快速路径,不打断阅读,也不改正文稿。

可见结果先只保留:不留 / 参考 / 方法 / 功能候选 / inbox。

复查动作

当前 run 输入齐全,可直接复查或原地重渲。

快速打开
前后对比
Run Context
运行信息、阶段状态、当前主稿
按需展开
平台
B站
创作者
赛博玩家_CyberPlayer
当前阶段
已完成 / 无
最后更新
2026-07-03 10:06:40
最近查看
2026-07-14 12:14:56
Stages
download
success
元数据已保存,并确定了可用字幕/音频输入
2026-07-03 10:00:15 → 2026-07-03 10:00:33
transcribe
success
音频转录完成,共 6 段
2026-07-03 10:00:33 → 2026-07-03 10:01:40
analyze
success
结构化分析完成(引擎: deepseek)
2026-07-03 10:01:40 → 2026-07-03 10:05:38
render
success
学习导读、整理稿、辅助全文与默认 Obsidian 导出已完成
2026-07-03 10:05:38 → 2026-07-03 10:06:40
Visible Artifacts