李子健+趙祖燁+田誦權(quán)+張楠
摘要:目前,3D打印技術(shù)不斷普及,但傳統(tǒng)學(xué)習(xí)渠道具有一定局限性,且3D打印設(shè)備價(jià)格昂貴,現(xiàn)場操作也存在一定安全問題。針對(duì)上述不足,應(yīng)用虛擬現(xiàn)實(shí)技術(shù),開發(fā)了一個(gè)3D打印體驗(yàn)系統(tǒng)。該系統(tǒng)采用UG對(duì)設(shè)備建模,Blender對(duì)模型進(jìn)行渲染,通過Unity3D三維引擎開發(fā)平臺(tái)完成虛擬場景構(gòu)建,并通過SteamVR實(shí)現(xiàn)虛擬現(xiàn)實(shí)裝備HTC Vive與虛擬場景交互。經(jīng)過虛擬3D打印模型測試,系統(tǒng)可穩(wěn)定運(yùn)行,提供了一個(gè)直觀、安全、高效的3D打印體驗(yàn)環(huán)境。
關(guān)鍵詞關(guān)鍵詞:3D打?。惶摂M現(xiàn)實(shí);SteamVR;Unity3D;反向動(dòng)力學(xué)
DOIDOI:10.11907/rjdk.172589
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2017)011004403
0引言
3D打印技術(shù)是通過連續(xù)的物理層堆積,逐層增加材料生成三維實(shí)體的技術(shù),又稱為增材制造(Additive Manufacturing,簡稱AM)。作為一種綜合性應(yīng)用技術(shù),3D打印綜合了數(shù)字建模、機(jī)電控制、信息、材料科學(xué)等諸多前沿技術(shù) [1]。隨著技術(shù)的不斷發(fā)展,許多學(xué)校開設(shè)了相關(guān)課程,但通過視頻、圖片、文字的傳統(tǒng)教育方式,由于缺少實(shí)際對(duì)象,教學(xué)效果并不理想,而現(xiàn)場操作具有一定的危險(xiǎn)性,且3D打印設(shè)備費(fèi)用較高,更新和維護(hù)較為困難。
針對(duì)上述問題,利用集沉浸感、交互性和想象性于一體的虛擬現(xiàn)實(shí)技術(shù),設(shè)計(jì)了基于Unity3d的虛擬現(xiàn)實(shí)3D打印體驗(yàn)系統(tǒng)。使用建模軟件進(jìn)行三維模型搭建,利用Unity3d構(gòu)建出3D打印體驗(yàn)虛擬場景,運(yùn)用計(jì)算機(jī)技術(shù)、多媒體技術(shù)以及HTC Vive虛擬現(xiàn)實(shí)硬件構(gòu)建一個(gè)完整的3D打印體驗(yàn)架構(gòu),采用C#語言、.NET框架以及Unity3D平臺(tái)對(duì)系統(tǒng)進(jìn)行開發(fā)。該系統(tǒng)可為使用者提供一個(gè)直觀、安全、高效的3D打印體驗(yàn)環(huán)境,激發(fā)學(xué)習(xí)興趣,同時(shí)減少了設(shè)備成本、避免了設(shè)備安全隱患,具有較高的經(jīng)濟(jì)和安全性。
1虛擬3D打印系統(tǒng)技術(shù)框架
1.13D打印技術(shù)
3D打印技術(shù)屬于快速成型技術(shù)中的一種,又稱為增材制造技術(shù)。增材制造技術(shù)是根據(jù)三維CAD的設(shè)計(jì)數(shù)據(jù),使用液體、粉末、絲、片、板、塊等離散材料逐層疊加,制造出實(shí)物的數(shù)字化制造技術(shù)。與傳統(tǒng)加工方式相比, 3D 打印技術(shù)將三維實(shí)體加工變?yōu)橛牲c(diǎn)到線、由線到面、由面到體的離散堆積成形過程, 極大降低了制造復(fù)雜度[2]。
1.2虛擬現(xiàn)實(shí)技術(shù)
虛擬現(xiàn)實(shí)(Virtual Reality,簡稱VR)是以計(jì)算機(jī)技術(shù)為核心,結(jié)合相關(guān)科學(xué)技術(shù),生成與一定范圍真實(shí)環(huán)境在視、聽、觸感等方面高度近似的數(shù)字化環(huán)境,用戶借助必要的裝備與數(shù)字化環(huán)境中的對(duì)象進(jìn)行交互作用、相互影響,產(chǎn)生親臨實(shí)境的感受和體驗(yàn)[3]。本系統(tǒng)通過Unity3D開發(fā)引擎并采用SteamVR插件,利用HTC Vive虛擬現(xiàn)實(shí)設(shè)備完成系統(tǒng)構(gòu)建,豐富3D打印的體驗(yàn)場景,不需3D打印裝備也可體驗(yàn)3D打印技術(shù)。
1.33D打印系統(tǒng)總體設(shè)計(jì)
如圖1所示,系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)分為4大部分:①虛擬現(xiàn)實(shí)交互設(shè)備:HTC Vive提供虛擬現(xiàn)實(shí)顯示硬件并與Unity中所創(chuàng)建元素之間進(jìn)行交互;②用戶界面控制系統(tǒng):對(duì)打印機(jī)進(jìn)行參數(shù)設(shè)置及狀態(tài)監(jiān)控;③打印機(jī)運(yùn)行控制系統(tǒng):控制打印機(jī)的開機(jī)、調(diào)平、打印、冷卻等基本操作;④模型分析計(jì)算系統(tǒng):對(duì)需要打印的模型進(jìn)行分析,對(duì)模型進(jìn)行簡單的底座支撐計(jì)算,并計(jì)算打印噴頭的運(yùn)動(dòng)軌跡。系統(tǒng)通過HTC Vive虛擬現(xiàn)實(shí)裝備進(jìn)行交互,進(jìn)入用戶界面設(shè)置和控制,完成后進(jìn)行模型打印,與此同時(shí)進(jìn)行模型分析計(jì)算,確定每一層打印時(shí)打印噴頭的運(yùn)動(dòng)軌跡,最后完成打印。
圖1總體設(shè)計(jì)結(jié)構(gòu)
2系統(tǒng)詳細(xì)設(shè)計(jì)
2.1模型交互模塊
交互模塊是虛擬現(xiàn)實(shí)系統(tǒng)中一個(gè)最為重要的環(huán)節(jié),是對(duì)虛擬現(xiàn)實(shí)系統(tǒng)場景的還原。系統(tǒng)場景中,打印機(jī)模型根據(jù)utilmaker的.stp文件,通過Free CAD軟件將模型分塊導(dǎo)出為.obj文件,使用Blender軟件進(jìn)行詳細(xì)的屬性設(shè)置,渲染得到.fbx文件。整個(gè)漫游場景為一個(gè)已有的實(shí)驗(yàn)室風(fēng)格模型,如圖2所示。其它模型如觸控顯示器等都通過UG繪制導(dǎo)出.stl后,通過Blender轉(zhuǎn)換為.fbx文件。
為了提高用戶體驗(yàn),增強(qiáng)模型的真實(shí)性,在處理過程中對(duì)模型進(jìn)行優(yōu)化:對(duì)于用UG建模后的模型,由于表面缺少貼圖,要通過Free CAD將模型的材質(zhì)相同部分一起導(dǎo)出成.obj模型,再全部導(dǎo)入到Blender中,最后導(dǎo)入到Unity3D中進(jìn)行更加詳細(xì)的設(shè)置。如圖3所示,將金屬外殼部分的著色器更改為可以增加環(huán)境反射的Legacy Shaders/Reflective/Specular著色器,并將Reflection Cubemap設(shè)置為Cubemap,從而使金屬表面反射出實(shí)驗(yàn)室環(huán)境等。
圖2虛擬實(shí)驗(yàn)室圖3模型
2.23D打印機(jī)運(yùn)動(dòng)模塊
打印機(jī)運(yùn)動(dòng)分為打印機(jī)噴頭、平臺(tái)、打印線材3部分運(yùn)動(dòng)。
打印機(jī)噴頭運(yùn)動(dòng)分為打印時(shí)運(yùn)動(dòng)和開始及結(jié)束時(shí)運(yùn)動(dòng)兩種。前者則需要進(jìn)行打印軌跡點(diǎn)保存,再讓噴頭跟隨軌跡運(yùn)動(dòng)。后者運(yùn)動(dòng)為移向固定點(diǎn),只需使用物體移動(dòng)函數(shù)即可。平臺(tái)運(yùn)動(dòng)分為打印開始、結(jié)束時(shí)的運(yùn)動(dòng)和打印過程中的運(yùn)動(dòng)。與噴頭運(yùn)動(dòng)類似,前者只需要使用移動(dòng)函數(shù)移動(dòng)即可。后者則根據(jù)噴頭完成一層打印后進(jìn)行高度下降。打印線材運(yùn)動(dòng)則涉及到線材跟隨噴頭運(yùn)動(dòng),為了增強(qiáng)模型的真實(shí)性,利用反向動(dòng)力學(xué)(Inverse kinematics)使噴頭和材料組合成關(guān)節(jié)式物體實(shí)現(xiàn)線材運(yùn)動(dòng)。
2.3模型分析計(jì)算模塊
Unity3D中的材質(zhì)通過著色器的控制對(duì)物體進(jìn)行著色。著色器包括固定功能著色器、表面著色器及頂點(diǎn)及片段著色器。模型打印過程中應(yīng)逐漸顯示出來,這種效果需要著色時(shí)獲取模型的頂點(diǎn),只對(duì)處于一定高度的部分頂點(diǎn)和面進(jìn)行著色,但表面著色器無法完成這項(xiàng)工作。本文編寫一種頂點(diǎn)及片段著色器,相當(dāng)于將模型進(jìn)行分層渲染,結(jié)合C#腳本控制模型的顯示。endprint
3關(guān)鍵技術(shù)
3.1柔體仿真與反向動(dòng)力學(xué)
3D打印機(jī)在打印過程中消耗線材,線材放在機(jī)身后由一根線管牽出,線管跟隨噴頭的運(yùn)動(dòng)而進(jìn)行變形??紤]到線管的柔性以提高仿真效果,使用模型骨骼和反向動(dòng)力學(xué)。反向動(dòng)力學(xué)是一種通過先確定子骨骼位置,然后反求推導(dǎo)出所在骨骼鏈上n級(jí)父骨骼位置,從而確定整條骨骼鏈的方法[4]。具體過程是:先確定一個(gè)自由端的骨骼位置,然后再反向推導(dǎo)出它的父骨骼角度和位置,以此類推,一直推算到固定端處的骨骼,即為由自由端帶動(dòng)固定端運(yùn)動(dòng)的方式。以人體為例,就是由手腳等自由端的運(yùn)動(dòng)帶動(dòng)肩部或身體運(yùn)動(dòng)。
本系統(tǒng)中,線管的固定端連接著打印機(jī),自由端為連接噴頭部分,自由端跟隨噴頭運(yùn)動(dòng),又通過反向動(dòng)力學(xué)帶動(dòng)剩余骨骼運(yùn)動(dòng),從而達(dá)到模擬線管的變形形狀。再通過Blender進(jìn)行蒙皮操作,使骨骼與模型綁定,為骨骼增加外殼,并通過效果調(diào)整影響線管模型變形的權(quán)值分配,最終模型如圖4所示,在Unity3d中的設(shè)置如圖5所示。
3.2打印噴頭軌跡設(shè)定方法
在模型的Meshfilter組件中可通過mesh.verticles屬性獲取模型的頂點(diǎn),從而得到點(diǎn)集。通過遍歷集合中的所有點(diǎn)進(jìn)行篩選,將模型指定高度的頂點(diǎn)橫縱坐標(biāo)保存到指定數(shù)組中,根據(jù)掃描效率設(shè)定相應(yīng)的掃描間距Δy,采用活性邊表法[5],將獲得的每一行掃描線的交點(diǎn)按照x坐標(biāo)升序排列, 將每一行的掃描線數(shù)據(jù)根據(jù)y坐標(biāo)升序排列, 由此形成掃描線交點(diǎn)表。根據(jù)y值快速獲取該掃描線上所有交點(diǎn)的x坐標(biāo),將坐標(biāo)數(shù)組保存至噴頭運(yùn)動(dòng)軌跡點(diǎn)的類HeadMoveTrack中,打印機(jī)噴頭就會(huì)根據(jù)掃描線的順序進(jìn)行移動(dòng)。實(shí)例中的點(diǎn)移動(dòng)一次,平臺(tái)就會(huì)下降,進(jìn)行下一層的運(yùn)算判斷。由于模型本身建模過程中的分層問題,當(dāng)打印機(jī)設(shè)置精度大于模型本身的分層數(shù)時(shí),會(huì)導(dǎo)致不存在滿足此范圍的頂點(diǎn)坐標(biāo)。為避免該情況,本系統(tǒng)根據(jù)上下兩層的坐標(biāo)填補(bǔ),當(dāng)檢測到實(shí)例中存儲(chǔ)的點(diǎn)少于一定數(shù)量時(shí),重復(fù)進(jìn)行上一層或下一層運(yùn)動(dòng)。
3.3SteamVR插件使用方法
VR開發(fā)還需將SteamVR開發(fā)插件中的CameraRig、SteamVR、Status三個(gè)Prefab全部導(dǎo)入到scene中,這樣才會(huì)進(jìn)行VR設(shè)備識(shí)別。
CameraRig表示整個(gè)人的活動(dòng)范圍。其子物體有頭盔,包括相機(jī)和耳機(jī),還有左右手柄。直接將此預(yù)設(shè)導(dǎo)入后調(diào)整Transform組件中的Scale,使其達(dá)到人在場景中的合適比例。本系統(tǒng)在VR中使用從手柄發(fā)射出的激光進(jìn)行操作,通過繼承SteamVR的LaserPointer,并添加雙手的LaserCubeCollider類來實(shí)現(xiàn)。
4VR環(huán)境測試
根據(jù)3D打印機(jī)運(yùn)行順序,對(duì)整個(gè)系統(tǒng)場景進(jìn)行截圖。從3D打印機(jī)靜止?fàn)顟B(tài)→選擇調(diào)好顏色的材料線圈→安裝至3D打印機(jī)→正在進(jìn)行打印→打印結(jié)束拿出打印模型花瓶,效果如圖6所示。
圖6虛擬3D打印運(yùn)行效果
5結(jié)語
本文研究成果雖然是針對(duì)FDM(熔融沉積成型)3D打印機(jī)仿真打印,但也適用其它3D打印技術(shù)的虛擬打印系統(tǒng)開發(fā)。測試結(jié)果表明,基于Unity3D的3D打印體驗(yàn)系統(tǒng)運(yùn)行流暢,為學(xué)習(xí)者提供了一個(gè)直觀、安全、高效的體驗(yàn)環(huán)境。通過該平臺(tái),用戶可以快速了解3D打印工作流程,加上真實(shí)的環(huán)境音效,可增強(qiáng)現(xiàn)場體驗(yàn)感,激發(fā)學(xué)習(xí)興趣。同時(shí),避免了現(xiàn)場實(shí)操設(shè)備損壞和安全隱患。
隨著VR技術(shù)的不斷發(fā)展,用戶在使用虛擬現(xiàn)實(shí)設(shè)備時(shí)帶來的體驗(yàn)度將會(huì)大大提升。由于這種VR模擬系統(tǒng)帶來的用戶體驗(yàn)是其它方式無法比擬的,所以,隨著3D打印技術(shù)的不斷普及,其它3D打印技術(shù),如SLA(光固化立體造型)、SLS(選擇性激光燒結(jié))等也可利用本系統(tǒng)進(jìn)行完善。
參考文獻(xiàn)參考文獻(xiàn):
[1]王雪瑩.3D打印技術(shù)與產(chǎn)業(yè)的發(fā)展及前景分析[J].中國高新技術(shù)企業(yè),2012 (26):35.
[2]史玉升,張李超,白宇,等. 3D打印技術(shù)的發(fā)展及其軟件實(shí)現(xiàn)[J].中國科學(xué):信息科學(xué),2015(2):197203.
[3]龍鉭.三維動(dòng)畫制作中角色裝配技術(shù)的研究和實(shí)現(xiàn)[D].上海:上海交通大學(xué),2010.
[4]趙沁平.虛擬現(xiàn)實(shí)綜述[J].中國科學(xué):信息科學(xué),2009(1):246.
[5]ROGERS D F. Procedural elements for computer graphics[M]. New York: The McGrawHill Companies, 1998:98104.
[6]ROGERS D F. 計(jì)算機(jī)圖形學(xué)的算法基礎(chǔ) [M].石教英,譯.北京:機(jī)械工業(yè)出版社,2002:8597.
[7]張李超.快速成型軟件及控制系統(tǒng)的研究[D].武漢:華中科技大學(xué),2002.
[8]孫家廣.計(jì)算機(jī)圖形學(xué)[M].第3版.北京:清華大學(xué)出版社,1998:178180.
[9]Unity documentation[EB/OL].https://docs.unity3d.com/Script Reference.
[10]金璽曾.Unity手機(jī)游戲開發(fā)[M].北京:清華大學(xué)出版社,2013.
[11]張克發(fā),趙興,謝有龍.AR與VR開發(fā)實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2016:218235.
責(zé)任編輯(責(zé)任編輯:杜能鋼)endprint