何燕紅 孫麗娟 劉寶麗 劉海艷
【摘要】VR作為一種計(jì)算機(jī)仿真系統(tǒng),已經(jīng)開(kāi)始由單一向多元、由分立向融合方向演變,應(yīng)用產(chǎn)業(yè)也在不斷的擴(kuò)大。本文對(duì)利用Unity3D引擎實(shí)現(xiàn)VR交互的方法進(jìn)行了分析和探討,著重闡述了射線交互方法的實(shí)現(xiàn)過(guò)程。
【關(guān)鍵詞】Unity3D;VR;交互
1 VR介紹
1.1VR基本概念
VR(虛擬現(xiàn)實(shí))技術(shù)是一種能夠創(chuàng)造和體驗(yàn)虛擬世界的計(jì)算機(jī)模擬系統(tǒng)。它能夠允許使用者在虛擬空間中體驗(yàn)一個(gè)模擬人類(lèi)視覺(jué)、聽(tīng)覺(jué)觸覺(jué)等感官的虛擬場(chǎng)景;虛擬現(xiàn)實(shí)是對(duì)真實(shí)世界的模擬,一方面它能對(duì)現(xiàn)實(shí)環(huán)境作逼真的描述,另一方面還能使得人們?cè)谟^察虛擬環(huán)境的時(shí)候猶如身臨其境,可以與之進(jìn)行交互。
1.2VR技術(shù)的發(fā)展趨勢(shì)
目前,VR技術(shù)已經(jīng)廣泛應(yīng)用于城市規(guī)劃、室內(nèi)設(shè)計(jì)、工業(yè)仿真、古跡復(fù)原、橋梁道路設(shè)計(jì)、房地產(chǎn)銷(xiāo)售、旅游教學(xué)、水利電力、地質(zhì)災(zāi)害、教育培訓(xùn)等眾多領(lǐng)域,讓一些在現(xiàn)實(shí)條件中難以演練難以實(shí)現(xiàn)的事情,可以通過(guò)VR技術(shù)進(jìn)行實(shí)現(xiàn),為更多的行業(yè)提供更多的可能。
1.3VR技術(shù)的特征
(1)多感知性,是指視、力、觸、運(yùn)動(dòng)、味、嗅等感知系統(tǒng)。
(2)交互性,是指當(dāng)人處于虛擬世界時(shí),依然可以像在現(xiàn)實(shí)中一樣,通過(guò)觸碰、使用某些具體物品,感受到所用物品存在于人與物品之間的互動(dòng)信息。
(3)構(gòu)想性,指人處于虛擬世界,將所想的物品所做的事情展現(xiàn)在虛擬世界里,甚至在虛擬世界中還可以把在現(xiàn)實(shí)世界不可能存在的事和物都呈現(xiàn)出來(lái)。
2 VR交互設(shè)計(jì)要素
2.1VR的交互方式
在虛擬現(xiàn)實(shí)的情境中,交互的方式主要分為以下4種:視線交互、按鍵交互、射線交互與碰撞器交互。其中,視線交互僅需頭戴式顯示器即可實(shí)現(xiàn)交互,手柄按鍵交互需要判斷手柄按鍵是否按下以及按下的力度,手柄射線交互需要獲取手柄當(dāng)前的坐標(biāo)和旋轉(zhuǎn)角度再配合手柄按鍵來(lái)實(shí)現(xiàn)射線與物體的交互,手柄碰撞器交互則需要獲取手柄當(dāng)前的坐標(biāo)以及其附帶的碰撞器組件并判斷是否與物體進(jìn)行碰撞之后才能實(shí)現(xiàn)與物體的交互。
2.2VR用戶(hù)界面的操作方式
(1)使用準(zhǔn)星。在VR環(huán)境中,攝像頭的控制權(quán)限完全掌握在使用者手中,當(dāng)攝像機(jī)本身動(dòng)作與輸入有差異或使用者視線未處于頭戴式顯示設(shè)備的中央時(shí),會(huì)破壞使用者沉浸感,所以要保證十字形或者圓形的準(zhǔn)星放置使用者的正前方。進(jìn)行交互時(shí)將準(zhǔn)星懸停在可交互對(duì)象上,彈出提示信息以提示使用者對(duì)象可交互。
(2)使用恰當(dāng)?shù)囊曈X(jué)深度。和一般應(yīng)用程序使用的UI不同,VR的UI具有縱深屬性。因此,如果在VR中與UI的內(nèi)容過(guò)近的話,就無(wú)法看清UI的全貌,但是,如果UI太遠(yuǎn),用戶(hù)則無(wú)法看清UI中包含的內(nèi)容。同時(shí),文本的大小和UI元素的比例也會(huì)影響用戶(hù)體驗(yàn)。
(3)使用固定的速度。VR的變速運(yùn)動(dòng)對(duì)用戶(hù)體驗(yàn)有負(fù)面影響,就人體生理結(jié)構(gòu)看,視覺(jué)信息是通過(guò)眼睛獲取并反饋到前庭系統(tǒng)的。當(dāng)眼睛的感知與前提系統(tǒng)不一致時(shí),用戶(hù)會(huì)感到惡心或眩暈,這種不適在VR環(huán)境下的主要原因是眼睛感知到了速度的變化,而前庭系統(tǒng)卻沒(méi)有相應(yīng)的感覺(jué),從而導(dǎo)致不適,這和暈動(dòng)病的原理一致,所以盡可能避免在VR環(huán)境中使用變速運(yùn)動(dòng)。
3 VR交互功能的實(shí)現(xiàn)
因?yàn)樵诔R?jiàn)VR項(xiàng)目開(kāi)發(fā)中一般采用Google VR,借助Unity3D VR平臺(tái)實(shí)現(xiàn),使用與其配套的SDK和Google Cardboard進(jìn)行項(xiàng)目體驗(yàn),所以本文針對(duì)射線交互進(jìn)行研究。
3.1模擬頭部的轉(zhuǎn)動(dòng)
在Unity3D引擎中實(shí)現(xiàn)的VR的交互時(shí),可采用第一人稱(chēng),用相機(jī)模擬用戶(hù)的頭部,實(shí)現(xiàn)仿人類(lèi)視線和頭部轉(zhuǎn)動(dòng)。在實(shí)現(xiàn)時(shí),需要設(shè)置上限最大視角,根據(jù)鼠標(biāo)移動(dòng)的快慢,獲取相機(jī)左右旋轉(zhuǎn)的角度;根據(jù)鼠標(biāo)移動(dòng)的快慢,獲取相機(jī)上下旋轉(zhuǎn)的角度,并對(duì)角度進(jìn)行限制。功能實(shí)現(xiàn)部分代碼為:
float rotationX=transform.localEulerAngles.y+Input.GetAxis(“Mouse X”) * sensitivityX;
rotationY+=Input.GetAxis(“Mouse Y”)*sensitivityY;
rotationY=Mathf.Clamp(rotationY,minimumY,maximumY);
transform.localEulerAngles=new Vector3(-rotationY,rotationX,0);
this.transform.Translate(new Vector3(Input.GetAxis(“Horizontal”),0,Input.GetAxis(“Vertical”))*Time.deltaTime);
3.2視線交互
相機(jī)發(fā)射射線進(jìn)行交互,檢測(cè)到有交互對(duì)象,則去獲得它身上的功能腳本,獲取成功后開(kāi)始計(jì)時(shí),到達(dá)3秒,觸發(fā)功能。若用戶(hù)中途離開(kāi),則重新計(jì)時(shí)。準(zhǔn)星能夠吸附到對(duì)象,沒(méi)有交互對(duì)象時(shí),重置準(zhǔn)星的位置。功能實(shí)現(xiàn)部分代碼為:
Ray ray=new Ray(transform.position,transform.forward);
RaycastHit hit;
if(Physics.Raycast(ray,out hit,100)){
canvasPoint.transform.localScale=hit.distance*canvasOriginalScale*0.05f;
canvasPoint.transform.position=hit.point;
canvasPoint.transform.forward=hit.normal;
if(hit.transform.gameObject!=curInteractiveObj)
if(curInteractiveObj!=null){oldInteractiveObj=curInteractiveObj;
oldobjDoing=oldInteractiveObj.GetComponent();
if(oldobjDoing){
oldobjDoing.leave();
}}
curInteractiveObj=hit.transform.gameObject;
objDoing=curInteractiveObj.GetComponent();
if(objDoing){objDoing.hovered();
}}
else{counttime+=Time.deltaTime;
if(counttime reticleImage.fillAmount=counttime/gazeDurationTime; }... 4 結(jié)語(yǔ) 本研究闡述了射線交互的實(shí)現(xiàn)方法,用相機(jī)模擬用戶(hù)頭部發(fā)射射線進(jìn)行交互,檢測(cè)交互對(duì)象是否有觸發(fā)事件,并進(jìn)行事件交互。在使用準(zhǔn)星時(shí),需要立體渲染(制造視覺(jué)深度),并要保持恒定的速度。(通信作者:劉海艷) 參考文獻(xiàn): [1]周曉成,張煜鑫,冷榮亮.虛擬現(xiàn)實(shí)交互設(shè)計(jì)[M].化學(xué)工業(yè)出版社,2016. [2]張勝男,高如玉,高權(quán).基于全景圖的科普?qǐng)鲳^漫游系統(tǒng)設(shè)計(jì) [J].電子世界,2017(2):150-152. [3]誤雁波.著 Unity 3D平臺(tái)AR與VR開(kāi)發(fā)快速上手[M].清華大學(xué)出版社,2017.