前兩天發了一個很復雜的版本,又鼓搗了一下發現完全沒有必要。我之前的理解有點偏(不是錯誤的但用法錯了),但是有一些小伙伴收藏了,害怕里面的某些東西對誰有用,所以寫了一篇新的,前兩步配置環境和之前一樣。
軟件:Unity?2022.3.51f1c1、vscode、Meta XR All in One SDK V72
硬件:Meta Quest3
僅實驗urp管線
博主搞這個主要是想做現實里的人的變身功能,最后效果如下
可以看到雖然身體是半透明的,但是裙子依舊被完全遮擋了?
速通原理:?將打開DepthTest(深度測試)和DepthWrite(深度寫入)的透明物體(身體)的渲染隊列調至不透明物體(衣服)的前面,即完成遮擋
一、使用BuildingBlocks設置透視環境
注意:透視有個坑是camera不能開postprocessing(后處理),開后處理會導致環境全黑
二、配置一個具有全身追蹤的玩家物體,可參考這篇
【Quest開發】全身跟蹤(一)_quest3如何識別跟蹤腳部-CSDN博客??????
我為了綁定準確直接使用meta默認的全身追蹤示例
三、修改材質
僅需修改身體材質,創建一個Lit ShaderGraph(主要是我不會寫shader,會寫shader的朋友也可以寫shader)如下配置(紅框地方一致即可)
把它給到身體要用的材質,修改屬性如下
這里面翻譯過來就是,這是一個透明的,透明度為0的,但會像不透明物體一樣寫入深度和測試深度的,渲染隊列排在一般不透明物體更前面(也就是先將深度值寫入深度緩沖區)的材質。
找到全身追蹤物體下的Amature_Mesh,替換全身材質?
?
完成咯,是不是簡單多了,也好理解多了。還是不太理解的朋友可以看一下這篇講渲染順序的,給了我很大的啟發
Unity 渲染原理(十二)透明效果與渲染隊列 | Origin of Ray
?
這樣雖然實現了遮擋關系,但是運行了的朋友應該會發現衣服不會跟著身體動,需要導入到建模軟件重新蒙皮哦,把衣服也蒙皮到meta原有的骨骼上才行