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

从这一篇文章開始,就開始说填充。在3D打印切片技术中,填充算法是最核心的部分。3D打印技术的经常使用的指标包含:打印速度,稳固性,柔韧性,逼真度,密度(关系着使用打印材料的多少)。都与填充算法有着直接的关系。能够说衡量一个切片引擎的优劣主要看它的填充算法是否优越。

事实上我開始研发切片引擎的时候,因为不是全部的模型打印都须要支撑,并且针对边界的分层技术又比較easy实现,所曾经面的算法开发时间非常短,大部分时间耗在了填充算法的研究上。也就是填充算法的不断优化使得我的引擎的打印质量不断的接近于skeinforge。

填充算法是一个世界难题。眼下世界上最先进的填充算法也还是问题多多。怎样最优化的填充使得模型兼顾稳固逼真,并且密度小,打印速度快。这不是简单的二维几何填充所能做的到的。我大学的专业是临床医学。记得人体解剖学中提到过的骨小梁结构,事实上才是最合理的填充方式,可是怎样用数学实现骨小梁。任重而道远啊。

行,立即进入正题。在这一篇文章里,我就先说一下填充算法中最简单的一种——线填充。

首先。须要引用计算机图形学二维图形的扫描线填充算法。例如以下图:



简单的描写叙述:射线与多边形相交,与边界交点个数为奇数。为内点。偶数为外点或者边界点。可是。还有几种特殊情况须要特殊处理:每当一条扫描线经过多边形的一个顶点时,扫描线在该顶点处与多边形的两条边相交,这种情况可能导致在这条扫描线的交点列表上要添加两个点。

当扫描线与奇数边相交时,这时候须要把扫描线与两側的有公共交点的线的交点算作一个交点。

例如以下图b线:



另外。还有边界线与扫描线重合的情况,须要全然规避掉。

对于最简单的线填充,掌握这个原理基本就没有问题了。所须要注意的就是上下两层不能同一方向的填充,避免打印的模型不稳定,能够考虑採用依次採用x轴平行的方向和y轴平行的方向。这样用一组等间距的平行线扫描,採用上述的算法。最简单的线填充就完毕了。

但这种线填充会引出一个问题,回想一下在第一讲中说到的——一个成功的切片引擎应该满足的几点,这种填充尽管看似基本满足要求。但绝大多数情况在这几点上做的非常不够,尤其是某一层是个狭长的结构。每一行的扫描线就非常的短,打印机就走走停停,不断的更换打印方向。打印速度受到极大的影响,更重要的是扫描线对边界冲击次数太多。肯定要影响到表面的效果,影响美观。并且频繁的走走停停,更换方向,对机器的寿命也是极大的消耗。

能够考虑这种解决方式,第一步:把某一层的二维图形切割成若干个凸集或者近似凸集。第二步,对每个凸集进行主元分析。

第三步,利用得到的主元方向。先把x轴或者y轴变换到与主元平行的方向,这里如果该线性变换为M,利用上述的算法进行填充,然后再利用M−1变换回原来的位置。

主元分析是利用协方差矩阵确定边界向量的主元向量。这里的点是二维,可简单表示:

μx=12n∑i=1n(beginPointxi+endPointxi)

当中beginPointxi为第i个边界矢量的起始向量的x分量,endPointxi为第i个边界矢量的结束向量的x分量;y分量以此类推。

以下就開始构造协方差矩阵C,C的第j行第k列元素例如以下(1⩽j,k⩽2):

Ckj=12n
posted @ 2017-08-19 19:27 jhcelue 阅读(...) 评论(...) 编辑 收藏

var allowComments=true,cb_blogId=348874,cb_entryId=7397677,cb_blogApp=currentBlogApp,cb_blogUserGuid='f747dc25-d121-e711-9fc1-ac853d9f53cc',cb_entryCreatedDate='2017/8/19 19:27:00';loadViewCount(cb_entryId);var cb_postType=1;var isMarkdown=false;

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

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

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

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

    [此系列文章基于熔融沉积( fused depostion modeling, FDM )成形工艺] 这一篇文章说一下填充算法中的网格填充.网格填充在现有的较为成熟的引擎中是非常普遍的:skeinfo ...

  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. MSF《构建之法》阅读笔记5

    第七章 MSF MSF是一种软件开发方法,MSF原则包括1推动信息共享和沟通,2为共同的远景而工作,3充分授权和信任,4各司其职,对项目共同负责,5交付增量的价值,6保持敏捷,预期和适应变化,7投资质 ...

  2. 【LeetCode】161. One Edit Distance

    Difficulty: Medium  More:[目录]LeetCode Java实现 Description Given two strings S and T, determine if the ...

  3. this关键字的用法(包括this语句)

    一:概述 this代表它所在函数所属对象的引用. 简单说:哪个对象在调用this所在的函数,this就代表哪个对象. 二:关于运用的程序 同龄人的比较. 三:关于this语句的使用 用于构造函数之间进 ...

  4. ubuntu16.04下vim的安装与配置

    一.安装vim 使用命令 $ sudo apt-get install vim  来安装vim,安装后的vim需要进行一些配置,不然使用起来会有些不方便,比如不会自动缩进. 二.配置vim 使用命令  ...

  5. POI搜索简介

    用户输入——用户输出-----------------------------------------------------------而POI搜索引擎,需要做的就是拿到输入条件,给出用户比较满意的 ...

  6. 外部函数/external

    定义在moodle/lib/externallib.php 概观 外部函数API允许您创建可由外部程序(如Web服务API)访问的完全参数化的方法. 外部函数位于externallib.php文件中. ...

  7. 洛谷.3437.[POI2006]TET-Tetris 3D(二维线段树)

    题目链接 下落一个d*s的方块,则要在这个平面区域找一个最高的h' 更新整个平面区域的值为h+h' 对于本题,维护最大高度h和all 对于平面的x轴维护一棵线段树t1,每个t1的节点维护对应y轴的两棵 ...

  8. 潭州课堂25班:Ph201805201 爬虫基础 第二课 fidder (课堂笔记)

    通过浏览器访问百度的详细过程? 一.通过dns获取百度IP地址.二.通过百度IP访问百度服务器, 三,返回数据. 四,通过渲染显示内容, fidder设置 tf 信任证书

  9. BZOJ2366 : 多重历史

    建立AC自动机,因为不存在某个串是另一个串的后缀,因此匹配到任意位置都只可能匹配一个串. 预处理出每个串出现的所有位置,总的出现次数为$O(m)$. 设$f[i][j]$表示考虑了前$i$个串,最后一 ...

  10. BZOJ4053 : [Cerc2013]Subway

    通过BFS可以求出到每个站点的最小花费. 每次从队首取出一个点,枚举所有它能花费1块钱就到达的线路,通过两遍递推求出最大时间. 注意到每个点和每条线路只有第一次使用时有用,所以总时间复杂度为$O(n+ ...