> 文档中心 > 【论文学习笔记】基于GPU并行计算的3D打印切片算法

【论文学习笔记】基于GPU并行计算的3D打印切片算法


3D打印模型切片算法研究

文章目录

  • 3D打印模型切片算法研究
  • 论文介绍
  • 前言
  • 一、介绍
  • 二、基于反向光线追踪的切片算法
    • 1.反向光线追踪算法
    • 2.快速获取切片轮廓
  • 三、轮廓提取和NUBRS拟合优化
    • 1. Marching Square 轮廓提取算法
    • 2.基于NURBS基函数的切片数据拟合
  • 结论

论文介绍

Title: Slicing Algorithm and Partition Scanning Strategy for 3D Printing Based on GPU Parallel Computing
Author: Xuhui Lai and Zhengying Wei
State Key Laboratory for Manufacturing System Engineering, Xi’an Jiaotong University, Xi’an 710049, China;

前言

提出了一种基于GPU计算的3D模型直接切片技术,根据STL数据中三角面的法向量和顶点坐标进行并行着色,通过调整投影矩阵到切片高度来改变切片位置。 之后根据射线与三角面的交集结果输出截面二值图。 最后利用MS算法完成轮廓数据提取。 该算法不需要对三角形进行排序和删除,结合GPU的并发性来缩短轮廓提取时间。
注:未对本文中提到的扫描策略部分进行介绍。


一、介绍

此切片算法用于电子束激光成型(EBAM)。
论述了当前行业对切片算法的研究。

二、基于反向光线追踪的切片算法

1.反向光线追踪算法

反向光线追踪算法的光线是从相机的位置发出的,与物体照明不同。之后,跟踪光线与模型交汇处的光线强度和颜色值,并将其映射到相应的体素上。该算法主要用于模型渲染等方面。在跟踪过程中,需要沿着光线的折射或反射方向进行迭代,直到光线强度小于设定值或投射到环境中。在3D模型切片中,我们只需要考虑对应的体素是否在模型中,与颜色、纹理等信息无关。因此,计算过程中不考虑光的折射和反射。当光线与模型相交时,对应的体素(像素)设置为黑色,否则为白色。为了保证轮廓提取的准确性,在成型过程中根据轮廓精度的要求对视野进行初始化。

2.快速获取切片轮廓

1)导入STL数据,获取bunding box。
2)定义切片高度,并把Stencil buffer值设置为0,就是所有的网格都不显示
3)选择从视点发出的光线与视野中的所有网格相交。 当射线与前向网格相交时,stencil buffer的值增加1,表示需要绘制该像素; 当光线与反向网格相交时,stencil buffer的值减1,表示该像素不需要绘制。
4)遍历完成后,将缓冲区中值为 1 或 2 的分片进行渲染,将值为 0 的分片丢弃。

从而获得图2STL模型的轮廓数据图3.

在这里插入图片描述

在这里插入图片描述

三、轮廓提取和NUBRS拟合优化

1. Marching Square 轮廓提取算法

以图3右侧所示的切片为例,采用MS(Marching Square)算法计算所有闭合轮廓坐标。根据采样点坐标的RGB值将图像数据转换成二维网格,并用网格点的凹凸状态标记颜色(0,0,0)和(255,255,255) 。实心代表凸网格点,空心代表凹网格点。 从选定的起点开始,取出左边、上、左上的网格点,组成一个小块。 四个网格点的状态该块可分为16种情况,如图4所示。图中蓝色箭头表示下一次搜索的方向。 依次遍历所有像素即可完成轮廓提取。

在这里插入图片描述

轮廓提取过程:
(1)根据二值图像的位置坐标和颜色值确定搜索矩阵范围,同时将轮廓矩阵初始化为空。
(2) 取出4个像素,当颜色全为白色时,按照从左到右,从上到下的顺序搜索。
(3)当4个点的RGB值中第一次出现黑色时,将该点标记为搜索起点,将所有第一次出现的黑色像素的位置坐标存储在轮廓矩阵中。
(4)根据MS搜索方向表的索引结果,将搜索范围移动到下一个搜索方向1个像素宽度,如图4所示。
(5) 重复步骤2-4,直到搜索过程回到起点,即表示闭合轮廓的提取完成,然后按照从左到右、从上到下的顺序寻找新的搜索起点并重复上述过程。
(6) 用公式(4)对交点坐标进行插值校正。
在这里插入图片描述
切片结果如图5所示。
在这里插入图片描述

2.基于NURBS基函数的切片数据拟合

STL模型切片生成的轮廓由大量的微段直线组成,小线之间的夹角由模型的复杂度和离散化精度决定。在成型过程中,会在线段拐点处降低成型速度以保证轮廓精度,但会提高单位时间内送入熔池的金属质量,并在拐点处形成金属过度聚集。这种现象随着夹角的减小而越来越严重,如图6所示。通过实验发现,当直线夹角大于140°时,叠层现象明显改善。因此,以夹角为140°的小直线为起点,将轮廓数据分为直线部分和曲线部分。去除同一直线的相邻点、重复点和内部点后,使用NURBS曲线拟合曲线部分,减少电机启停次数,保证线速度恒定。

在这里插入图片描述

SINUMERIK 840D SL 的 BSPLINE 插补功能可以通过控制点和权重因子将离散坐标点平滑连接,并使用速度伺服确保成型过程中线速度恒定。 假设切片生成的轮廓坐标点为{Vk},k = 0, 1, . . . , n, 节点向量为 U = {u0, u1, . . . , um},任意坐标点 Vk 对应的节点为 uk。因此,可以基于 n 个坐标点构造 n+1 个线性方程组,如式(5)所示。其中控制点 Ci 为待确定的量, 并且节点值uk的取值范围属于[0, 1]。
在这里插入图片描述
增材制造主要用于制造传统方法无法加工或难以加工的零件。 其模型大多包含复杂的曲线和曲面,导致切片数据中C0连续尖锐点或大曲率过渡数据点的比例很高。 因此,在拟合之前先对坐标点进行分类,然后使用向心参数化方法对曲线进行参数化。


结论

使用python作为切片内核并行加载顶点数据。 电脑硬件配置如下:显卡为Intel®UHD Graphics 630,GPU显存为128Mb。 以δ为三角容差,输出11个不同大小的二进制STL模型Q,切片效率如图9所示。

在这里插入图片描述

GPU切片算法在整个测试过程中的效率明显高于Cura。 商业软件Magics的切片效率最高,稳定切片进程的CPU利用率保持在29.45%,但运行过程中会卡顿。 随着三角形块数的增加,Cura和Magics建立拓扑关系的时间会逐渐增加,这也是切片时间近似呈指数变化的原因之一。 GPU切片算法不需要建立拓扑关系,只需要遍历指定高度的体素即可。 随着网格数量的增加,并行计算导致GPU利用率逐渐提高,最高可达93%,最后一个模型切片只需要89.99s。