CuraEngine.wiki 6.模型切片

返回 CuraEngine.wiki 0.开发文档目录

文章翻译自官方说明文档,如有错误请积极发言不吝指正
CuraEngine.wiki - Slicing

切片

本文档介绍了 CuraEngine 如何创建 3D 网格的切片(横截面)。

“切片”是一个令人困惑的术语,因为 Cura 被认为是“切片器”,它将 3D 网格转换为 G 代码的过程称为“切片”过程。本文是关于“切片”在技术上更正确的定义:在特定高度创建 3D 网格的横截面的过程。

确定层高

在创建 3D 网格的横截面之前,CuraEngine 必须首先确定创建这些横截面的高度。

每一层都被认为在 Z 轴上有一定的跨度。例如,第一层将具有 0 至 0.27mm 的跨度,第二层将具有 0.27mm 至 0.37mm 的跨度,第三层将具有从 0.37mm 到 0.47mm 的跨度等。默认情况下,每层的横截面将穿过_中间的_每层的跨度。对于本例中的初始层,它将在 0.135mm 的高度处切片。层将从层的高度_顶部_打印。在打印该层之前,它将放置一个要移动到 Z0.27 的命令。

通常,第一层具有单独的层高度,即初始层高度。其余图层使用“正常”图层高度设置。

在这里插入图片描述

可替换地,对于自适应层高度,基于模型的形状来确定横截面的 z 坐标。如果将“切片容差”设置为“包含”或“排除”,则将在层的边界而不是中间进行切片。

三角形到直线

当确定横截面的高度时,所有三角形在每一层高度处与平面相交,在它们相交的地方产生线。

在这里插入图片描述

出于性能原因,我们首先计算出每个面的“Z 边界框”,这赋予我们快速预检查(层高度与面)。然后,我们对层高度进行并行处理,并执行层高度与面相交测试(包括预检查)。

为了找到平面和三角形的交点,我们只需对三角形的所有三条线段进行插值。这些插值中至少有两个应该跨越该平面。我们取两个坐标,其中插值具有与平面相同的 Z 坐标,并且它们将成为线段的两个端点。

缝合

当所有三角形都转换为线段时,每一层都包含一束松散的线段。这些线段还没有连接起来形成多边形。

为了连接它们,CuraEngine 会查看端点靠得很近的线段。线有一个方向,这个方向必须是一致的,才能产生一个好的多边形。

在这里插入图片描述

非流形网格

并非所有网格都是完美的。Cura必须切片的许多网格将不是水密的,或者在中间有额外的几何图形。有两个重要的例程应用于切片阶段,以帮助此类网格。

当网格的表面与自身相交时,经常会出现一个坐标有两条以上的线段与其相邻的情况。在这种情况下,CuraEngine 将尝试将彼此最平行的曲面链接在一起。这通常是有意义的,因为我们喜欢看到连续的网格,而不是在两面墙都急转弯的地方交叉。

在这里插入图片描述

如果线段链不能连接形成闭合环,则将该链存储为开多边形。开放多边形不用于 CuraEngine 的正常切片过程,但如果“曲面模式”设置为“曲面”或“两者”,则会存储以供以后使用。在这种情况下,它们在路径生成阶段被转换为墙壁路径。在下面的例子中,中间有一条线段没有连接任何东西。在大多数切片过程中,它不会成为多边形的一部分。

在这里插入图片描述

在这个例子中,还有一条线段链,它在一侧终止于自身,在另一侧也有一个松散的末端。这也将被视为一个开放的多边形。另请注意,T 形交叉将连接彼此最平行的两条线。第三个终点将是开放式的。

上一篇 CuraEngine.wiki 5.引擎管线

下一篇 CuraEngine.wiki 7.生成区域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值