【此系列文章基于熔融沉积( 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. 【noip模拟赛10】奇怪的贸易 高精度

    描述 刚结束了CS战斗的小D又进入了EVE的游戏世界,在游戏中小D是一名商人,每天要做的事情就是在这里买东西,再运到那里去卖.这次小D来到了陌生的X星,X星上有n种货物,小D决定每种都买走一些,他用a ...

  2. 练习题|网络编程-socket开发

    1.什么是C/S架构? C指的是client(客户端软件),S指的是Server(服务端软件),C/S架构的软件,实现服务端软件与客户端软件基于网络通信. 2.互联网协议是什么?分别介绍五层协议中每一 ...

  3. Mybatis Generator xml格式配置

    Mybatis Generator可以使用Maven方式和Java方法,使用Maven这里是配置文件: <?xml version="1.0" encoding=" ...

  4. MySQL 5.7基于GTID复制的常见问题和修复步骤(二)

    [问题二] 有一个集群(MySQL5.7.23)切换后复制slave报1236,其实是不小心在slave上执行了事务导致 Got fatal error 1236 from master when r ...

  5. .net系统的MD5加密方法

    /// <summary>/// .net系统的MD5加密方法/// </summary>/// <param name="strIN">< ...

  6. Python3正则表示式(3)

    正则表示式对象 对象1: 案例1: import re example = 'ShanDong Institute of Business and Technology' pattern = re.c ...

  7. [BZOJ2051]A Problem For Fun/[BZOJ2117]Crash的旅游计划/[BZOJ4317]Atm的树

    [BZOJ2051]A Problem For Fun/[BZOJ2117]Crash的旅游计划/[BZOJ4317]Atm的树 题目大意: 给出一个\(n(n\le10^5)\)个结点的树,每条边有 ...

  8. 命令行方式删除文件 && 文件夹

    del File: 删除文件 rmdir Folder : 删除文件夹 [貌似只能删除空目录] rm -rf Folder: 删除非空文件夹 [用windows自带的cmd提示我“rm”不是内部命令 ...

  9. sessions

    php session 用于存储有关用户回话的相关信息,或更改用户会话的相关设置,session变量保存的信息是单一用户的,并且可供应用程序中所有页面使用 session 的工作机制:为每个访问者创建 ...

  10. iOS 转换异步block为同步方式运行

    使用dispatch_semaphore_t 实现 dispatch_semaphore_t sema = dispatch_semaphore_create(0); //创建信号量 __block ...