3D打印技术之切片引擎(2)
来源:互联网 发布:初中化学仿真实验软件 编辑:程序博客网 时间:2024/05/01 20:53
3D打印技术之切片引擎(2)
文章转自:http://blog.csdn.net/fourierfeng/article/details/43897897
在上一篇文章中,我从总体上介绍了一下切片引擎技术,从这一篇文章开始,我开始说一下具体的技术细节。
切片引擎,实体部分包括:
提取边界矢量——>添加多边——>生成填充矢量集合。
为了避免实体和地板的粘连有时候还需要生成个底座,以及为了避免打印头停止打印后有继续吐丝的现象而影响到打印质量,有时候也需要添加墙结构,这些都是很工程的问题,开发上难度也很低,这里就不赘述。
除之外就是支撑部分。这篇文章就先说下支撑算法。生成支撑矢量集合分为人工生成和自动生成两种,优越的支撑算法主要体现在:
- 省材料;
- 生成速度快;
- 生成的支撑体与零件实体较少的接触与干涉,有利于剥离;
- 支撑能稳固的支撑柱任意结构的模型;
其中,3,4互斥,要在两者做出一个平衡;支撑体与实体干涉太少必然就不够稳固,当打印到上层的时候就容易使实体和地板的连接处松动以及实体部分塌陷等等,这要在开发中做到尽量的两者兼顾,要在保证4的情况下尽量的实现3。
毕竟,切片引擎的优劣主要体现在实体生成质量,支撑算法仅仅是锦上添花,对于国内的大多数刚刚起步的3D打印企业目前还没有必要把过多的精力放在支撑算法的研发上。在我的切片引擎中我用的三维布尔运算,采用线扫描,采样间隔大于实体的采样间隔。这样的方案不是最好的,但是可以在开发周期和软件质量方面做出一个平衡。
具体方案如下:
将原型零件的STL模型上所有法向量Z向分量为负的三角形面片合并成支撑区域,再分别将各区域沿Z轴向基底投影,从而得到所需支撑的STL模型。如果投影区域与零件模型的实体有相交区域,还需要对生成的支撑进行干涉处理,其中要用到三维布尔运算。具体流程如下图:
该算法的基本原理是:将原型零件的实体模型切分成n+1层,则零件实体由一系列序号从0~n的切片S[i]组成,记为
上述较为抽象,具体的来说,该算法可以简化,可以把支撑体切片用扫描线离散化(这里不需要像实体填充那样做的华丽,只需简单的用平行的扫描线离散化即可),只需对上述算法用于扫描线,这样二维的问题就转化为一维,大大简小了复杂度。实在不行,用整体支撑也挺好,虽然结果粗糙,却大大降低了代码的复杂度。总之这一块的算法能保证能很好的支撑住实体以及能较容易的和实体剥离就可以了。
我认为较好的方案是在一篇国内的论文中反映的:
- 3D打印技术之切片引擎(2)
- 3D打印技术之切片引擎(2)
- 3D打印技术之切片引擎(3)
- 3D打印技术之切片引擎(3)
- 3D打印技术之切片引擎(1)
- 3D打印技术之切片引擎(4)
- 3D打印技术之切片引擎(5)
- 3D打印技术之切片引擎(6)
- 3D打印技术之切片引擎(7)
- 3D打印技术之切片引擎(1)
- 3D打印技术之切片引擎(4)
- 3D打印技术之切片引擎(5)
- 3D打印技术之切片引擎(6)
- 3D打印技术之切片引擎(7)
- 3D 打印切片软件 CuraEngine 介绍
- HTML5 2D游戏引擎研发系列 第四章 <Canvas技术篇-画布技术-基于手动切片动画>
- 3D打印技术
- 3D打印技术
- 10分钟进阶Nuget
- 在Ubuntu上下载、编译和安装Android最新源代码
- AIX 日常管理常用命令
- Unity开发Android游戏(二)Hello world!
- web前后台数据交互的几种方式
- 3D打印技术之切片引擎(2)
- java web.xml文件中的url-pattern 中的/ 与/*的区别
- Codeforces Round #384 (Div. 2) 水题解题报告
- hadoop学习第十二节:Flume介绍与安装
- Windows下用VMware安装Linux系统
- java线程中时间戳报错及时间戳获取问题
- 介绍几个ipad的使用技巧
- $location服务
- ajax回填表单获取json中的某个值