基于虚拟现实的3D打印体验系统设计与实现

2017-12-02 01:29李子健赵祖烨田诵权张楠
软件导刊 2017年11期
关键词:着色器线管打印机

李子健+赵祖烨+田诵权+张楠

摘要:目前,3D打印技术不断普及,但传统学习渠道具有一定局限性,且3D打印设备价格昂贵,现场操作也存在一定安全问题。针对上述不足,应用虚拟现实技术,开发了一个3D打印体验系统。该系统采用UG对设备建模,Blender对模型进行渲染,通过Unity3D三维引擎开发平台完成虚拟场景构建,并通过SteamVR实现虚拟现实装备HTC Vive与虚拟场景交互。经过虚拟3D打印模型测试,系统可稳定运行,提供了一个直观、安全、高效的3D打印体验环境。

关键词关键词:3D打印;虚拟现实;SteamVR;Unity3D;反向动力学

DOIDOI:10.11907/rjdk.172589

中图分类号:TP319

文献标识码:A文章编号文章编号:16727800(2017)011004403

0引言

3D打印技术是通过连续的物理层堆积,逐层增加材料生成三维实体的技术,又称为增材制造(Additive Manufacturing,简称AM)。作为一种综合性应用技术,3D打印综合了数字建模、机电控制、信息、材料科学等诸多前沿技术 [1]。随着技术的不断发展,许多学校开设了相关课程,但通过视频、图片、文字的传统教育方式,由于缺少实际对象,教学效果并不理想,而现场操作具有一定的危险性,且3D打印设备费用较高,更新和维护较为困难。

针对上述问题,利用集沉浸感、交互性和想象性于一体的虚拟现实技术,设计了基于Unity3d的虚拟现实3D打印体验系统。使用建模软件进行三维模型搭建,利用Unity3d构建出3D打印体验虚拟场景,运用计算机技术、多媒体技术以及HTC Vive虚拟现实硬件构建一个完整的3D打印体验架构,采用C#语言、.NET框架以及Unity3D平台对系统进行开发。该系统可为使用者提供一个直观、安全、高效的3D打印体验环境,激发学习兴趣,同时减少了设备成本、避免了设备安全隐患,具有较高的经济和安全性。

1虚拟3D打印系统技术框架

1.13D打印技术

3D打印技术属于快速成型技术中的一种,又称为增材制造技术。增材制造技术是根据三维CAD的设计数据,使用液体、粉末、丝、片、板、块等离散材料逐层叠加,制造出实物的数字化制造技术。与传统加工方式相比, 3D 打印技术将三维实体加工变为由点到线、由线到面、由面到体的离散堆积成形过程, 极大降低了制造复杂度[2]。

1.2虚拟现实技术

虚拟现实(Virtual Reality,简称VR)是以计算机技术为核心,结合相关科学技术,生成与一定范围真实环境在视、听、触感等方面高度近似的数字化环境,用户借助必要的装备与数字化环境中的对象进行交互作用、相互影响,产生亲临实境的感受和体验[3]。本系统通过Unity3D开发引擎并采用SteamVR插件,利用HTC Vive虚拟现实设备完成系统构建,丰富3D打印的体验场景,不需3D打印装备也可体验3D打印技术。

1.33D打印系统总体设计

如图1所示,系统总体设计结构分为4大部分:①虚拟现实交互设备:HTC Vive提供虚拟现实显示硬件并与Unity中所创建元素之间进行交互;②用户界面控制系统:对打印机进行参数设置及状态监控;③打印机运行控制系统:控制打印机的开机、调平、打印、冷却等基本操作;④模型分析计算系统:对需要打印的模型进行分析,对模型进行简单的底座支撑计算,并计算打印喷头的运动轨迹。系统通过HTC Vive虛拟现实装备进行交互,进入用户界面设置和控制,完成后进行模型打印,与此同时进行模型分析计算,确定每一层打印时打印喷头的运动轨迹,最后完成打印。

图1总体设计结构

2系统详细设计

2.1模型交互模块

交互模块是虚拟现实系统中一个最为重要的环节,是对虚拟现实系统场景的还原。系统场景中,打印机模型根据utilmaker的.stp文件,通过Free CAD软件将模型分块导出为.obj文件,使用Blender软件进行详细的属性设置,渲染得到.fbx文件。整个漫游场景为一个已有的实验室风格模型,如图2所示。其它模型如触控显示器等都通过UG绘制导出.stl后,通过Blender转换为.fbx文件。

为了提高用户体验,增强模型的真实性,在处理过程中对模型进行优化:对于用UG建模后的模型,由于表面缺少贴图,要通过Free CAD将模型的材质相同部分一起导出成.obj模型,再全部导入到Blender中,最后导入到Unity3D中进行更加详细的设置。如图3所示,将金属外壳部分的着色器更改为可以增加环境反射的Legacy Shaders/Reflective/Specular着色器,并将Reflection Cubemap设置为Cubemap,从而使金属表面反射出实验室环境等。

图2虚拟实验室图3模型

2.23D打印机运动模块

打印机运动分为打印机喷头、平台、打印线材3部分运动。

打印机喷头运动分为打印时运动和开始及结束时运动两种。前者则需要进行打印轨迹点保存,再让喷头跟随轨迹运动。后者运动为移向固定点,只需使用物体移动函数即可。平台运动分为打印开始、结束时的运动和打印过程中的运动。与喷头运动类似,前者只需要使用移动函数移动即可。后者则根据喷头完成一层打印后进行高度下降。打印线材运动则涉及到线材跟随喷头运动,为了增强模型的真实性,利用反向动力学(Inverse kinematics)使喷头和材料组合成关节式物体实现线材运动。

2.3模型分析计算模块

Unity3D中的材质通过着色器的控制对物体进行着色。着色器包括固定功能着色器、表面着色器及顶点及片段着色器。模型打印过程中应逐渐显示出来,这种效果需要着色时获取模型的顶点,只对处于一定高度的部分顶点和面进行着色,但表面着色器无法完成这项工作。本文编写一种顶点及片段着色器,相当于将模型进行分层渲染,结合C#脚本控制模型的显示。endprint

3关键技术

3.1柔体仿真与反向动力学

3D打印机在打印过程中消耗线材,线材放在机身后由一根线管牵出,线管跟随喷头的运动而进行变形。考虑到线管的柔性以提高仿真效果,使用模型骨骼和反向动力学。反向动力学是一种通过先确定子骨骼位置,然后反求推导出所在骨骼链上n级父骨骼位置,从而确定整条骨骼链的方法[4]。具体过程是:先确定一个自由端的骨骼位置,然后再反向推导出它的父骨骼角度和位置,以此类推,一直推算到固定端处的骨骼,即为由自由端带动固定端运动的方式。以人体为例,就是由手脚等自由端的运动带动肩部或身体运动。

本系统中,线管的固定端连接着打印机,自由端为连接喷头部分,自由端跟随喷头运动,又通过反向动力学带动剩余骨骼运动,从而达到模拟线管的变形形状。再通过Blender进行蒙皮操作,使骨骼与模型绑定,为骨骼增加外壳,并通过效果调整影响线管模型变形的权值分配,最终模型如图4所示,在Unity3d中的设置如图5所示。

3.2打印喷头轨迹设定方法

在模型的Meshfilter组件中可通过mesh.verticles属性获取模型的顶点,从而得到点集。通过遍历集合中的所有点进行筛选,将模型指定高度的顶点横纵坐标保存到指定数组中,根据扫描效率设定相应的扫描间距Δy,采用活性边表法[5],将获得的每一行扫描线的交点按照x坐标升序排列, 将每一行的扫描线数据根据y坐标升序排列, 由此形成扫描线交点表。根据y值快速获取该扫描线上所有交点的x坐标,将坐标数组保存至喷头运动轨迹点的类HeadMoveTrack中,打印机喷头就会根据扫描线的顺序进行移动。实例中的点移动一次,平台就会下降,进行下一层的运算判断。由于模型本身建模过程中的分层问题,当打印机设置精度大于模型本身的分层数时,会导致不存在满足此范围的顶点坐标。为避免该情况,本系统根据上下两层的坐标填补,当检测到实例中存储的点少于一定数量时,重复进行上一层或下一层运动。

3.3SteamVR插件使用方法

VR开发还需将SteamVR开发插件中的CameraRig、SteamVR、Status三个Prefab全部导入到scene中,这样才会进行VR设备识别。

CameraRig表示整个人的活动范围。其子物体有头盔,包括相机和耳机,还有左右手柄。直接将此预设导入后调整Transform组件中的Scale,使其达到人在场景中的合适比例。本系统在VR中使用从手柄发射出的激光进行操作,通过继承SteamVR的LaserPointer,并添加双手的LaserCubeCollider类来实现。

4VR环境测试

根据3D打印机运行顺序,对整个系统场景进行截图。从3D打印机静止状态→选择调好颜色的材料线圈→安装至3D打印机→正在进行打印→打印结束拿出打印模型花瓶,效果如图6所示。

图6虚拟3D打印运行效果

5结语

本文研究成果虽然是针对FDM(熔融沉积成型)3D打印机仿真打印,但也适用其它3D打印技术的虚拟打印系统开发。测试结果表明,基于Unity3D的3D打印体验系统运行流畅,为学习者提供了一个直观、安全、高效的体验环境。通过该平台,用户可以快速了解3D打印工作流程,加上真实的环境音效,可增强现场体验感,激发学习兴趣。同时,避免了现场实操设备损坏和安全隐患。

随着VR技术的不断发展,用户在使用虚拟现实设备时带来的体验度将会大大提升。由于这种VR模拟系统带来的用户体验是其它方式无法比拟的,所以,随着3D打印技术的不断普及,其它3D打印技术,如SLA(光固化立体造型)、SLS(选择性激光烧结)等也可利用本系统进行完善。

参考文献参考文献:

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

[2]史玉升,张李超,白宇,等. 3D打印技术的发展及其软件实现[J].中国科学:信息科学,2015(2):197203.

[3]龙钽.三维动画制作中角色装配技术的研究和实现[D].上海:上海交通大学,2010.

[4]赵沁平.虚拟现实综述[J].中国科学:信息科学,2009(1):246.

[5]ROGERS D F. Procedural elements for computer graphics[M]. New York: The McGrawHill Companies, 1998:98104.

[6]ROGERS D F. 计算机图形学的算法基础 [M].石教英,译.北京:机械工业出版社,2002:8597.

[7]张李超.快速成型软件及控制系统的研究[D].武汉:华中科技大学,2002.

[8]孙家广.计算机图形学[M].第3版.北京:清华大学出版社,1998:178180.

[9]Unity documentation[EB/OL].https://docs.unity3d.com/Script Reference.

[10]金璽曾.Unity手机游戏开发[M].北京:清华大学出版社,2013.

[11]张克发,赵兴,谢有龙.AR与VR开发实战[M].北京:清华大学出版社,2016:218235.

责任编辑(责任编辑:杜能钢)endprint

猜你喜欢
着色器线管打印机
市政工程施工中地下管线的保护问题分析
基于UE4 实时射线追踪技术的研究与探讨
装配式钢结构电气线管墙板与楼板预留连接精准定位施工工法研究
基于Unity Shader石油泄漏现象模拟的研究
基于IMx6的opengl图形着色器开发研究
另类3D打印机
打印机基板大型注塑模具设计
FDM型混色3D打印机的设计
复制粘贴打印机
自由变换 公路车线管再设计