? 最近播放中文版在线观看免费,男人J桶进男人屁股过程,日本所以av女优名字
聯(lián)系我們

給我們留言

聯(lián)系我們

地址:福建省晉江市青陽街道洪山路國(guó)際工業(yè)設(shè)計(jì)園納金網(wǎng)

郵箱:info@narkii.com

電話:0595-82682267

(周一到周五, 周六周日休息)

當(dāng)前位置:主頁 > 3D教程 > 圖文教程

深度分析VR頭顯分辨率:渲染、失真與校正

來源: 52vr | 責(zé)任編輯:傳說的落葉 | 發(fā)布時(shí)間: 2019-04-24 08:26 | 瀏覽量:
    我曾撰寫過一篇關(guān)于當(dāng)前頭顯顯示器光學(xué)屬性的長(zhǎng)文(那個(gè)時(shí)候的“當(dāng)前”)、一篇關(guān)于寬視場(chǎng)頭顯投影與扭曲的文章、以及一篇關(guān)于測(cè)量頭顯顯示器有效分辨率的文章,但從未涉足過真正的顯示器分辨率。而現(xiàn)在正是時(shí)候。
 
      當(dāng)然,一個(gè)簡(jiǎn)短的答案取決于頭顯的型號(hào)。但如果你恰巧擁有 HTC Vive,不妨看看圖1和圖2中的數(shù)據(jù)(其他頭顯類似,但實(shí)際數(shù)字不同)。這些數(shù)字顯示了顯示分辨率,單位為像素/度(pixels/°),以及通過我的Vive頭顯右邊透鏡中心的兩條線(分別為水平和垂直)。紅色,綠色和藍(lán)色曲線分別代表紅色,綠色和藍(lán)色基本色的分辨率,但這一次不是由我本人測(cè)量所得,而是通過分析工廠對(duì)每個(gè)頭顯進(jìn)行測(cè)量后所得的并存儲(chǔ)在固件中的顯示器校準(zhǔn)數(shù)據(jù)。
 

[VR知識(shí)] 深度分析VR頭顯分辨率:渲染、失真與校正

圖一

 

[VR知識(shí)] 深度分析VR頭顯分辨率:渲染、失真與校正

圖二

      在這一點(diǎn)上,你可能會(huì)認(rèn)為上述圖表十分奇怪。對(duì)于這一點(diǎn),建議閱讀以下這個(gè)冗長(zhǎng)的答案。在開始闡釋之前,我要先給你一個(gè)數(shù)字:在我的Vive的右邊透鏡中心(像素是492602),綠色通道的分辨率為11.42像素/度,包含水平方向和垂直方向。如果你希望引起一個(gè)分辨率數(shù)字,這是我會(huì)選擇的數(shù)字,因?yàn)楫?dāng)你看向正前方或遠(yuǎn)處時(shí),這就是你得到的數(shù)字。然而,圖1和圖2清楚表明了一個(gè)數(shù)字無法解釋完整的故事。
 
      下面,我們將開始詳細(xì)解釋這個(gè)冗長(zhǎng)的答案。
 
為什么上文的分辨率圖表會(huì)如此怪異呢?我們都十分清楚不同顯示器的分辨率都不盡相同,我們同樣明白三個(gè)基本色的分辨率同樣不同。但圖中的鋸齒是什么意思呢?要理解這一點(diǎn),我們首先需要仔細(xì)研究現(xiàn)代VR頭顯是如何把3D環(huán)境渲染成一對(duì)2D圖片,然后又是如何將其映射至左邊和右邊顯示器。
 
使得當(dāng)今頭顯成為可能的主要?jiǎng)?chuàng)新之一是,廠商排除了復(fù)雜的,笨重的和昂貴的光學(xué)元件,并在軟件中校正由簡(jiǎn)單,輕便和廉價(jià)單透鏡帶來的缺陷,亦即幾何失真和色差。這種校正是通過在標(biāo)準(zhǔn)3D渲染管道末端添加額外的處理步驟來完成?,F(xiàn)代VR頭顯不是直接把3D環(huán)境渲染到顯示器,而是通過標(biāo)準(zhǔn)的(扭曲的)透視投影將3D環(huán)境渲染為中間圖像,然后使用能夠抵消由透鏡(感知近眼屏幕的必須品)引起的失真的非線性校正函數(shù),以此來把中間圖像翹曲至實(shí)際顯示器上。
 
第1步:對(duì)中間直線式圖像進(jìn)行渲染
 
詳細(xì)來說,第一個(gè)渲染步驟如下。每個(gè)VR頭顯已經(jīng)在固件中存儲(chǔ)了渲染適當(dāng)3D環(huán)境視圖所需的各眼投影參數(shù)(水平和垂直視場(chǎng)),以及中間圖像的推薦像素大?。╒ive為1512×1680)。對(duì)于我的Vive的右眼,視場(chǎng)參數(shù)如下:左(left) = -1.24627,右(right) = 1.39228,下(bottom) = -1.46862,上(top) = 1.46388。這些數(shù)值位于所謂的“切線空間(tangent space)”之中,以兼容3D圖形庫。轉(zhuǎn)換為角度,它們就會(huì)變成這樣:左(left) = 51.257度,右(right) = 54.312度,下(bottom) = 55.749度,上(top) = 55.662度。它們?yōu)槭裁床皇菍?duì)稱的呢?左右值不同是為了將每只眼睛的視場(chǎng)“偏斜”至外部,從而以立體重疊為代價(jià)來提供更多的周邊視覺。由于制造公差的不同,上下值有所不同。所有這些值都是在工廠單獨(dú)測(cè)量所得。
 
在這一點(diǎn)上,你可能會(huì)試圖簡(jiǎn)單地將水平和垂直視場(chǎng)相加,并得到總數(shù)105.569度×111.411度(左右:51.257+54.312;上下:55.749+55.662),但這是過于輕率的做法。這個(gè)矩形是頭顯實(shí)際視場(chǎng)的上限值,但不一定是實(shí)際尺寸,因?yàn)椴皇撬兄虚g圖像的像素都呈現(xiàn)在實(shí)際顯示器之上,而且并非所有像素都對(duì)用戶可見。
 
我們不妨設(shè)想一下不存在透鏡,并且直接顯示中間圖像的情況。以像素/度為單位的分辨率是多少呢?將總像素?cái)?shù)除以總視場(chǎng)可能看起來是相當(dāng)可行,這將產(chǎn)生水平分辨率為14.322像素/度,垂直分辨率為15.079像素/度。但這是錯(cuò)誤的做法。問題是,由于圖像在概念上為平面,所以整個(gè)圖像的分辨率將不會(huì)均勻。下面請(qǐng)參考圖3:兩個(gè)相同大小的像素,一個(gè)直接位于眼睛前方,一個(gè)位于側(cè)面,涵蓋兩個(gè)不同的角度α1和α2。

[VR知識(shí)] 深度分析VR頭顯分辨率:渲染、失真與校正

圖3
一般來說,如果圖像的一個(gè)軸是N像素長(zhǎng),并且覆蓋從x0到x1的切線空間視場(chǎng),則像素n(其中n介于0和N-1之間)覆蓋的角度范圍是α1-α0,其中α0=tan-1(n⋅(x1-x0)/N+x0) 和α1=tan-1((n+1)⋅(x1-x0)/N+x0),得出的分辨率為1/(α1-α0)。記住這一點(diǎn),用微分進(jìn)行繪圖將更加容易。
 
根據(jù)前面的段落,將像素索引與角度相關(guān)的函數(shù)為α(n)=tan-1((n+0.5)⋅(x1-x0)/N+x0),其中0.5與n相加以計(jì)算像素中心角。對(duì)于α(n)=((x1-x0)/N)/(1+((n+0.5)⋅(x1-x0)/N+x0)2)的總導(dǎo)數(shù),tan-1(x)的導(dǎo)數(shù)可以合宜地設(shè)為1/(1+x2)。反相這一點(diǎn)并且從弧度轉(zhuǎn)換為角度,我們可以得出(π/180)/(d/dn α(n))像素/度的像素位置n的分辨率。插入從我的Vive接收到的值,我們可以繪制圖4中的函數(shù)結(jié)果(因?yàn)闆]有透鏡,因此沒有色差,三原色的分辨率曲線合并為一):

[VR知識(shí)] 深度分析VR頭顯分辨率:渲染、失真與校正

圖4
我們可以從圖表中得出大量的信息。首先,平面中間圖像不適合VR渲染,因?yàn)榉直媛试谥行暮瓦吘壷g增加了2.5到3倍,這意味著不成比例的大量渲染像素被分配到外圍,而它們?cè)谀抢锊皇鞘钟杏谩1M管平面上投影為3D圖形所固有,但沒有人規(guī)定3D仿射空間(affine space)上的平面必須是平的。在3D投影空間中使用平坦平面會(huì)產(chǎn)生很好的渲染技巧,但這不是本文的話題。
 
不過,圖4中的曲線是否令你想起什么呢?我們?cè)O(shè)想一下將圖4垂直縮放3.5倍,然后取出剪刀,將其切成31個(gè)相同大小的垂直條狀。接下來,我們通過增加從中心往四面的量來向下移位這些條狀?,F(xiàn)在將這幅畫面與圖1進(jìn)行比較。是否看到任何相似之處呢?前方劇透:這正是下一個(gè)渲染步驟中會(huì)發(fā)生的事情。
 
第2步:透鏡失真和色差的非線性校正
 
成功校正透鏡失真的秘訣是:在校準(zhǔn)步驟中測(cè)量失真情況。理想情況下是在工廠中對(duì)每個(gè)頭顯進(jìn)行相關(guān)處理。確切的校準(zhǔn)步可能有所不同,但一個(gè)選項(xiàng)是利用校準(zhǔn)的相機(jī)來捕捉顯示在頭顯顯示器上的已知校準(zhǔn)圖像將如何呈現(xiàn)給用戶。
 
這里的要點(diǎn)是:創(chuàng)建一種可信的虛擬現(xiàn)實(shí)幻覺。如果虛擬對(duì)象位于虛擬用戶的特定方向,則虛擬對(duì)象需要呈現(xiàn)在與真實(shí)用戶相同的方向。換句話說:對(duì)于頭顯顯示器的每一個(gè)像素,我們需要知道像素呈現(xiàn)給頭顯用戶的確切方向。最容易表達(dá)這一方向的方法是利用水平和垂直切線空間參數(shù)。
 
現(xiàn)在,如果校準(zhǔn)為我們提供了每個(gè)顯示像素的切線空間方向映射,我們?cè)阡秩具^程中又該如何為任意像素指定顏色呢?幸運(yùn)的是,我們已經(jīng)擁有了一個(gè)用于表示切線空間中的虛擬3D環(huán)境的圖像:在步驟1生成的中間圖像。這為透鏡失真校正提供了一個(gè)簡(jiǎn)單的步驟:對(duì)于每個(gè)顯示像素,在校準(zhǔn)映射中查找切線空間坐標(biāo),然后在中間圖像復(fù)制具有相同切線空間坐標(biāo)的像素。由于中間圖像的直線式結(jié)構(gòu),最后一部分的查找其實(shí)相當(dāng)簡(jiǎn)單。
 
更幸運(yùn)的是:相同的步驟可以校正色差。我們無需為每個(gè)顯示像素儲(chǔ)存一個(gè)切線空間坐標(biāo),我們只需儲(chǔ)存三個(gè):為紅,綠,藍(lán)顏色組件各儲(chǔ)存一個(gè)。因?yàn)槿N顏色在相同透鏡下的衍射程度不同,因此它們對(duì)于同一像素的切線空間坐標(biāo)將有所不同。
 
這非常好,但剩下的問題是如何表示校準(zhǔn)映射。原則上,校準(zhǔn)映射是一個(gè)1080×1200像素的圖像(對(duì)Vive來說),每個(gè)像素有六個(gè)組件:三種顏色各一個(gè)切線空間(x,y)。由于技術(shù)原因,表示這樣的映射在渲染性能方面效率不高。更好的方法是(這也是Vive和所有其他OpenVR頭顯所使用的方法),將映射簡(jiǎn)化為NxM相同大小(在顯示空間中)矩形的“畸變網(wǎng)格”,每個(gè)顏色的切線空間坐標(biāo)僅存儲(chǔ)在那些矩形的邊角,并在每個(gè)矩形的邊角值之間進(jìn)行插值。這樣做更好,因?yàn)樗浅>o湊(N和M可以很小),而且性能很好(因?yàn)楝F(xiàn)代顯卡非常擅于繪圖,以及在矩形中插值)。圖5顯示了我的Vive的右屏幕綠色通道失真網(wǎng)格,包括顯示空間和切線空間。對(duì)于后一種情況,失真網(wǎng)格都疊加在中間圖像的矩形邊界上。

[VR知識(shí)] 深度分析VR頭顯分辨率:渲染、失真與校正

圖5
圖5告訴了我們一些有趣的事情。最重要的是,這表明Vive的透鏡會(huì)導(dǎo)致相當(dāng)多的枕形失真??拷哥R中心的網(wǎng)格被壓縮,而周圍的網(wǎng)格被拉伸。這實(shí)現(xiàn)了把更多實(shí)際顯示像素分配給重要的中央注視點(diǎn)區(qū)域,并且把更少顯示像素分配給周邊視覺的預(yù)期效果。換句話說,透鏡遠(yuǎn)遠(yuǎn)消除了圖4所示的糟糕分辨率分布。證據(jù)是中心位置的最終顯示分辨率高于周邊,如圖1和圖2所示。
 
通過在切線空間中拉伸網(wǎng)格單元可以平衡分辨率。一個(gè)小單元會(huì)為實(shí)際顯示的固定尺寸區(qū)域分配少量中間圖像像素,從而增加局部分辨率;而拉伸單元會(huì)把更多像素填充至相同的固定尺寸區(qū)域,從而降低局部分辨率。這解釋了圖1和圖2中倒置分辨率分布,但尚未出現(xiàn)鋸齒的現(xiàn)象。
 
結(jié)果表明,問題的解釋十分簡(jiǎn)單:利用線性插值,顯卡使用來自矩形邊角的值進(jìn)行插值,這意味著生成的失真映射是分段線性函數(shù)。分段線性函數(shù)的導(dǎo)數(shù)是片段間不連續(xù)跳變的分段常數(shù)函數(shù)。正是那些恒定分段(由每個(gè)網(wǎng)格單元內(nèi)逐漸變化的局部分辨率調(diào)制)導(dǎo)致了圖1和圖2中的現(xiàn)象。導(dǎo)數(shù)中的不連續(xù)性不是問題,因?yàn)橛^察者無法知覺導(dǎo)數(shù),只能知覺函數(shù),而函數(shù)在什么地方都是連續(xù)的。
 
對(duì)于圖5,另一個(gè)有趣的觀察結(jié)果是,切線空間中的畸變網(wǎng)格和中間圖像之間的重疊并不完美。中間圖像的一部分未被覆蓋(沿著左邊界的透鏡形狀區(qū)域),而且畸變網(wǎng)格的一部分落在中間圖像之外。第一部分意味著用戶無法看到中間圖像的一部分,以及它的視場(chǎng);第二部分意味著實(shí)際顯示的部分不接收有效的圖像數(shù)據(jù),因此這變得無法使用。
 
Vive的設(shè)計(jì)師在這里作出了一個(gè)有趣的決定:他們將右邊中間圖像的左邊界延伸到右邊顯示器的左邊緣之外(左邊顯示器也同樣如此),從而獲得與另一只眼睛的部分立體重疊。在直接向左看時(shí)視場(chǎng)不會(huì)延伸,因?yàn)槟抢餂]有更多的顯示像素,但在向左或向上或向下看時(shí)視場(chǎng)將會(huì)延伸。“缺點(diǎn)”是Vive渲染的中間圖像會(huì)出現(xiàn)奇怪的“偏食”形狀,在內(nèi)邊緣缺失了兩大塊。
 
最后要提的一點(diǎn)是:1512×1680像素的推薦中間圖像大小來自于哪里呢?選擇它的原因是:為了令中間圖像的分辨率在通過畸變網(wǎng)格饋送之后能夠大致與透鏡中心區(qū)域中的真實(shí)屏幕分辨率相匹配,從而讓重新采樣過程中的混疊最小化(在把一個(gè)光柵圖像翹曲到另一個(gè)光柵圖像之上時(shí)的固有現(xiàn)象)。具體來說,中間圖像在透鏡中心的分辨率略低于實(shí)際顯示的分辨率(10.01像素/度 vs 11.42像素/度),但往外來說中間圖像能夠快速超過實(shí)際顯示的分辨率,請(qǐng)參見圖6。

[VR知識(shí)] 深度分析VR頭顯分辨率:渲染、失真與校正

總之:量化VR頭顯的真實(shí)物理分辨率是一個(gè)復(fù)雜的問題,因?yàn)檫@取決于透鏡的光學(xué)屬性,校準(zhǔn)映射的表現(xiàn)形式和分辨率(網(wǎng)格 vs 圖像 vs 分析函數(shù)),而且當(dāng)然還包括真實(shí)顯示的像素?cái)?shù)目及其真實(shí)視場(chǎng)。但事實(shí)證明,通過在透鏡中心引用綠色通道分辨率,存在一種合理的方法來將其整合為具體的數(shù)字并進(jìn)行粗略比較。



相關(guān)文章
網(wǎng)友評(píng)論

您需要登錄后才可以發(fā)帖 登錄 | 立即注冊(cè)

關(guān)閉

全部評(píng)論:0條

推薦
熱門