孔偉晶 王鴻偉 王榮海
摘 要:為了改善Pro/E等軟件進行零件裝配不夠直觀,以及僅面向單個產品的虛擬裝配系統花費成本高且適用性低的問題,本文將虛擬裝配技術用于工業產品設計與制造的過程,實現了產品裝配過程可視化,具有即導即用的特點,縮短了產品設計周期。使用Unity引擎,以及HTC Vive頭盔式顯示器,進行模型的組裝與拆卸系統的設計與研究,提出了多零件模型在虛擬環境中定位與復位的實現方法,初步實現虛擬裝配過程。實驗結果表明:模型導入即可使用,并可在虛擬環境下進行基本組裝與拆卸操作。
關鍵詞:虛擬現實;Unity;HTC Vive;虛擬裝配
中圖分類號:TP391.9 文獻標識碼:A
1 引言(Introduction)
傳統的計算機輔助工具,以及仿真軟件雖然可以為設計者提供模擬裝配操作,但是也具有場景不夠直觀的弊端,使得實際生產的產品與模擬裝配的產品之間存在差異,影響產品投入使用。
在傳統的產品設計過程中要進行模擬裝配操作,而這個過程主要是根據以往的經驗,以及模型大小比例實現。由于開發者的理論知識有限,而且建模之后的模型零件的裝配操作更注重零件之間的裝配約束關系而忽略了裝配順序,偏離實際裝配過程。這就決定了無法在模擬裝配過程中解決所有的問題,在產品實際投入市場之前,還需要多次進行實際產品生產,經過測試解決虛擬與現實之間的差異。整個產品設計的維護在開發周期中耗時大,需要進行一次又一次的設計更新來解決新發現的問題,如此便會造成時間消耗大、投入大,不利于產品更新換代頻繁的新時代下企業的需求[1,2]。
虛擬裝配技術的出現為盡早在設計階段發現問題與解決問題提供了可能,在真實感上比傳統計算機軟件效果好,但是僅面向單個產品的虛擬裝配系統花費成本高且適用性低,針對此問題,本系統設計了面向大眾的虛擬裝配系統,具有即導即用的特點[3]。
2 模型虛擬裝配系統設計與實現(Design and
implementation of model virtual assembly system)
對VR場景預先進行結構設計,幫助體驗者了解整體結構,也有助于開發者在整體開發過程中對整體結構有一定的把握,有助于開發者對界面功能與樣式的設計。本系統共分為三個場景,主場景為main menu,子場景為拆卸場景和組裝場景。主場景模擬展廳效果,通過對模型進行簡單操作了解模型結構。然后在拆卸場景進行虛擬拆卸操作,在組裝場景進行虛擬組裝操作。用戶通過控制手柄點擊主場景main menu的拆卸或者組裝按鈕進入拆卸或組裝場景[4]。
2.1 主場景功能設計
2.1.1 主場景主要功能
啟動Unity模型自動旋轉(模擬展廳效果)[5,6]。
①按動手柄Trigger鍵點擊按鍵可對模型進行模型移位、放大、縮小、復位操作。
②拖動滑塊位置改變模型旋轉的速度。
③拉動左右兩邊邊框可滑動文字進行閱讀。左邊為模型位置信息、大小信息、旋轉信息,一旦移動模型數據就刷新,右邊為“魔釘”簡介。
④點擊組裝、拆卸按鈕可跳轉場景。
⑤場景啟動自動找到特定名字模型自加組件并將模型定位到場景中心位置。
2.1.2 自加組件功能
主場景主要是模擬展廳的效果,可以給用戶帶來互動體驗,提升新鮮感,同時展示完整模型的效果,為后續組裝做準備。為給用戶提供方便,減輕每次改變模型時需要手動添加組件的麻煩,經過代碼控制可實現在場景啟動時自動尋找指定名字的模型然后檢測是否添加組件,一旦檢測到沒有添加,就自動加上相應的組件。用戶只需要在導入模型時將模型名字改為固定的名字即可。主場景可實現自動添加MeshRenderer、碰撞體BoxCollider、剛體Rigidbody、抓取Draggable。只有組件添加之后才可以實現模型在展臺上旋轉不會掉落,通過手柄進行抓取的功能。
2.1.3 場景轉換功能
中間Canvas主要是進行場景轉換,提供用戶從主場景轉換到組裝、拆卸場景的渠道,其次,還提供了模型放大、縮小的按鈕。Canvas下提供一個可控制模型旋轉速度的滑塊,用戶可調節到適合觀看的旋轉速度。為了界面的美觀度,用多個image進行疊加,添加精靈格式的圖片,改善頁面顯示效果。
場景轉換功能是通過按鈕連接場景轉換代碼實現的。當檢測到手柄點擊了按鈕,就立即執行所連接的函數的操作指令。用戶通過手柄Trigger鍵點擊實現頁面跳轉。
模型放大、縮小功能和頁面跳轉功能都是通過按鈕連接相應代碼實現的。
2.2 拆卸場景功能設計
2.2.1 拆卸場景主要功能
①按動手柄Trigger鍵點擊按鍵可對模型進行模型零件移位、放大、縮小、復位操作。
②點擊可跳轉到主場景。
③通過拖動零件的方式實現模型拆卸,可近距離觀看。
④用戶在操作過程中隨時可保存,reset之后為上次點擊保存的模型位置。
⑤場景啟動自動找到特定名字模型自加組件并將模型定位到場景中心位置,并顯示模型位置信息、大小信息、旋轉信息,一旦移動模型數據就刷新。
拆卸過程如圖1所示。
2.2.2 多零件復位功能
本場景主要是提供用戶對模型的零件進行拆解,更加深入了解模型的內部構造,考慮到用戶在進行對模型進行位置調節的時候會進行誤操作,將當前用戶認為適合觀看的位置可進行實時保存便成為急需解決的問題。針對這個問題,提供了多零件可復位功能。用戶可點擊保存按鈕對當前模型的各個零件進行位置、大小、旋轉角度的保存,當用戶點擊reset按鈕時,會檢測當前是否點擊了保存按鈕,如果未點擊保存(countsave=0)按鈕,則調用reset1函數給當前模型各零件初始啟動時參數,若檢測到已經點擊保存,則更新用戶上次點擊保存按鈕時保存的參數值。
在對模型復位之前要對當前各零件位置信息進行保存,首先要在start函數內保存各零件位置初始值,其次,要實時監測當前是否點擊了保存按鈕,若點擊保存按鈕,則立即保存當前位置。由于模型位置信息并不是簡單的一元數組,而是由x、y、z三元數據共同控制模型位置,通過定義一個三元向量存儲模型各個零件的位置(用Vector3)。由于unity中模型旋轉角度信息由四元數共同控制,通過定義一個四元數組存儲各零件的旋轉角度信息(Quaternion)。運用List數組的優點是存儲數據可按需動態增加。所以要根據countsave次數找到上次保存的零件信息的初始保存位置,根據對應數據進行模型復位。即listi=i+(countsave-1)*modelcount。
2.2.3 多零件模型位置顯示功能
為了用戶與設計者便于得到模型所在位置信息,提供了模型位置信息在用戶VR界面可顯示的功能。位置信息包括模型位置信息、大小信息、旋轉信息,一旦移動模型數據就刷新數據,保證用戶可以實時地得到模型信息,為模型移位操作,以及了解模型復位、定位原理提供了方便。信息可通過右邊滑塊滑動,在信息較多的情況更加適用。由于模型數據隨時需要刷新,所以整個多零件模型位置顯示代碼都必須在Update函數里面,保證刷新的實時性[7]。
2.3 組裝場景功能設計
2.3.1 組裝場景主要功能
①按動手柄Trigger鍵點擊按鍵可對模型進行模型零件移位、放大、縮小、復位、保存操作。
②點擊可跳轉到主場景。
④通過拖動零件實現模型組裝,可近距離觀看。
⑤切換到此場景零件自動定位。
⑥用戶在操作過程中隨時可保存,reset之后為剛才保存的模型位置。
⑥場景顯示模型位置信息、大小信息、旋轉信息,一旦移動模型數據就刷新。
組裝過程如圖2所示。
2.3.2 多零件自定位
由于組裝場景需要排列待組裝的零件,所以提供了組裝場景啟動之后模型各個零件會自定位的功能。組裝場景和拆卸場景最大的區別就是自定位。拆卸場景只需要將整體零件定位即可,而組裝場景要多零件定位使其有空隙整齊的擺放,便于用戶進行選取與抓取操作。
用戶在導入模型的時候就要首先做好模型零件導入手動改名操作,將每一個零件的名字按照數字0、1、2、3、4、5、6改成順序改名,并將整個模型名改成“model”,Unity便可以根據名字尋找到制定的零件獲取其位置信息并根據程序指令進行定位。
首先,將名為“0”的零件進行定位,直接制定一個固定的位置,作為本場景中其他零件定位的一個參照物,為了零件擺放的美觀度與整齊度,“0”所在位置大致在整個場景的中心點。然后名字所表示數字為偶數的零件依次排列在中間零件的右邊,名字所表示數字為奇數的零件依次排列在中間零件的左邊。對下一個零件名為“1”的模型進行定位時,因為都是在第一排,所以y、z軸的數據不需要改變,只需要將x軸位置減去“0”的x軸大小的一半再減去“1”自己本身的x軸大小的一半,以上為兩個模型中心點之間的最短距離,為了更好分隔兩個零件,在以上的基礎上再減去0.1,為相鄰的兩個零件之間的固定間隔,即:
fx_kk-size[i].x/2*scale[i].x-size[i-1].x/2*scale[i-1].x-0.1f (1)
本式中scale[i].x是考慮到用戶在組裝過程中可能會進行放大縮小操作,與相應的大小倍數相乘即為此零件x軸的實際距離,即:
零件的實際大小=零件的尺寸*零件的縮放 (2)
根據此規律一直將零件排列下去。
第一排在排列過程中會一直進行是否超出展臺大小的測試,如果超出,此時就開始進行第二排定位。為了場景的真實性,當檢測到第一排排列好之后,就對展臺進行放大操作,保證整個場景的美觀度。
對第二排進行定位,與第一排相似,首先對中間位置的零件進行定位,然后第二排的各個零件才能以中間零件位置作為參照按照程序依次定位下去。首先要考慮兩排之間的距離問題,中心位置與第一排相比不變的是x、y軸的數據,變化的是z軸數據,為了美觀,每一排零件的z軸位置都是一致的,第二排也不例外,但是由于第一排零件大小不固定,這就預示著不能采用根據上一排零件的z軸大小去確定第二排的z軸位置,為此,在第一排零件進行定位的同時,就在尋找一個最大的z軸值maxsize,第二排中間z軸位置根據得到的maxsize值來進行定位就可以保證兩排零件之間沒有重合,加上0.1作為零件間隔增加排列整齊性,即:
model0.transform.position.z+0.1f+size[i].z/2*scale[i].z+maxsize/2 (3)
第二排同樣是通過偶數名零件排在中間零件右邊,奇數名零件排在中間零件左邊進行依次定位。
零件定位原理如圖3所示。
本場景目前只提供兩排模型的定位,一是因為零件太精致小巧會不便于抓取,造成使用的不方便,二是因為模型放置太多于展廳會很凌亂,對視覺造成障礙。在對零件進行第二排排列的時候同樣會進行是否超出展臺的檢測,如果超出,此時會輸出報錯信息,提醒用戶將模型縮小后再重新進行定位操作。
模擬兩排自定位效果如圖4與圖5所示。
2.4 實際功能與應用
本系統利用虛擬裝配技術,使用Unity引擎,以及HTC Vive頭盔式顯示器進行設計與研究。可以實現用戶與自己導入的模型進行虛擬組裝、拆卸交互操作,交互過程具有更多的自由性,而且改變了傳統在軟件進行的裝配操作,帶來更具有真實感的VR體驗。
首先,可以在工業新產品設計過程中及時糾錯。通過在VR觀看,以及虛擬組裝操作在投入制造之前檢查出設計、制造中可能出現的問題,及時采取必要的措施,提高設計成功率。還能更方便的根據市場的需求進行設計的更新,縮短產品開發周期,增強產品的競爭力,更快的適應市場。并且由于整個場景是虛擬的,只需要提供三維模型,不用進行實際生產,消耗的資源相對較少,為企業降低成本。
其次,虛擬裝配也可用于高校教育,帶來與傳統教學模式不同的交互式、可見性的VR體驗,提升學生學習的熱情,帶來更加直觀的學習體驗,學生可以進行多次組裝操作練習熟練度,免去了實際組裝完成后還需將零件拆除才能進行下一次組裝的麻煩。虛擬裝配對于新時代VR深入教育事業有深遠的意義。
3 結論(Conclusion)
虛擬現實給人們帶來更加方便化、沉浸式的體驗,VR可用于工業產品的設計與裝配操作過程,本系統采用虛擬裝配技術,可以實現用戶與自己導入的模型進行虛擬組裝、拆卸交互操作,設計了模型可在虛擬展廳展示的功能,實現了Unity啟動模型自加組件,零件自定位,以及零件組裝過程中實時復位操作,具有即導即用的特點,應用面廣,成本低。新產品設計者可以更快速、直觀的發現設計錯誤。但是,本系統因為是通過手柄進行操作,靈敏度不及手指,零件抓取之后進行位置調整時不好控制,在交互方面需要進一步完善。再次,系統設計中碰撞的設計不合理,模型容易穿出展臺,以及模型中心點不確定造成的自定位偏差問題都需要進一步解決。
雖然VR設備在硬件上尚有不足,由于其方便性、沉浸式、真實性的體驗契合了用戶的需求,VR逐漸成為全球新一代信息技術的焦點。在VR基礎上的虛擬裝配技術作為新興行業其發展過程不會是一帆風順,必然是曲折向前的,當硬件設備趨近于成熟時,虛擬裝配技術在工業與教育領域的應用將帶來新的變革。
參考文獻(References)
[1] Zhang Hui.Head-mounted display-based intuitive virtual reality training system for the mining industry[J].International Journal of Mining Science and Technology,2017,27(04):717-722.
[2] Zun-rong Wang,Ping Wang,Liang Xing,et al.Leap Motion-based virtual reality training for improving motor functional recovery of upper limbs and neural reorganization in subacute stroke patients[J].Neural Regeneration Research,2017,12(11):1823-1831.
[3] LIU Zhenyu,TAN Jianrong,DUAN Guifang,et al.Force Feedback Coupling with Dynamics for Physical Simulation of Product Assembly and Operation Performance[J].Chinese Journal of Mechanical Engineering,2015,28(01):164-172.
[4] 褚晶瑩.基于UNITY3D技術的VR展臺的設計與實現[D].吉林大學,2016:22-30.
[5] 肖灑.VR技術在展示設計中的應用[D].山東工藝美術學院,2016:25-35.
[6] Jun Liu,Lin Xuan Zhang,Bing Cui.Real-Time Semi-Physical Simulation of Industry Design System Based on Virtual Reality Technology[J].Applied Mechanics and Materials,2014,607:413-416.
[7] 倪萌.基于Unity3D的汽車發動機虛擬裝配訓練考評系統的設計與實現[D].北京工業大學,2014:1-4.
作者簡介:
孔偉晶(1996-),女,本科生.研究領域:虛擬現實.
王鴻偉(1980-),男,碩士,講師.研究領域:虛擬現實,數據挖掘,電子商務.本文通訊作者.
王榮海(1972-),男,碩士,副教授.研究領域:移動互聯網,虛擬現實,軟件工程.