3D打印自动支撑算法

这篇具有很好参考价值的文章主要介绍了3D打印自动支撑算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

3D打印技术出现在20世纪90年代中期,其原理是使用三维扫描采集物件的三维数据,或直接使用计算机设计三维模型,利用软件算法将物件模型分成若干层,打印机内装有液体或粉末等打印材料,与电脑连接后,通过电脑控制把“打印材料”按照层的形状一层层叠加起来,当每层材料固化后便打印下一层,从而形成成实物。

3D打印技术多大数十种,其中较常见的有FDM熔融沉积成型3D打印技术、SLA光固化快速成型3D打印技术、DLP数码影像投射3D打印技术。FDM是将材料融化,通过喷嘴挤出,逐层堆叠,创建卓越的热稳定性和耐化学性,并有良好的强度重量比FDM适用于很多行业。SLA 出现较早,SLA是通过紫外光照射光敏树脂固化成型S通过一个激光发射器将光束射到反射镜上,通过计算机控制反射镜的角度,从而使光速发射到适当的点,定点诱导光敏树脂原料的聚合。当一个点固化后,计算机控制激光束投向下一个点。DLPSLA 类似,但是DLP不像SLA产生单独光斑。DLP通过图像投影技术将一层影响通射到树脂上,经过一段时间照射使光敏树脂原料固化,其打印速度比SLA 快,打印精度也有所提高

本文属于3D打印技术领域,涉及一种自动添加支撑的算法。目的是提供一种检测三维模型支撑点的算法,解决了3D打印中某些特殊结构因重力影响导致打印失败的问题。

3D打印自动支撑算法

光固化快速成型3D打印示意图

二、3D打印支撑

我们都知道3D打印技术的原理是,将材料一层一层的堆积,直至模型最终成型。下一层材料堆叠在上一层材料上,对于不规则的物体,下一层与上一层不一样,并不是完美堆叠,可能有平移,那么这里就要考虑到一个重力的问题。由于材料受重力影响,有可能发生坠落,从而导致打印失败。

3D打印支撑是指为了保持3D打印物品的物理平衡而产生的支架材料。文献[1]提出一种斜壁结构自动支撑算法。

三维模型有若干三角形片面组成,文献[2]中提到有以下四种情况要添加支撑:

(1)被支撑面与Z轴垂直

(2)被支撑面与Z轴形成一定夹角θ

(3)悬吊边、悬吊点

(4)悬吊线

本文只考虑被支撑面与Z轴形成一定夹角θ及悬吊点两种情况便可满足大部分情况。

1. 45度倾斜

根据重力原理,如果一个物体的某个面与垂直线的角度大于45度且悬空,就有可能发生坠落,导致打印失败。一般的经验法则是:如果悬垂物与垂直方向倾斜的角度小于45度,那么可以不使用支撑结构;与垂直方向成45度以上角度的悬垂需要3D打印支撑结构。如下图:第一个形状不用添加支撑结构,第二第三个形状需要添加支撑结构。

r3D打印自动支撑算法

物体表面倾斜

2. 悬吊点

对于悬空的结构,由于下方没有可以支撑它的结构,材料就会在重力的影响下下坠,轻则影响最终打印物的精准度,重则变成乱糟糟的一团完全打印失败。同样,在打印内含中空结构的物体时也会出现类似问题,导致打印失败。

3D打印自动支撑算法

悬吊点

三、算法原理

算法的原理分为两部分,第一部分查找满足条件的悬吊点,第二部分查找满足条件的支撑面,对于部分查找满足条件的面使用经典的种子填充算法。

通过hash表建立拓扑结构,先遍历所有三角形片面,找到悬吊点,再使用种子填充算法的变种算法,查找相邻三角形,并判断是否需要添加支撑,将需要添加支撑的三角形组成集合,并从集合中找到孤立点,对于孤立点必添加支撑,对于支撑点以外的区域,使用网格法均匀增加支撑点。

1. 三维模型文件格式简介

常见的三维文件格式有abc、glTF、fbx、obj、dea、sts、3ds等,stl作为一种简单的格式,使用非常方便,本文采样这种格式进行测试。stl只能用来表示封闭的面或者体。stl文件有两种:一种是ASCII明码格式,另一种是二进制格式。

二进制STL文件用固定的字节数来给出三角面片的几何信息。

文件起始的80个字节是文件头,用于存贮文件名;

紧接着用 4 个字节的整数来描述模型的三角面片个数,

后面逐个给出每个三角面片的几何信息。每个三角面片占用固定的50个字节,依次是:

3个4字节浮点数(角面片的法矢量)

3个4字节浮点数(1个顶点的坐标)

3个4字节浮点数(2个顶点的坐标)

3个4字节浮点数(3个顶点的坐标)个

三角面片的最后2个字节用来描述三角面片的属性信息。

一个完整二进制STL文件的大小为三角形面片数乘以 50再加上84个字节。

2. 基于哈希表的三维模型拓扑结构

一个三维模型包含大量三角形数和其发向量。对于一个由三角形片构成的多面体,其每个三角形有三个顶点,每个顶点同时属于若干个三角形,因此相邻的三角形存在拓扑关系。在计算过程中,需要非常平凡地访问三角形的顶点即法向量,这个过程非常耗时,因此建立三角形之间的拓扑结构,可大幅提高算法的速度。

文献[3]提出一种基于红黑树的STL拓扑重建算法,红黑树时间复杂度是O(log n),本文选择hash表作为数据结构,理想情况下时间复杂度是O(1),平均速度比红黑树更快。

对于点p(x,y,z),以p为key,以p相邻的三角形的索引的集合为值,建立拓扑结构。哈希函数为:H(key)= p.x *1000 + p.y*1000 + p.z*1000;对于三角形t1、t2,其顶点为为p1,p2, p3, p4,以点为hash的键,以点相邻的三角形为hash值,构建如下数据结构:

3D打印自动支撑算法

三维模型拓扑结构与hash表

3. 支撑面的识别

a. 种子填充

本文使用种子填充算法识别大片彼此相邻的三角形,即支撑面。

种子填充算法,也叫泛洪算法——Flood Fill,是一种从连通区域内的一个种子点开始,逐渐向其四周扩展,填充整个区域的算法,多用于图像处理中,用于填充具有不同颜色的连接的,颜色相似的区域,直到图形的边界。

种子填充算法有几个重要的要素如下:

1.领域选择策略。即确定周围相邻的三角形。

2.包含策略。即判断一个三角形是否能纳入当前连通区域,以及什么样的三角形不能加入。

3.生长方式。深度优先还是广度优先。

b. 领域选择策略

相邻的三角形即为领域,即两个三角形共边,则这另个三角形相邻。判断条件:三角形t1和t2有公共顶点,则t1和t2相邻。

c. 包含策略

满足添加支撑的添加即可包含,判断条件:三角形t的法向量n,Z轴负方向p,p与n的夹角θ,有 θ > 45° 且 θ < 135°

3D打印自动支撑算法

三角形法向量与Z轴角

d. 生长方式

采用广度优先策略搜索,即从某个三角形出发,首先判断改三角形是否被包含,若被包含则依据拓扑结构,依次获取相邻的三角形的集合,并判断该集合内的每三角形是否被包含,以次规则直至所有的相邻的三角形都被访问。

e. 识别支撑面的流程

  1. 取一个未标记的种子三角形
  2. 标记该三角形,检测该三角形是否满足支撑面判断条件,满足就添加到支撑面
  3. 获取相邻三角形,并重复2
  4. 若某一三角形不满足则检查支撑面的三角形面积和是否大于阈值
  5. 若大于阈值则将支撑面输出并继续执行1
  6. 重复1-5直到已经检测所有三角形为止

3D打印自动支撑算法

识别支撑面流程图

4. 悬吊点的识别

由于模型表面通常都不是平整的面,会产生悬吊点结构。该点的Z坐标低于周围点的Z坐标。判断某一顶点为悬吊点,可通过模型拓扑结构,获取改顶点所有相邻点,通过比较Z坐标来确定。一般会设置一个阈值高度,当悬吊点与周围相邻点Z坐标差的平均值大于该阈值高度则识别为悬吊点。

如图,点1的Z坐标低于点2、点3、点4、点5、点6、点7,此时点1为悬吊点。

3D打印自动支撑算法

悬吊点

5. 支撑点的确定

支撑点为最终输出的可添加支撑的点,支撑点应满足以下条件:

(1)包含所有的悬吊点

(2)覆盖所有的支撑面

(3)支撑点之间保持适当间隔,防止支撑粘连

(4)支撑点应均匀分布,防止模型受力失衡倒塌

6. 支撑生成步骤

1、检测模型的悬吊点并作为支撑点

2、检测模型的支撑区域

5、对每个支撑区域xy平面投影

6、用网格覆盖平面投影

7、判断网格中是否有悬吊点,若没有则标记网格

8、遍历所有网格,对没有标记的网格取中心

9、计算步骤8中网格中心与模型下表面的交点,作为支撑点

10、生成支撑结构

如下图,支撑区域为不规则形状,使用网格覆盖支撑区域,点1为悬吊点,因此悬吊点的位置即为支撑点,其他网格以网格中心与模型下表面相交的点2、 3、 4 为支撑点。

3D打印自动支撑算法

支撑区域投影

四、计算实例

实验环境

处理器

Intel Core i7-9750 2.60GHz

内存

8.00GB

操作系统

64位 Windows 10

实验结果

模型

三角形数量

支撑点数量

耗时(毫秒)

模型1

204

26

37

模型2

185636

74

158

模型3

222838

27

238

网格间隔:5毫米

3D打印自动支撑算法

模型1

3D打印自动支撑算法

模型2

3D打印自动支撑算法

模型3

参考文献

[1]黄小毛 叶春生 郭开波 莫键华 基于STL的斜壁结构支撑及自动生成算法 2009

[2]王燕宁 3D打印支撑结构自动生成算法及实现 2018

[3]安涛 戴宁 廖文和 袁天然 基于红黑树的STL数据快速拓扑重建算法 2008文章来源地址https://www.toymoban.com/news/detail-428977.html

到了这里,关于3D打印自动支撑算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 实力认证!OceanBase获“鼎信杯”优秀技术支撑奖

    实力认证!OceanBase获“鼎信杯”优秀技术支撑奖

    6 月 30 日,2023 “鼎信杯”信息技术发展论坛在京隆重举办第二届“鼎信杯”大赛颁奖典礼。OceanBase 凭借完全自主研发的原生分布式数据库,以及丰富的核心系统国产数据库升级案例,斩获“优秀技术支撑奖”。 论坛上,国内首个基于在线交易风控场景的 HTAP 数据库基准——

    2024年02月10日
    浏览(10)
  • 智慧公厕是智慧城市公共厕所形态的新一代技术支撑

    智慧公厕是智慧城市公共厕所形态的新一代技术支撑

    在现代城市发展中,智慧城市正逐渐成为名副其实的未来趋势。作为城市基础设施的一部分,公共厕所的发展也与智慧城市息息相关。通过提升城市设施治理效率、实现数据开放与融合以及提升业务协同效率,智慧城市为公共厕所形态带来了全新的变革。本文以智慧公厕源头

    2024年02月09日
    浏览(13)
  • 用魔法打败魔法!AI识别名人造假视频;OpenAI开源Point-E进军3D打印市场;谷歌CALM算法加速文本生成… | ShowMeAI资讯日报

    用魔法打败魔法!AI识别名人造假视频;OpenAI开源Point-E进军3D打印市场;谷歌CALM算法加速文本生成… | ShowMeAI资讯日报

    👀 日报合辑 | 🎡 AI应用与工具大全 | 🔔 公众号资料下载 | 🍩 @韩信子 https://www.pnas.org/doi/pdf/10.1073/pnas.2216035119 Deepfake 是 AI 生成的“假”图像、音频和视频,使用自动编码器或生成对抗网络,将原始图像/音视频中的人替换为其他人的肖像,从而轻松欺骗普通观众。自几年前

    2023年04月19日
    浏览(11)
  • 苦于实现3D空间自动布局的同学,请参考:3D室内空间布局自动化算法分析(含源码)

    苦于实现3D空间自动布局的同学,请参考:3D室内空间布局自动化算法分析(含源码)

    分两步生成给定房间的家具布置: 第一步:根据美学和功能规则,优化房间中家具对象的选择和布置。此过程通过【贪婪成本最小化算法】快速探索家具布局的无限跨维空间 根据室内设计规则形成的成本函数优化全局家具布局和对象选择。在此优化过程中,家具布置会因特

    2024年04月29日
    浏览(66)
  • 配网故障定位技术的发展与应用:保障电力供应安全稳定的重要支撑

    配网故障定位技术的发展与应用:保障电力供应安全稳定的重要支撑

    在现代社会,电力供应安全稳定对于国家经济发展和民生福祉至关重要。然而,随着电网规模的不断扩大,配网故障问题也日益突出。为了确保电力供应的连续性和可靠性,人们不断探索和研发各种故障定位技术。本文将介绍一种基于行波测距技术的配网行波型故障预警与定

    2024年02月02日
    浏览(10)
  • 首届“天网杯”网络安全大赛启动 | 赛宁网安提供全面技术支撑

    首届“天网杯”网络安全大赛启动 | 赛宁网安提供全面技术支撑

    ​​6月25日,由中华人民共和国公安部、天津市人民政府指导,天津市公安局、天津市委网信办、天津市工信局、天津市滨海新区人民政府、公安部第一研究所、国家计算机病毒应急处理中心共同主办,南京赛宁信息技术有限公司提供全面技术支撑的首届“天网杯”网络安全

    2024年02月11日
    浏览(10)
  • 棱镜七彩荣获“国家信息安全漏洞库(CNNVD)技术支撑单位一级证书”

    棱镜七彩荣获“国家信息安全漏洞库(CNNVD)技术支撑单位一级证书”

    近日,中国信息安全测评中心公布2023年度国家信息安全漏洞库技术支撑单位名单,棱镜七彩荣获中国信息安全测评中心颁发的“国家信息安全漏洞库(CNNVD)技术支撑单位等级(一级)证书”,成为CNNVD最高级别的技术支撑单位之一。 图 CNNVD一级技术支撑单位证书 CNNVD技术支

    2024年02月12日
    浏览(14)
  • 自动驾驶之3D点云聚类算法调研

    自动驾驶之3D点云聚类算法调研

    总共分为4类 基于欧式距离的聚类 Supervoxel 聚类 深度(Depth) 聚类 Scanline Run 聚类 思路 : 在点云上构造kd-tree, 然后在某个半径阈值(例如0.5m), 则分割为一个实例。 相似算法: RBNN (radially bounded nearest neighbor graph), 2008. CVPR13 Voxel Cloud Connectivity Segmentation - Supervoxels for Point Clouds 3D is h

    2024年02月06日
    浏览(9)
  • 3d模型面部自动绑定插件及算法相关研究

    3d模型面部自动绑定插件及算法相关研究

    本文站在程序的角度介绍了目前对市面上的一些面部骨骼自动绑定方案及算法的一些心得 1) 线性混合蒙皮 线性蒙皮公式: 其中Cji代表骨骼变换矩阵(rotation, position,和scale矩阵)。Wi代表第i个顶点的权重,V代表对应的顶点。V`由各个骨骼的累加计算得出。但是线性混合蒙皮

    2024年02月08日
    浏览(27)
  • 三维铁木辛柯梁Matlab有限元编程 | 弹簧支座 | 弹性支撑单元| Matlab源码 | 理论文本 | 三维梁 | 3D梁 | 空间梁

    三维铁木辛柯梁Matlab有限元编程 | 弹簧支座 | 弹性支撑单元| Matlab源码 | 理论文本 | 三维梁 | 3D梁 | 空间梁

    作者简介:工学博士,高级工程师,专注于工业软件算法研究 本文已收录于专栏: 《 有限元编程从入门到精通 》本专栏旨在提供 1.以 案例 的形式讲解各类有限元问题的程序实现,并提供所有案例 完整源码 ;2. 单元类型 包含:杆单元,梁单元,平面三角形单元,薄板单元

    2024年03月25日
    浏览(6)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包