《VR入門系列教程》之13 相機與立體渲染

2022-08-09 02:39:12 字數 1408 閱讀 1771

相機、透檢視、視口、投影

渲染好的場景都需要乙個可以供使用者檢視的檢視,我們通常在3d場景中用相機來提供這種需求。相機相對場景有位置和方向,就像我們生活中的相機一樣,它也提供透檢視檢視方式,這種方式可以有近大遠小的效果。相機最終會將三維的場景渲染成一幅幅二維的,我們就可以通過它的視口進行觀察。

相機處理計算時主要涉及到兩個矩陣,第乙個是線性變換矩陣(之前章節我們稱為轉換矩陣),它負責定義場景物體的位置和朝向,第二個是投影矩陣,它負責將三維場景物體投影到二維視口中。當然具體的細節需要太多數學理論,所以unity3d都將這些已經封裝好了,我們開發人員只需要簡單的「瞄準、發射」。

圖3-5中描述的是相機核心概念視口和投影,在圖中左下角那只大眼睛就代表我們的相機所處的位置,紅色的x軸代表相機的朝向,兩個藍色的方塊就是被觀察的物體,綠色和紅色的矩形分別代表近切面和遠切面(兩個切面之間的物體才可以被看見,而這之間的區域我們稱為可視平截椎),近切面就是我們的視口,投影在視口上的影象就是我們真正看見的影象。

圖3-5

相機非常強大,它可以讓觀察者非常真實地觀察乙個三維場景,此外,它還為動畫場景提供了強大的支援,通過移動相機就可以像拍電影一樣建立乙個動態的敘事的場景,當然,對於vr來說需要我們不能隨意移動相機,如果要移動相機我們需要多方面考量,最好做到讓使用者完全控制相機,這樣使用者會有一種身臨其境的感覺。

立體渲染

在虛擬實境中,三維影象渲染是乙個大問題,然而現在又碰到了如何處理相機這個難題,相機本身就需要處理變換矩陣和投影矩陣,可惡的是,vr中我們還需要處理兩次(每只眼睛處理一次)。不過境況並沒有那麼糟糕,我們有幾種處理相機的方法,下面來介紹乙個最簡單的方法:

建立乙個主相機:應用程式控制唯一乙個主相機,所有的邏輯動畫等等都只針對主相機,這樣,我們在處理相機與其他物體互動的時候就變得簡單統一,此外需要注意主相機不參與真正的渲染。主相機還有乙個好處,就是可以在雙立體檢視和傳統單一檢視之間切換。

用兩個相機渲染:除了主相機,vr程式需要外加兩個相機,用來真正處理渲染。這兩個相機需要與主相機的位置和朝向保持一致,只是有一點不同,就是它們分別要向左向右偏移一點點,用來模擬我們的瞳距。

渲染至兩個視口:vr應用分別建立的左右眼的渲染相機,它們的視口寬度都是螢幕寬度的一半,高度都為螢幕高度。每個相機處理圖形的時候都用了特殊的投影矩陣,這個投影矩陣可以處理反畸變問題(oculus sdk中提供了這個演算法)。

至此,我們已經簡單的了解了vr的影象處理過程,這裡講的非常簡單,如果要深入那麼每乙個點都可以用一整本書來介紹。隨著你的程式變得越來越龐大,你需要處理大量的底層問題,對於這些問題最好交個遊戲引擎來做,當然,你要是非常nb,你可以自己寫乙個引擎,但是如果你跟我一樣希望集中精力做應用層的事情,那麼最好還是使用乙個現成的引擎。目前市面上有許多很好的引擎,其中包括下節要介紹的unity3d遊戲引擎。

《VR入門系列教程》之8 GearVR

高階移動虛擬實境裝置 三星gearvr oculus rift也許是虛擬實境頭顯的典範,但是它還是存在許多問題。首先,它需要基於乙個具有強大圖形計算能力的計算機,而使用一般的筆記本 蘋果air 舊款台式電腦就不會有很好的效果 畫面的幀率上不去,而且還容易眩暈 第二,rift需要用資料線連線到電腦上,...

《VR入門系列教程》之9 谷歌紙盒

谷歌紙盒 基於智慧型手機的廉價vr眼鏡 如果用汽車來做模擬,oculus rift和gearvr就是特斯拉和蘭博基尼,它們物美但是價不廉。要是主機效能不好,那麼幾百美元的oculus眼鏡就是乙個雞肋。gearvr的體驗效果非常出色,但是同樣 很貴,只有那些狂熱粉和前期開發者才會購買。希望以後這種高階...

越南疫情加劇 iPhone 13相機模組供應緊張

鳳凰網科技訊北京時間9月30日訊息,日經新聞 刊文稱,蘋果在越南採購的相機模組 遭到破壞,相機模組被應用在4個iphone 13版本中,這意味著蘋果對相機模組的需求將大幅增加,而 商交付則面臨不小困難。其他零部程式設計客棧件也供不應求,蘋果被迫將原本用於ipad的晶元用來生產iphone 13。儲存...