王家騏,于海霞
(1.安徽工貿職業技術學院計算機信息工程系,安徽 淮南 232007;2.合肥職業技術學院信息工程與傳媒學院,合肥 230012)
隨著計算機硬軟件技術和網絡通信技術的高速發展,虛擬現實(Virtual Reality,VR)技術正在廣泛應用于多個生活和娛樂領域。VR 即是設計和實現一個仿真的虛擬三維世界,可向使用者提供視、聽、觸等多種感官仿真,為使用者提供身臨其境的感受和體驗。
三維全景漫游作為VR 的一個重要應用方向,其本質就是指通過交互技術瀏覽由全景圖像構建的三維全景空間里各個場景。三維全景漫游的特點是:三維,即是將二維平面圖像經過特定的方法和算法合成為三維場景,即可淋漓盡致地展現場景的立體效果,隨著技術的進步和提升虛擬出的場景將會與真實場景幾乎一模一樣;全方位,即在一個球體內表面或者立方體表面粘貼漫游的全部場景,實現360°范圍內全區域場景展示,使觀察到的場景信息更加豐富和全面;漫游,即是場景畫面可以通過人機交互操作實現上下、左右、前后和遠近等動作并能及時實現場景畫面的更換,通過人機交互可任意進行場景畫面的瀏覽和拖放,從而具備良好的人機交互性能。
三維全景漫游的實現通常會涉及到一個重要的關鍵技術,即三維場景的漫游交互實現。該技術可讓用戶通過必要的交互設備,以自然的方式在虛擬三維場景中漫游交互,使用戶能夠自由觀察和體驗三維虛擬環境,并在虛擬三維場景里進行空間切換瀏覽不同場景,讓用戶能夠完全沉浸在由計算機創造的虛擬環境中[1-2]。
應用虛擬交互可使用戶對三維全景場景中的物體對象實施相關操作,且能立即將物體對象的變化信息反饋給用戶,根據交互對象的不同,當前主要的虛擬交互實現技術可以分為直接交互、物理交互和虛擬控制交互3 種[3-9]。
直接交互技術,是應用手勢識別等交互技術將用戶在現實場景中的各類動作映射到虛擬的三維全景場景環境中,即在三維全景場景環境中會對用戶在現實場景中的操作動作做出直接響應。
物理交互技術,利用操縱桿、手柄及方向盤等的物理設備實現與虛擬三維全景場景環境的交互,此種方式的交互能通過設備的反饋信號(如震動、搖擺),從而增強用戶的沉浸感。
虛擬控制交互技術,利用一些虛擬控制來操作物體(如人物),具體來說就是通過定義一些如表示運動方向與動步長的虛擬按鈕,通過如視點交互來實現物體的操作。其缺點非常明顯:缺少觸覺反饋,致使沉浸感缺乏,且交互困難。
虛擬交互的目的就是在三維全景場景里模擬對現實世界的物體進行各種操作,如搬運物體、四方行走、仰視俯視等,并能夠得到及時的信息反饋。應用虛擬交互,在適合的硬件設備支持下,實現用戶與三維全景漫游場景間的交互操作,且可以更好地提高用戶在三維全景場景漫游時的強烈臨場感和多觸覺感知。
在三維全景場景漫游過程中對物體對象的拾取、移動、旋轉和縮放,是虛擬交互最基本的具體實現方式。其中對象拾取操作即是在場景里選中某場景元素,是整個虛擬交互的基礎,是所有交互中不可缺少的環節,因為只有在對象拾取后才能實施其余的移動、旋轉和縮放3 種交互。平移旋轉操作是實現虛擬三維全景場景中實體對象的位置變化。旋轉操作是實現虛擬三維全景場景中實體對象的方向變化??s放操作是通過改變場景對象的大小從而實現虛擬場景對象間的協調比例關系的變更[10-12]。
射線拾取算法是在三維全景場景中實現實體對象拾取的一種常用算法,其基本工作原理是:當用戶鼠標等輸入設備觸發計算機屏幕某個點位時會被自動獲取當前屏幕的點位坐標,應用坐標轉化的方式將該點位的屏幕坐標轉化為視口坐標,并添加該點的深度值,經過逆運算得到該屏幕點的三維空間坐標;再用該視點位置作為起點,做射線,計算此射線是否與三維全景場景中的實體對象相交,若有相交交點,則該對象被拾取,若無交點,則該對象未被拾取。
具體的實現步驟如下。
1)獲取屏幕上的點,將該點的坐標進行轉化得到該點對應的視口坐標。實現坐標轉化的部分關鍵代碼如圖1 所示。

圖1 坐標轉化的部分關鍵代碼
2)發射一條從視點坐標開始的射線。
3)將該射線與視點矩陣相乘,并對結果進行轉置,成為轉置矩陣。變換后,射線將與虛擬三維全景場景在同一坐標系中。
4)判斷該射線與虛擬三維全景場景中的實體對象相交情況,被穿過的實體對象模型就是二維屏幕上被拾取的實體對象。
5)實現拾取操作的關鍵代碼如圖2 所示。

圖2 實現拾取操作的關鍵代碼
在虛擬三維全景場景中對一個實體對象做移動、縮放和旋轉的操作是通過在二維變換基礎上增加Z軸組成的幾何變換來實現的,其通過4*4 的矩陣來實現幾何變換運算。在虛擬三維全景場景中,實體對象移動變換的基本工作原理是在實體對象三維坐標方向做移動距離三維變換向量的幾何變換運算;縮放變換的基本工作原理是通過放縮因子進行幾何變換運算來實現;旋轉變換的基本工作原理是通過在給定軸方向和旋轉角度建立起的一個總旋轉矩陣。
2.2.1 移動變換
設實體對象位置為(x,y,z),對實體對象做移動變換,設在x,y,z3 個方向軸上的平移量分別為Tx,Ty和Tz,設計算結果為(x1,y1,z1),則可以按照圖3 所示的公式計算。

圖3 移動變換公式
實現移動變換的關鍵代碼如圖4 所示。

圖4 實現移動變換的關鍵代碼
2.2.2 縮放變換
設實體對象的縮放點位置為(xi,yi,zi),則縮放變換的計算公式如圖5 所示。

圖5 縮放變換公式
實現縮放變換的關鍵代碼如圖6 所示。

圖6 實現縮放變換的關鍵代碼
2.2.3 旋轉變換
設實體對象在右手坐標下,若給定的P點坐標為(x,y,z)=(rcos?,rsin?,z),則在將該點沿著Z軸旋轉α角度后,得到的旋轉變換公式計算如圖7 所示。

圖7 Z 軸旋轉變換公式
沿著Y軸旋轉變換公式計算如圖8 所示。

圖8 Y 軸旋轉變換公式
沿著X軸旋轉變換公式計算如圖9 所示。

圖9 X 軸旋轉變換公式
實現旋轉變換的關鍵代碼如圖10 所示。
虛擬交互的目的就是在三維全景場景里模擬對現實世界的物體進行各種操作。本文主要介紹了在三維全景場景中實現虛擬交互的3 種技術方式,分別是直接交互、物理交互和虛擬控制,并概要地介紹其基本工作原理。接著著重介紹虛擬交互最基本的拾取、移動、旋轉和縮放4 種具體實現方式,分別闡述了實現此4種操作的幾何變換過程及在程序設計中實現相關功能的關鍵代碼。
實現虛擬交互的方法和設備是隨著技術的持續發展而不斷變革的,這些技術包括但不僅限于眼球追蹤技術、動作捕捉技術、肌電模擬技術、觸覺反饋技術、語音交互技術、方向追蹤技術、光學跟蹤技術、數據手套技術、傳感器技術及腦電波控制等技術,這些先進技術的發展將會使虛擬交互產生無限可能。