SLM激光切片软件开发

3D打印常规功能主要包括以下几个方面:

  • 1、模型导入导出

  • 2、模型渲染(环境、模型、工作台、坐标系等)

  • 3、模型刚性变换,平移、旋转、缩放等

  • 4、切片功能(其中FDM和光固化两种切片方式不一样)

  • 5、支撑功能(分别对悬空点、边、面检查并支撑)

  • 6、切片预览功能(主要观察切片截面情况、有时可辅助检查支撑是否漏加)

    为满足更多的3D打印爱好者的需求,很多切片软件还个性添加一些辅助性功能,如光固化的打孔、抽壳、填充等,还有一些客户有个性化需求,如添加文字、网格分割、网格修复功能等,再有一些专业性软件可以提供更加专业的模型处理能力,如网格 变形、特征转移等,由于篇章问题不展开讨论。

本人为3D打印爱好者,以下所提技术是基于这篇论文《选区激光融化切片软件的关键技术研究》的理解之上做的一些开发。

1、模型导入导出功能

常规的3D打印模型格式有stl、obj、ply、3mf等,每一种格式都有各自存储自定义的数据格式、如顶点坐标、面片的顶点索引、面片的法矢量、还有颜色信息,也叫纹理坐标,复杂的还有线的数据信息等,常规的stl可以满足绝大多数的用户了。如stl格式,有二进制和ASCALL格式,分别对应不同的读取方式,具体代码或读取方式请自行搜索。
在这里插入图片描述

2、模型渲染

模型渲染必须用到的工具是opengl,三维渲染的基本库,很多三维渲染软件都是基于他的,如unity3D,zbrush等优秀软件,随着三维技术的发展,越来越多的平台逐渐支持opengl开发,以前三维引擎开发主要基于pc端,c++开发,自从glsl以后,大大降低了三维引擎的开发,web也集成了three.js、webGL等技术,不久后微信小程序也支持webGL技术,想在三维领域大展拳脚的童鞋们可要捉紧机会好好撸一把了。
以往的模型渲染通常是glbegin(xxx)开始,glend()结束绘制,简单的模型渲染也可以运行的很好,但由于opengl是服务端与客户端的关系,每次发送数据会导致渲染瓶颈,更多的时间浪费在数据传输之上,于是后来有了VBO(顶点数组)方式,一次性发送数据给服务端,多次渲染,大大提高渲染效率,从而降低大量渲染的卡顿问题,后面再者有了FBO的离线渲染方式,又一个提升性能的工具,使得opengl的生命力更加强大。
opengl还有一个更加强大的功能是GLSL着色器,可以自定义各种各样的着色器,顶点着色器、细分着色器、几何着色器、片元着色器,将各个渲染过程进行管线管理、组装完成自己想要的效果,提供更加灵活的编程方式,大大提升了三维渲染引擎的开发效率、完成更加强大的渲染功能、如粒子群系统等,更多的细节请各自查阅相关知识,此处不多展开。
模型渲染涉及照相机、世界坐标系、相机坐标系、灯光、材质、纹理等各方面的基础,要理解各种概念才能渲染出一个友好的界面,需要不断的摸索研究,各种数据需要矩阵变换,矩阵计算时时刻刻知道当前是如何把控整个系统的。

3、模型刚性变换,平移、旋转、缩放等

模型刚性变换涉及到矩阵运算相关知识,在opengl的世界里,主要涉及几个矩阵是:视图矩阵,模型变换矩阵,透视矩阵,其中模型变换矩阵就需要用到平移、旋转、缩放的累加,具体的计算过程请自行查阅相关知识点。
世界坐标系下的所有操作,都会经过模型视图矩阵、透视矩阵、裁剪矩阵转化到二维屏幕坐标,显示在窗口之上,同理,窗口之上的所有操作可以通过逆过程映射到三维坐标系中的数据,以进行相关的交互,如模型上面片的选取,点击等操作。

4、切片功能

切片的概念,熟悉3D打印的童鞋就很清楚了。由于模型是三维的,3D打印技术是逐层打印的,切片就是将模型分层n层,每一层的都有固定的厚度,如光固化常规厚度为0.05,FDM的厚度为挤出机喷嘴的直径,通过n层的堆积,最终打印出来整体的模型。
FMD的切片方式通常是将模型分层,现在比较流行的cura软件,是基于curaengin引擎将模型slice分层,各层之间使用Clipper库进行交集差集计算,得到最外部的轮廓,然后根据用户交互判断是否需要填充,计算皮肤厚度、计算最短走刀路径等最终得到整个模型。
光固化通常是使用投影方式,将模型分割成n张图片,图片只有黑白两种颜色,如黑色为非模型实体,白色为模型实体,每一层根据黑色白色进行打印,逐层添加最终生成整个模型。
SLM金属粉末激光3D打印,切片后使用激光喷嘴,像FDM一样走指定的轨迹,把整个模型填充成实体。SLM是属于工业级的,精度非常高。

5、支撑功能(分别对悬空点、边、面检查并支撑)

由于3D打印是逐层打印的,层于层之间是连续的,但是由于模型在某些地方悬空,导致不能层层连续,就需要为模型提供支撑,使得模型打印过程中层层连续,提高打印成功率。由于模型的复杂性,往往很多模型不能提供自支撑的特点,所以3D打印的一个关键的功能就是支撑,合适的使用支撑会大大提高模型打印的成功率。但同时,由于支撑也是属于材料,所以添加支撑的同时也会浪费更多的材料,再者支撑与模型接触的地方会影响模型表面的光滑度,所以设计者要好好考虑,尽可能多的设计自支撑的结构,尽可能少用支撑。支撑参数也影响打印的成功率,如支撑时接触点太小导致支撑点力不足,导致支撑断裂模型失败,如设置过大的接触点,则导致支撑去除困难,模型表面受损严重。
其中完成了论文的点型、线性、柱状支撑、轮廓支撑和网格支撑算法。其他细节还在完善中如蜂窝状、镂空交叉等,扫描填充的各种扫描路径等。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其他支撑算法请查看:https://blog.csdn.net/LittleLittleFish_xyg/article/details/90474800

6、切片预览功能(主要观察切片截面情况、有时可辅助检查支撑是否漏加)

切片预览功能主要是给二次检查错误的辅助功能。当切片后,先通过预览功能,检查悬空点、突变点,再对该部分结构添加合理的支撑,可以增大模型打印的成功率,也间接降低材料的浪费。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值