PICO4 傳送門效果開發(fā)小結(jié)之原理篇

一、原理總述

????????首先通過PICO SDK透視開啟接口開啟透視;然后對傳送門模型進行處理,分別在門的兩端添加附帶有處理Shader的Quad,面向真實世界一側(cè)的Quad添加附帶深度測試或者模板測試Shader的材質(zhì),面向虛擬世界一側(cè)的Quad添加附帶Underlay “開洞” Shader的材質(zhì)。

????????為了方便表述,將面向真實世界一側(cè)的Quad附帶的Shader表示為Shader[See Virtual],而將面向虛擬世界一側(cè)的Quad附帶的Shader表示為Shader[See Reality]。

????????整體原理示意圖如下。

原理示意圖

二、實現(xiàn)方式

????????以上Shader[See Virtual]有兩種實現(xiàn)方式,分別是深度測試和模板測試。

1、深度測試

????????這種實現(xiàn)方式相對于模板測試來說較為繁瑣,需要創(chuàng)建一個附帶Underlay “開洞” Shader材質(zhì)的包圍盒,這個包圍盒可以六個面都采用Quad來做。讓包圍盒包裹相機和傳送門,遮住外圍的虛擬場景。

(1)包圍盒創(chuàng)建

????????這個創(chuàng)建的包圍盒可以營造有局限的真實世界,即開啟透視之后可以在包圍盒范圍內(nèi)看到真實世界以及傳送門。

(2)Shader[See Virtual]依附物制作

????????采用只保留深度計算的Shader制作傳送門觀看虛擬世界一側(cè)效果,這里將此側(cè)Quad表示為Quad[See Virtual]。注意,虛擬世界、Quad[See Virtual]和包圍盒的Render Queue需要滿足虛擬世界 < Quad[See Virtual] < 包圍盒。

(3)穿越傳送門

????????可以在傳送門上添加碰撞體,相機下創(chuàng)建一個帶有碰撞體及剛體并隱藏網(wǎng)格渲染器的球體,來進行觸發(fā)檢測是否穿越門,注意傳送門碰撞體勾選觸發(fā)檢測開關(guān)。我們將虛擬世界一側(cè)的Quad表示為Quad[See Reality]。

????????此處觸發(fā)檢測配合相機和傳送門之間坐標關(guān)系計算一起實現(xiàn)。當穿越進虛擬世界一側(cè)時,將包圍盒隱藏,此時會完全進入虛擬世界,同時可以通過Quad[See Reality]看到真實世界;當再次穿越真實世界一側(cè)時,只需將包圍盒顯示,此時會進入局限的真實世界,同時可以通過Quad[See Virtual]看到虛擬世界。

2、模板測試

????????模板測試需要采用Unity的URP渲染管線實現(xiàn),方便針對Stencil屬性進行控制。

(1)Shader[See Virtual]依附物制作

? ? ? ? 采用模板測試的Shader制作傳送門觀看虛擬世界一側(cè)效果,這里將此側(cè)Quad表示為Quad[See Virtual]??梢詫uad[See Virtual]材質(zhì)的Stencil ID屬性修改為1,便于后續(xù)進行條件比較。

(2)虛擬場景制作

? ? ? ? 將虛擬場景所有物體作為同一個物體的子物體,然后修改父物體的層級為自定義層級。

(3)修改URP渲染管線數(shù)據(jù)資產(chǎn)

? ? ? ? 此處在原來URP渲染管線資產(chǎn)綁定的數(shù)據(jù)資產(chǎn)基礎(chǔ)上復制一份數(shù)據(jù)資產(chǎn),在將復制的數(shù)據(jù)資產(chǎn)賦值給URP渲染管線資產(chǎn)。在復制的數(shù)據(jù)資產(chǎn)里添加一個渲染特征,此渲染特征選擇渲染物體。

在過濾條件處將自定義層級去除,勾選Stencil并將比較值改為1,比較方法改為相等。

? ? ? ? 進行完以上三步后,只能通過Quad[See Virtual]看到虛擬世界場景。

(4)穿越傳送門

? ? ? ? 可以在傳送門上添加碰撞體,相機下創(chuàng)建一個帶有碰撞體及剛體并隱藏網(wǎng)格渲染器的球體,來進行觸發(fā)檢測是否穿越門,注意傳送門碰撞體勾選觸發(fā)檢測開關(guān)。我們將虛擬世界一側(cè)的Quad表示為Quad[See Reality]。

? ? ? ? 此處觸發(fā)檢測配合相機和傳送門之間坐標關(guān)系計算一起實現(xiàn)。當穿越進虛擬世界一側(cè)時,將Stencil的比較方法改為Disabled,其他屬性不變,此時會完全進入虛擬世界,同時可以通過Quad[See Reality]看到真實世界;當再次穿越真實世界一側(cè)時,只需將Stencil的比較方法改為Equal,其他屬性不變,此時會完全進入真實世界,同時可以通過Quad[See Virtual]看到虛擬世界。

三、代碼實現(xiàn)

????????多重傳送門代碼實現(xiàn)參見:PICO4 傳送門效果開發(fā)小結(jié)之多重傳送門代碼實現(xiàn)

四、效果演示

????????效果演示參見:PICO4 MR多重傳送門效果演示

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 使用ShaderGraph連連看與粒子系統(tǒng)制作一個簡易的傳送門效果。 整體思路: 通過對紋理的扭曲與旋轉(zhuǎn),并挖空中...
    pamisu閱讀 5,211評論 0 4
  • (大牛繞道,大牛繞道,大牛繞道)前兩天朋友問說一個傳送門的效果怎么實現(xiàn),當時第一反應(yīng)想到是用shader實現(xiàn),其實...
    AngerCow閱讀 9,469評論 2 2
  • 想了解GPU硬件相關(guān)知識,網(wǎng)上內(nèi)容太雜亂,而且網(wǎng)上關(guān)于RTR4圖形硬件部分的翻譯機翻味道太重了,看得莫名其妙,所以...
    狂喜之詩閱讀 1,324評論 1 2
  • “When we get the final hareware, the performance is just ...
    龍凕閱讀 642評論 0 1
  • 差不多也該結(jié)束了。 書接上文,有些玩家認為這里面藏著一個大秘密,想要發(fā)掘出來,說不定可以把這個游戲發(fā)展的更加豐富合...
    Obj_Arr閱讀 232評論 1 2

友情鏈接更多精彩內(nèi)容