二、 相關文獻與研究
2.1 頭部偵測(Head detection)
要在二維的螢幕上模擬出三維空間的效果,電腦必須追蹤使用者的頭部位置,
在 Johnny Lee 的實驗中[7],發展出使用 Nintendo Wii 的控制桿(wii remote)
和紅外線發射器(sensor bar)來對使用者定位的系統。利用控制桿當作 IR camera,
用以偵測使用者位置;另將紅外線發射器安裝在自製的眼鏡上,因為此紅外線發 射器的兩端皆會發出紅外線訊號,因此藉由計算訊號兩端點相對於 IR camera 的 距離,可準確計算出頭部與螢幕的相對深度,即可發展出各種虛擬實境的應用。
近年來陸續開發出即時的影像處理函式庫。Laurence Nigay 與 Jérémie Francone 就利用了 OpenCV(Open Computer Vision),在 iOS 作業系統上使用手 機本身的 webcam,準確且即時的抓出頭部位置並調整螢幕內容[6],此臉部追蹤
由於其體感偵測的技術出自同一家公司 PrimeSense,Xtion 以及 Kinect 機器和性 能是非常類似的。本研究即是使用 ASUS Xtion Pro Live 來實作。
2.2 視野調整
在互動式的 3D 顯示中,影響真實感的最重要的關鍵就在於整個場景會因應 觀察者位置的相對關係,對場景做出最合適的改變,讓使用者可以很直覺的控制 畫面,這對於封閉式的空間尤其重要。以圖學的角度來說,就是要適當的去設定 透視投影矩陣(perspective projection matrix)。
在一些應用上,會將 2D 的螢幕模擬出 3D 的空間,就好像螢幕後面存在一個 真實空間。在 OpenGL、DirectX 中的透視投影,皆是假設使用者就站在螢幕的正 前方,視線垂直螢幕以及直視著螢幕正中央:
圖表 1 初始化視野
相機的位置會根據使用者的位移而有所改變。但如果沒有作調整,使用者的 視線始終都是向前看且垂直螢幕的,這導致只要使用者移動,視野就會掉出空間 外。如下圖所示,有一半的視野是落在空間外的。
圖表 2 移動後的視野
但以直觀角度思考,無論使用者如何移動,視線都應該鎖定在螢幕的正中央。
所以無論使用者如何位移,都會對視線作校正,讓視線恆保持在螢幕正中央,以 增加真實感。
5
圖表 3 修正視野
其中一種校正方式是以「相似三角形」來實作。先設定一個「視點」(look at point),它位在虛擬空間最末端的位置,讓相機對準它。虛擬空間的深度 h,以及 使用者距離螢幕的垂直距離 l 是已知的。當使用者產生位移 d 時,根據相似三角 形公式ℎ𝑙 =𝑑𝑥,x 為視點的位移量,可得到x =𝑑×ℎ𝑙 ,以此來改變視點位置,讓使用 者的視線恆通過螢幕正中間。
圖表 4 相似三角形概念
此種修正方式簡單易懂,不過缺點是視野還是可能會落到空間之外。而 Robert
Kooima 中所介紹建立透視矩陣的方法[5],稱為 off-axis perspective,另一個名稱 是 head-coupled display,是根據每個畫面使用者頭部的位置去調整投影矩陣。傳 統的透視投影都是對稱的視角,但 off-axis perspective 投影方法所建立的投影矩陣,
不一定是對稱的,它會根據使用者調整偏移位置(offset position)以及視野(field of view),如下圖所示:
圖表 5 視圖比較
(a) 在正前方觀看 (b) 標準投影矩陣,從右側觀看 (c) 離軸投影,從右側觀看
如果畫面中有一個封閉式的空間(例如 box),則我們會希望在互動的過程中,
視野永遠保持在空間內,而且此空間是從螢幕延伸出去的,螢幕就像是這個空間 的開口處,而透過 off-axis perspective 方法確實能夠達成。以下是示意圖:
圖表 6 離軸透視結果示意圖
7