王家騏,于海霞
(1.安徽工貿(mào)職業(yè)技術(shù)學(xué)院計算機信息工程系,安徽 淮南 232007;2.合肥職業(yè)技術(shù)學(xué)院信息工程與傳媒學(xué)院,合肥 230012)
隨著計算機硬軟件技術(shù)和網(wǎng)絡(luò)通信技術(shù)的高速發(fā)展,虛擬現(xiàn)實(Virtual Reality,VR)技術(shù)正在廣泛應(yīng)用于多個生活和娛樂領(lǐng)域。VR 即是設(shè)計和實現(xiàn)一個仿真的虛擬三維世界,可向使用者提供視、聽、觸等多種感官仿真,為使用者提供身臨其境的感受和體驗。
三維全景漫游作為VR 的一個重要應(yīng)用方向,其本質(zhì)就是指通過交互技術(shù)瀏覽由全景圖像構(gòu)建的三維全景空間里各個場景。三維全景漫游的特點是:三維,即是將二維平面圖像經(jīng)過特定的方法和算法合成為三維場景,即可淋漓盡致地展現(xiàn)場景的立體效果,隨著技術(shù)的進(jìn)步和提升虛擬出的場景將會與真實場景幾乎一模一樣;全方位,即在一個球體內(nèi)表面或者立方體表面粘貼漫游的全部場景,實現(xiàn)360°范圍內(nèi)全區(qū)域場景展示,使觀察到的場景信息更加豐富和全面;漫游,即是場景畫面可以通過人機交互操作實現(xiàn)上下、左右、前后和遠(yuǎn)近等動作并能及時實現(xiàn)場景畫面的更換,通過人機交互可任意進(jìn)行場景畫面的瀏覽和拖放,從而具備良好的人機交互性能。
三維全景漫游的實現(xiàn)通常會涉及到一個重要的關(guān)鍵技術(shù),即三維場景的漫游交互實現(xiàn)。該技術(shù)可讓用戶通過必要的交互設(shè)備,以自然的方式在虛擬三維場景中漫游交互,使用戶能夠自由觀察和體驗三維虛擬環(huán)境,并在虛擬三維場景里進(jìn)行空間切換瀏覽不同場景,讓用戶能夠完全沉浸在由計算機創(chuàng)造的虛擬環(huán)境中[1-2]。
應(yīng)用虛擬交互可使用戶對三維全景場景中的物體對象實施相關(guān)操作,且能立即將物體對象的變化信息反饋給用戶,根據(jù)交互對象的不同,當(dāng)前主要的虛擬交互實現(xiàn)技術(shù)可以分為直接交互、物理交互和虛擬控制交互3 種[3-9]。
直接交互技術(shù),是應(yīng)用手勢識別等交互技術(shù)將用戶在現(xiàn)實場景中的各類動作映射到虛擬的三維全景場景環(huán)境中,即在三維全景場景環(huán)境中會對用戶在現(xiàn)實場景中的操作動作做出直接響應(yīng)。
物理交互技術(shù),利用操縱桿、手柄及方向盤等的物理設(shè)備實現(xiàn)與虛擬三維全景場景環(huán)境的交互,此種方式的交互能通過設(shè)備的反饋信號(如震動、搖擺),從而增強用戶的沉浸感。
虛擬控制交互技術(shù),利用一些虛擬控制來操作物體(如人物),具體來說就是通過定義一些如表示運動方向與動步長的虛擬按鈕,通過如視點交互來實現(xiàn)物體的操作。其缺點非常明顯:缺少觸覺反饋,致使沉浸感缺乏,且交互困難。
虛擬交互的目的就是在三維全景場景里模擬對現(xiàn)實世界的物體進(jìn)行各種操作,如搬運物體、四方行走、仰視俯視等,并能夠得到及時的信息反饋。應(yīng)用虛擬交互,在適合的硬件設(shè)備支持下,實現(xiàn)用戶與三維全景漫游場景間的交互操作,且可以更好地提高用戶在三維全景場景漫游時的強烈臨場感和多觸覺感知。
在三維全景場景漫游過程中對物體對象的拾取、移動、旋轉(zhuǎn)和縮放,是虛擬交互最基本的具體實現(xiàn)方式。其中對象拾取操作即是在場景里選中某場景元素,是整個虛擬交互的基礎(chǔ),是所有交互中不可缺少的環(huán)節(jié),因為只有在對象拾取后才能實施其余的移動、旋轉(zhuǎn)和縮放3 種交互。平移旋轉(zhuǎn)操作是實現(xiàn)虛擬三維全景場景中實體對象的位置變化。旋轉(zhuǎn)操作是實現(xiàn)虛擬三維全景場景中實體對象的方向變化??s放操作是通過改變場景對象的大小從而實現(xiàn)虛擬場景對象間的協(xié)調(diào)比例關(guān)系的變更[10-12]。
射線拾取算法是在三維全景場景中實現(xiàn)實體對象拾取的一種常用算法,其基本工作原理是:當(dāng)用戶鼠標(biāo)等輸入設(shè)備觸發(fā)計算機屏幕某個點位時會被自動獲取當(dāng)前屏幕的點位坐標(biāo),應(yīng)用坐標(biāo)轉(zhuǎn)化的方式將該點位的屏幕坐標(biāo)轉(zhuǎn)化為視口坐標(biāo),并添加該點的深度值,經(jīng)過逆運算得到該屏幕點的三維空間坐標(biāo);再用該視點位置作為起點,做射線,計算此射線是否與三維全景場景中的實體對象相交,若有相交交點,則該對象被拾取,若無交點,則該對象未被拾取。
具體的實現(xiàn)步驟如下。
1)獲取屏幕上的點,將該點的坐標(biāo)進(jìn)行轉(zhuǎn)化得到該點對應(yīng)的視口坐標(biāo)。實現(xiàn)坐標(biāo)轉(zhuǎn)化的部分關(guān)鍵代碼如圖1 所示。
圖1 坐標(biāo)轉(zhuǎn)化的部分關(guān)鍵代碼
2)發(fā)射一條從視點坐標(biāo)開始的射線。
3)將該射線與視點矩陣相乘,并對結(jié)果進(jìn)行轉(zhuǎn)置,成為轉(zhuǎn)置矩陣。變換后,射線將與虛擬三維全景場景在同一坐標(biāo)系中。
4)判斷該射線與虛擬三維全景場景中的實體對象相交情況,被穿過的實體對象模型就是二維屏幕上被拾取的實體對象。
5)實現(xiàn)拾取操作的關(guān)鍵代碼如圖2 所示。
圖2 實現(xiàn)拾取操作的關(guān)鍵代碼
在虛擬三維全景場景中對一個實體對象做移動、縮放和旋轉(zhuǎn)的操作是通過在二維變換基礎(chǔ)上增加Z軸組成的幾何變換來實現(xiàn)的,其通過4*4 的矩陣來實現(xiàn)幾何變換運算。在虛擬三維全景場景中,實體對象移動變換的基本工作原理是在實體對象三維坐標(biāo)方向做移動距離三維變換向量的幾何變換運算;縮放變換的基本工作原理是通過放縮因子進(jìn)行幾何變換運算來實現(xiàn);旋轉(zhuǎn)變換的基本工作原理是通過在給定軸方向和旋轉(zhuǎn)角度建立起的一個總旋轉(zhuǎn)矩陣。
2.2.1 移動變換
設(shè)實體對象位置為(x,y,z),對實體對象做移動變換,設(shè)在x,y,z3 個方向軸上的平移量分別為Tx,Ty和Tz,設(shè)計算結(jié)果為(x1,y1,z1),則可以按照圖3 所示的公式計算。
圖3 移動變換公式
實現(xiàn)移動變換的關(guān)鍵代碼如圖4 所示。
圖4 實現(xiàn)移動變換的關(guān)鍵代碼
2.2.2 縮放變換
設(shè)實體對象的縮放點位置為(xi,yi,zi),則縮放變換的計算公式如圖5 所示。
圖5 縮放變換公式
實現(xiàn)縮放變換的關(guān)鍵代碼如圖6 所示。
圖6 實現(xiàn)縮放變換的關(guān)鍵代碼
2.2.3 旋轉(zhuǎn)變換
設(shè)實體對象在右手坐標(biāo)下,若給定的P點坐標(biāo)為(x,y,z)=(rcos?,rsin?,z),則在將該點沿著Z軸旋轉(zhuǎn)α角度后,得到的旋轉(zhuǎn)變換公式計算如圖7 所示。
圖7 Z 軸旋轉(zhuǎn)變換公式
沿著Y軸旋轉(zhuǎn)變換公式計算如圖8 所示。
圖8 Y 軸旋轉(zhuǎn)變換公式
沿著X軸旋轉(zhuǎn)變換公式計算如圖9 所示。
圖9 X 軸旋轉(zhuǎn)變換公式
實現(xiàn)旋轉(zhuǎn)變換的關(guān)鍵代碼如圖10 所示。
虛擬交互的目的就是在三維全景場景里模擬對現(xiàn)實世界的物體進(jìn)行各種操作。本文主要介紹了在三維全景場景中實現(xiàn)虛擬交互的3 種技術(shù)方式,分別是直接交互、物理交互和虛擬控制,并概要地介紹其基本工作原理。接著著重介紹虛擬交互最基本的拾取、移動、旋轉(zhuǎn)和縮放4 種具體實現(xiàn)方式,分別闡述了實現(xiàn)此4種操作的幾何變換過程及在程序設(shè)計中實現(xiàn)相關(guān)功能的關(guān)鍵代碼。
實現(xiàn)虛擬交互的方法和設(shè)備是隨著技術(shù)的持續(xù)發(fā)展而不斷變革的,這些技術(shù)包括但不僅限于眼球追蹤技術(shù)、動作捕捉技術(shù)、肌電模擬技術(shù)、觸覺反饋技術(shù)、語音交互技術(shù)、方向追蹤技術(shù)、光學(xué)跟蹤技術(shù)、數(shù)據(jù)手套技術(shù)、傳感器技術(shù)及腦電波控制等技術(shù),這些先進(jìn)技術(shù)的發(fā)展將會使虛擬交互產(chǎn)生無限可能。