3D打印技术之切片引擎(2)

3D打印技术之切片引擎(2)

文章转自:http://blog.csdn.net/fourierfeng/article/details/43897897

在上一篇文章中,我从总体上介绍了一下切片引擎技术,从这一篇文章开始,我开始说一下具体的技术细节。

切片引擎,实体部分包括:

提取边界矢量——>添加多边——>生成填充矢量集合。

为了避免实体和地板的粘连有时候还需要生成个底座,以及为了避免打印头停止打印后有继续吐丝的现象而影响到打印质量,有时候也需要添加墙结构,这些都是很工程的问题,开发上难度也很低,这里就不赘述。

除之外就是支撑部分。这篇文章就先说下支撑算法。生成支撑矢量集合分为人工生成和自动生成两种,优越的支撑算法主要体现在:

  1. 省材料;
  2. 生成速度快;
  3. 生成的支撑体与零件实体较少的接触与干涉,有利于剥离;
  4. 支撑能稳固的支撑柱任意结构的模型;

其中,3,4互斥,要在两者做出一个平衡;支撑体与实体干涉太少必然就不够稳固,当打印到上层的时候就容易使实体和地板的连接处松动以及实体部分塌陷等等,这要在开发中做到尽量的两者兼顾,要在保证4的情况下尽量的实现3。

​ 毕竟,切片引擎的优劣主要体现在实体生成质量,支撑算法仅仅是锦上添花,对于国内的大多数刚刚起步的3D打印企业目前还没有必要把过多的精力放在支撑算法的研发上。在我的切片引擎中我用的三维布尔运算,采用线扫描,采样间隔大于实体的采样间隔。这样的方案不是最好的,但是可以在开发周期和软件质量方面做出一个平衡。

具体方案如下:

将原型零件的STL模型上所有法向量Z向分量为负的三角形面片合并成支撑区域,再分别将各区域沿Z轴向基底投影,从而得到所需支撑的STL模型。如果投影区域与零件模型的实体有相交区域,还需要对生成的支撑进行干涉处理,其中要用到三维布尔运算。具体流程如下图:

该算法的基本原理是:将原型零件的实体模型切分成n+1层,则零件实体由一系列序号从0~n的切片S[i]组成,记为 M=S[i]i=0,1,2,,n ,S表示各切片的实体区域。相应的支撑也应该有n+1层,由一系列序号从0~n的切片P[i]组成,记为 T=P[i]i=01n ,P表示各层的支撑区域,除了最顶层一定没有支撑外,其他层都可能有支撑区域。其中,任意一层的支撑区域P[i],等于其上层实体区域S[i+1]与上层支撑区域P[i+1]布尔运算之和减去该层的实体区域S[i]。任意层的支撑区域的表达式为:

{P[i]=ϕ,i=nP[i]=S[i+1]+P[i+1]S[i],i=0,1,2,,n1

上述较为抽象,具体的来说,该算法可以简化,可以把支撑体切片用扫描线离散化(这里不需要像实体填充那样做的华丽,只需简单的用平行的扫描线离散化即可),只需对上述算法用于扫描线,这样二维的问题就转化为一维,大大简小了复杂度。实在不行,用整体支撑也挺好,虽然结果粗糙,却大大降低了代码的复杂度。总之这一块的算法能保证能很好的支撑住实体以及能较容易的和实体剥离就可以了。

我认为较好的方案是在一篇国内的论文中反映的:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值