<strike id="r1pl9"></strike>
<strike id="r1pl9"><dl id="r1pl9"><cite id="r1pl9"></cite></dl></strike> <strike id="r1pl9"><i id="r1pl9"></i></strike>
<span id="r1pl9"><dl id="r1pl9"><ruby id="r1pl9"></ruby></dl></span>
<span id="r1pl9"><dl id="r1pl9"></dl></span>
<strike id="r1pl9"></strike>
<strike id="r1pl9"><i id="r1pl9"><cite id="r1pl9"></cite></i></strike>
<strike id="r1pl9"></strike>
<strike id="r1pl9"></strike>
<strike id="r1pl9"></strike><strike id="r1pl9"></strike><span id="r1pl9"><i id="r1pl9"></i></span>
<strike id="r1pl9"><i id="r1pl9"></i></strike>
<span id="r1pl9"><dl id="r1pl9"><ruby id="r1pl9"></ruby></dl></span><strike id="r1pl9"><dl id="r1pl9"></dl></strike>
<strike id="r1pl9"></strike>
專題欄目:ARVRMR虛擬現實

AR中怎么實現遮擋

讀大三時學過一門課程《游戲編程》,當時遇到一個有趣的問題,沒想到現在搞AR又遇到了,就是遮擋的情況。

什么是遮擋?

就是前面的東西擋住后面的。尤其是在二維環境下,因為本來就是一個平面,一定要有前后關系或者分層來解決遮擋問題。

舉個例子,我們以前玩小霸王游戲的時候,游戲人物走到一個建筑物旁邊,他要從建筑物的前面繞到建筑物的后面,請問怎么處理才能讓你不那么假。

沒感覺,那先看一張動態圖。

是不是這樣才會感覺到飛機真的在繞著人飛行。真實的世界里,兩個物體之間的遮擋關系是自然而然的,因為我們從小就開始適應這種情況,所以并不會特別察覺,但如果讓你自己建造一個虛擬的世界,這個難題就必須要解決了。

在AR中有無遮擋,很重要嗎?

看一個AR繪畫程序的兩種情況對比。

當我們在真實場景中畫上虛擬的筆跡,然后我們轉一下角度,問題就出現了。正常情況下,我們會知道畫在黑色物體背后的畫筆應該被擋住看不到才對,但是這個虛擬的畫筆一直在我們面前飄著,這就太假了。

然后,如果我們使用了遮擋來處理。

掉落在地上的球,當球滾動到物體下面的時候,就從圖像上消失了,這才符合真實的情況。

所以在AR當中,無論是手機AR還是AR眼鏡,真實環境和虛擬的增強信息并不是簡單疊加。為了欺騙人的雙眼和大腦,是需要滿足一些真實世界的基本原則,比如重力、燈光、陰影、當它滿足一些基本原則的時候,比如燈光、陰影等,不然總會感覺“看起來不太對”。

AR中實現遮擋的三種方法

第一種是比較簡單粗暴的處理方式,就是突出重點。

比如我們在AR中觀看,真實場景我們很熟悉,我們希望能突出虛擬圖像的更重要地位,那就把虛擬的物體渲染得非常亮,遠遠超過周圍環境。帶來的后果就是整個場景很扎眼,不舒服。

第二種我們選擇用更精細些的手法,但是原理和第一種類似,只是反過來操作。

當我們想看到前面的虛擬圖像時,這個虛擬圖像實際上應該是在前面的,現實場景是在背景位置,這時候我們不像第一種方式對虛擬物體加亮,而是反其道而行之,把現實部分變暗。

如果人眼能看到一部分現實背景,那就采用光照往沒被遮擋住露出來的真實部分打上光,這樣就還原了真實的情況。

第三種是針對于光學透視的顯示器,你可以簡單理解為采用光學透視的AR眼鏡就是這一種。

這種方案從理論上講,就是在整個儀器的前方增加一塊用于過濾的電子屏,用來過濾一些不需要的像素。

總結

在以前學習做2D游戲的時候,遮罩的算法是用來解決遮擋問題的,3D游戲里,可以直接用深度來表達物體的前后關系,利用深度軸處理遮擋,就不算是一個需要著重解決的問題。

但AR掃描的現實世界非常復雜,很難短時間重建真實環境中的所有對象,也就沒法做出透明遮罩來解決遮擋問題。

發表評論

相關文章

调教室体罚小尿奴男男h