APP下载

面向3D打印机的彩色三维模型成型技术

2017-08-08黄国胜江先志田芬芳

成组技术与生产现代化 2017年2期
关键词:面片代码成型

黄国胜,徐 欣,江先志,滕 军,田芬芳

(1.浙江理工大学 机械与自动控制学院,浙江 杭州 310018;2.浙江腾腾电气有限公司,浙江 温州 325000)

面向3D打印机的彩色三维模型成型技术

黄国胜1,徐 欣1,江先志1,滕 军2,田芬芳2

(1.浙江理工大学 机械与自动控制学院,浙江 杭州 310018;2.浙江腾腾电气有限公司,浙江 温州 325000)

针对3D打印技术打印速度慢、打印精度低、不能多色打印等缺陷,研究3D打印机的STL文件载入和读取、基于OpenGL的模型显示、彩色图片像素采集以及基于RGB颜色空间的数据处理算法等技术,以便将数据转化成相应的G代码发送给下位机.

图像;三维模型;像素;RGB;STL;G代码

3D 打印,又称三维打印,是一种快速成型技术,为用户提供了新的设计、创作和制作方法.它是通过逐层打印的方式来成型的,形象地说,3D 打印就是 2D 打印沿着高度方向逐层叠加,创造一个立体的几何图形.在计算机中输入数据,设计3D 模型后,计算机自动将 3D 模型的数据进行分层,像人们检查身体时做 CT 扫描一样,形成多个单层图像.3D 打印机根据这些分层图像数据,一层一层地将材料叠加上去,形成一个立体实物[1].

3D打印技术从狭义上来说属于增材成型技术.从成型工艺上看,3D打印机无论使用何种方法,其打印过程都基本相同.首先,通过计算机辅助设计软件创建三维虚拟模型,并将模型的格式转换成STL文件格式,然后通过上位机对STL文件进行后期处理,再连接3D打印机进行打印.

2010 年以后,3D 打印技术已经被应用于各个工业领域,如航空航天、生物医疗、个性化消费、注塑模具等[2].新兴增材制造技术也已经发展为更精确的技术领域,如金属零件增材制造、微光固化成型、高精密数字化成型、数字化材料 3D 打印等[3].

本研究的重点在于STL文件的后期处理,包括文件数据采集方法、基于图像映射的彩色三维模型成型、切片分层和多头G代码的生成.

1 三维模型格式文件载入

STL文件格式是一种用三角面片表达实体表面数据的文件格式.它是若干空间小三角面片的集合,每个三角面片用三角形的3个顶点和指向模型外部的法向量表示[4].根据数据存储方式的不同,STL 文件可分为ASCII码和二进制码两种存储方式[5].ASCII格式文件可以读取,便于测试,故选用其作为可视化的研究对象.其格式如下:

facet

normalxyz(三角面片法向量的3个分量值)

vertexxyz(三角面片第一个顶点坐标)

vertexxyz(三角面片第二个顶点坐标)

vertexxyz(三角面片第三个顶点坐标)

endloop

endfacet(完成一个三角面片定义)

一个facet和下一个endfacet之间的数据块为一个三角面片的几何信息,normal后面的3个值表示当前三角面片的法向量,接下来的3行为三角面片的3个顶点坐标,都以vertex开头[6].

本研究以STL格式文件为数据源,利用Visual Studio 2013开发环境(图1),基于C#系统库函数的ReadLine()方法逐行读取STL文件,通过字符串处理函数对3个法向量数据和3个顶点数据进行判断和分析,并将结果储存于数组中,同时以OpenGL(Open Graphics Library)作为三维图形接口,利用其强大的图形处理能力对三角面片进行逐个绘制,最后合并,形成完整的三维模型.

图1 开发环境截图

软件读取STL文件的步骤如下:①定义一个三角形T;②读取上述数据结构中的normal段法向量数据,存储到glNormals[]数组中,读取vertex段顶点数据,存储到glVertexs[]数组中;③循环判断文件是否读取完成;④读取结束.

STL文件格式简单,只能存储三维物体的几何信息,并不支持颜色信息.因此,下一步要做的是采集图片的颜色信息,将图片信息映射到三维模型上,然后生成相应的G代码,发送给下位机.

2 图像映射与彩色三维模型成型

STL文件并不存储颜色数据,为了将颜色信息映射到模型上,解决模型彩色显示的问题,需要采集图片的RGB颜色信息.RGB被称为三原色或显示屏模式,它属于发光配色,是根据颜色发光的原理来设计的[7].在 RGB 模式中,R 代表红光(Red),G 代表绿光(Green),B 代表蓝光(Blue),每种光的亮度取值为0~255.对这3种色彩的亮度值进行调配组合,可产生新的像素颜色,从而形成更多的色彩[8].

首先,使用Bitmap类方法绑定需要载入的图像格式文件bmp(图2).其关键代码为:

Bitmap bmp = new Bitmap(pictureFilePath);//绑定图像格式文件

定义Bitmap后,使用bmp.Width和bmp.Height分别获取图像的像素宽和像素高,使用bmp.GetPixel(x,y)获取像素点位置为(x,y)的颜色信息.

图2 载入的图像

然后,分析绑定载入的STL文件的顶点数据(即glVertexs[]数组数据),对x坐标和z坐标数据进行比较,获得模型中x坐标值和z坐标值的最大值和最小值,从最大值和最小值的绝对差得到模型宽ModelWidth和模型高ModelHeight.其关键代码为:

ModelWidth = Math.Abs(ModelxMax - ModelxMin);//计算STL模型宽

ModelHeight = Math.Abs(ModelzMax - ModelzMin);//计算STL模型高

求得模型宽和模型高后,对比图像像素宽bmp.Width和像素高bmp.Height,获取比例值,进而求得glVertexs[]数组数据在图像中相应的像素点位置(Position_Width,Position_Height),通过GetPixel函数获取该点的像素颜色信息.其关键代码为:

Position_Width=(Position_x-ModelxMin) *WidthMax/ModelWidth+xmin;

Position_Height=(zmax-(Position_z-ModelzMin)*HeightMax/ModelHeight;

returnColorToRgba32(bmp.GetPixel(Position_Width,Position_Height));

将计算出的对应像素点颜色数据存储到glColors[]数组中,再用OpenGL库绘制三角面片,同时加入对应的颜色数据.

图3所示为使用载入图像映射后三维模型成型的效果.

图3 三维模型成型的效果

3 切片分层与G代码生成

在彩色三维模型成型后,调用Slic3r软件(一款用于将STL文件转化成G代码的开源软件),将模型分层切片.切片时发现,在RGB模式下,三原色光每种均有256个亮度值,总共有256×256×256个,即16 777 216 个亮度值.然而,下位机中挤出头数只有8个,只有8种颜色可选择,限制了所用的颜色种类.本研究使用RGB颜色空间模型来处理颜色数据(图4)[9].

图4 RGB颜色空间模型

这里,使用的8个挤出头分别对应蓝、黑、绿、青、红、洋红、黄和白8种颜色.将模型的颜色与挤出头的颜色进行对比,选择颜色最接近的挤出头.其关键代码如下:

sumRGB[0] = Math.Pow(RGB.R-0,2)+〗Math.Pow(RGB.G-0,2)

+ Math.Pow(RGB.B-255,2);

for (inti= 0;i< 8;i++){

if (sumRGB[i] <= temp){

temp = sumRGB[i];

num =i;

}

}

在生成G代码时,根据所选的sumRGB[i]数组的i的大小,用T0~T7表示挤出头的选择,来控制下位机的运动.

图5和图6分别为切片分层及加入颜色后的显示效果.图7所示为软件生成的G代码.

图5 切片分层后的效果

图6 加入颜色后的分层效果

4 结束语

本研究分析并实现了3D模型的彩色化,将模型数据转化为3D打印机可读取的G代码,并且实现了整个过程的可视化操作.但目前其功能还稍有局限,比如颜色只能通过图片读取,而不能直接在表面编辑,着色实现的过程仍待改进.

[1] 王广春,赵国群.快速成型与快速模具制造技术及其应用[M].北京:机械工业出版社,2013.

[2] 王雪莹.3D打印技术与产业的发展及前景分析[J].中国高新技术企业,2012(26):3-5.

[3] 张建梅,赵 立,党惊知,等.快速成型技术的应用及发展方向[J].中北工学院学报,2002,23(4):301-305.

[4] 杨 光,刘伟军,王维田,等.STL格式文件拓扑重建及快速切片算法研究[J].现代制造工程,2009(10):32-35.

[5] 张贞贞,陈定方.基于VC的STL文件读取[J].湖北工业大学学报,2008,23(2):44-46,73.

[6] 耿 铁,任清海.基于OpenGL 的 STL 文件三维模型真实感图形可视化研究[J].制造业自动化,2011,33(16):121-124.

[7] 许宝卉.彩色CRT色彩特性及色彩空间转换方法的研究[D].西安:西安理工大学,2005.

[8] 巩亚萍,高 军.印刷品检测过程中的色彩空间转换研究[J].山东理工大学学报(自然科学版),2009,23(4):53-57.

[9] 杨振亚,王 勇,杨振东,等.RGB颜色空间的矢量—角度距离色差公式[J].计算机工程与应用,2010,46(6):154-156.

Colorful 3D Model Molding Technology for 3D Printer

HUANG Guo-sheng1,XU Xin1, JIANG Xian-zhi1,TENG Jun2, TIAN Fen-fang2

(1.School of Mechanical Engineering and Automation, Zhejiang Sci-Tech University,Hangzhou 310018, China; 2.Zhejiang Tengteng Electric Co.,Ltd, Wenzhou 325000,China)

3D printing technology which makes objects by layer-by-layer printing based on a digital model file. There are also many weaknesses and limitations, such as slow print speed, low print accuracy and lack of multi-color printing. Therefore, this paper focuses on solving the problem of the host computer of the color 3D printer, including the loading and reading of the STL file, the OpenGL-based model display, the color picture pixel acquisition, the RGB color space data processing algorithm and so on. And finally send to the data into the corresponding G code the next crew.

image; 3D model; pixel; RGB; STL; G code

2016-12-20

浙江省重大科技专项计划资助项目(2014C11SA310003);浙江理工大学校企合作资助项目(14020089-J)

黄国胜(1993-),男,浙江苍南人,硕士研究生,研究方向为机器视觉.

1006-3269(2017)02-0030-04

TP391

A

10.3969/j.issn.1006-3269.2017.02.007

猜你喜欢

面片代码成型
成型液压机技术改造
初次来压期间不同顶板对工作面片帮影响研究
创世代码
创世代码
创世代码
创世代码
三向接头注射成型模具设计
甜面片里的人生
快速成型技术在口腔修复中的应用
基于三角面片包围模型的数字矿山技术研究