【此系列文章基于熔融沉积( fused depostion modeling, FDM )成形工艺】

这一篇文章说一下填充算法中的网格填充。网格填充在现有的较为成熟的引擎中是非常普遍的:skeinforge从扫描线的连续性上考虑採用的四边形填充,看下图:



打印顺序:a→b→c→d→e→f→g→h→i→j→k→l→⋯→t→a所以打印能够以行为单位进行,每两行是一笔画下来的。

slice3r从模型的柔韧性上考虑採用的是六边形填充(蜂窝填充)。cura从打印速度及开发成本上考虑则主要採用的是线填充(不知道如今是否还是这样。去年的时候cura因此打印质量不如skeinforge和slice3r)。我的上一家雇主,为了实现建筑打印,从模型硬度上考虑则须要实现三角形填充(理论上讲三角形填充也不是最合适,下文将提到)。

为什么那么多切片程序都默认网格填充。非常大原因是它能够不做不论什么改变的兼顾各种拓扑结构,连续性强,平均长度和方差都相对符合打印机的基本要求(请參看第一讲切片引擎的基本要求),并且开发起来也相对easy。

在我的程序里。不局限于是多边形填充。理论上能够是随意填充图案的,动态载入图案。然后动态拼接成网状。我的方案是先把基本图形单元存入xml,然后在程序中像拼地板砖一样把它扩展,最后就实现了网格填充。xml文件格式例如以下:

<?

xml version="1.0" encoding="utf-8" ?>
<Rectangle LineCount="3" XVol="0.1" YVol="0.1" Angle="30"> <Line>
<Begin x="0.10" y="0.10"/>
<End x="0.10" y="0.00"/>
</Line> <Line>
<Begin x="0.10" y="0.00"/>
<End x="0.00" y="0.00"/>
</Line> <Line>
<Begin x="0.10" y="0.00"/>
<End x="0.00" y="0.10"/>
</Line>
</Rectangle>

这是正三角形填充的一个基本图元,当中LineCount是图元中的线段数。XVol是线段集合中x的最大值。Angle为偏转角度,这个參数非常关键。由于非常多不规则图形不太方便xy轴正方向的拼接,须要拼接好然后做一定角度的旋转变换。以下的xml代码是正六边形填充的基本图元。

<?xml version="1.0" encoding="utf-8" ?>
<Rectangle LineCount="6" XVol="3.00" YVol="1.73" Angle="0">
<Line>
<Begin x="0.00" y="0.87"/>
<End x="1.00" y="0.87"/>
</Line> <Line>
<Begin x="1.00" y="0.87"/>
<End x="1.50" y="1.73"/>
</Line> <Line>
<Begin x="1.00" y="0.87"/>
<End x="1.50" y="0.00"/>
</Line> <Line>
<Begin x="1.50" y="0.00"/>
<End x="2.50" y="0.00"/>
</Line> <Line>
<Begin x="2.50" y="0.00"/>
<End x="3.00" y="0.87"/>
</Line> <Line>
<Begin x="3.00" y="0.87"/>
<End x="2.50" y="1.73"/>
</Line> </Rectangle>

接下来在程序中把它展开。然后用clip算法。这样就得到了全部的填充矢量的集合。以下最关键的是把这些填充矢量收尾相接的,间断次数最少的组织起来(可參考图的深度优先遍历),注意:这里填充矢量的方向在组织的时候是能够改变的。以及把长度小于阈值的边给去掉。这样就实现了最简单的网格填充。

我们平时所说的填充大都指的是二维概念上的。能不能实现三维概念上的填充,或者说是不是有必要实现三维的填充,我觉得是有必要的。就像是我上面提到的建筑材料的打印。要尽可能的硬度大。就须要实现相似于金刚石的内部结构,就应该是一个正四面体的填充。这就是一个三维概念上的填充。实现方法和上面提到的相似。仅仅只是图元扩展和clip的时间复杂度要大得多,三维的clip算法眼下有没有较为成熟的这个我本人还没有去研究过。

转载请注明出处:http://blog.csdn.net/fourierfeng/article/details/47605363

3D打印技术之切片引擎(6)的更多相关文章

  1. 3D打印技术之切片引擎(5)

    [此系列文章基于熔融沉积( fused depostion modeling, FDM )成形工艺] 从这一篇文章開始,就開始说填充.在3D打印切片技术中,填充算法是最核心的部分.3D打印技术的经常使 ...

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

    [此系列文章基于熔融沉积( fused depostion modeling, FDM )成形工艺] 这一篇文章我讲一下多边打印的问题,多边打印是切片引擎的一项关键的技术. 图1 双边打印 首先.它能 ...

  3. 3D打印技术在医疗上的实际应用与实验室研究

    2018-01-17 Chris 免费3D打印模型资源站 预计阅读时间:5-10分钟 关键字:3D打印髋关节.脊柱置换产品,3D打印技术辅助精准截骨,义齿,生物墨水(BioInk),干细胞   随着& ...

  4. 3D打印技术的火爆,真的会让传统模具行业没落吗?

    当一种新生事物出现时,人们除了赞美它带来的新畅想外,往往还会对"旧事物"贬低几分--各种淘汰观点总是不绝于耳.但可惜的是,新生事物取代旧事物的事儿并不会必然发生.比如,直到现在广播 ...

  5. 3D打印技术的学习

    1. 我们使用3D建模软件:123Ddesign来设计 123D design软件保存格式有2种,分别为123dx和stl格式 123dx格式:选择菜单栏中“Save”下的“To my compute ...

  6. 通过three.js实现简易3D打印模型切片展示

    现在的页面展示要求越来越高,美的展示总能吸引更多的访客.最近在学习3D打印中的切片算法,刚刚入门,发现通过three.js框架可以很好展示出3D切片细节(虽然我做的比较简单). //========= ...

  7. 3D打印:三维智能数字化创造(全彩)

    3D打印:三维智能数字化创造(全彩)(全球第一本系统阐述3D打印与3D智能数字化的专业著作) 吴怀宇 编   ISBN 978-7-121-22063-0 2014年1月出版 定价:99.00元 42 ...

  8. 《3D打印:三维智能数字化创造(全彩)》

    <3D打印:三维智能数字化创造(全彩)> 基本信息 作者: 吴怀宇 出版社:电子工业出版社 ISBN:9787121220630 上架时间:2014-1-13 出版日期:2014 年1月 ...

  9. 进阶篇:3.9)3d打印件设计

    本章目的:了解3d打印,购买3d打印机. 1.3d打印基础知识: 现在主流的3d打印技术有4种:①FDM:②SLA:③SLS:④3DP.具体如下: ①熔融沉积造型(Fused deposition m ...

随机推荐

  1. eclipse oxygen离线安装activiti

    我用的最新版本的eclipse oxygen,结果通过help-->install new software-->add 一直报找不到,后来网上查找的离线安装,终于成功了,在这里和大家分享 ...

  2. 贰、js的基础(三)数组

    JS中数组的操作 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长 ...

  3. Oralce 视图 view

    Oracle视图 Oracle的数据库对象分为五种:表,视图,序列,索引和同义词. 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表 ...

  4. 配置 IntelliJ IDEA VM options

    今天在使用maven build flex 项目的时候,build failure ,查看log后发现[ERROR] Java heap space. 原来是内存不够了.需要修改maven的运行时内存 ...

  5. Google C++ Style Guide的哲学

    Google C++ Style Guide并不是一个百科全书,也不是一个C++使用指南,但它描述适用于Google及其开源项目的编码指南,并不追求全面和绝对正确,也有许多人置疑它的一些规则.但作为一 ...

  6. Qt之QDesktopServices

    简述 QDesktopServices类提供的函数用于访问常见的桌面服务. 许多桌面环境都会提供一系列服务,可以通过应用程序来执行常见任务,如:以用户应用程序首选项的方式,打开一个网页. 此类包含为服 ...

  7. Tsinsen A1303. tree(伍一鸣) LCT

    LCT的各种操作... . cut link add mul size rev query 写的效率不够高... BZOJ上似乎TLE. ... A1303. tree(伍一鸣) 时间限制:2.5s  ...

  8. Android图片旋转,缩放,位移,倾斜,对称完整演示样例(一)——imageView.setImageMatrix(matrix)和Matrix

    MainActivity例如以下: import android.os.Bundle; import android.view.MotionEvent; import android.view.Vie ...

  9. bzoj1003: [ZJOI2006]物流运输(DP+spfa)

    1003: [ZJOI2006]物流运输 题目:传送门 题解: 可以用spfa处理出第i天到第j都走这条路的花费,记录为cost f[i]表示前i天的最小花费:f[i]=min(f[i],f[j-1] ...

  10. PHP str_replace() 和str_ireplace()函数

    PHP str_replace() 和str_ireplace()函数 实例 把字符串 "Hello world!" 中的字符 "world" 替换为 &quo ...