[英]Is there a way to ensure that an object is always displayed on top of another with no overlaps?
如下圖所示,我在化身上的衣物有些問題
大多數人會建議我在建模軟件中簡單地將褲子拉離身體,直到將其與其他衣物組合在一起為止
我現在可以把襯衫從褲子上拉開,但是我有很多不同的衣服,要檢查/調整它們似乎並不可行。
嘗試並應用某種分層系統會更好。
誰能為我提供有關如何實現這樣的系統或如何實現目標的建議?
我已經研究過嘗試使用着色器執行此操作,但是運氣不佳,無法達到我想要獲得的結果(但是,我不是Shaderlab / CG專家)
我還嘗試過將化身分成不同的部分,並用衣服網代替它們,但這仍然留下了衣服彼此可見的問題。
我希望最好具有某種系統,在該系統中,我可以對每件衣服進行分層,以便無論它們以正確的順序彼此重疊顯示而沒有任何重疊。
如果您真的想使用分層,則可以使用實際為此目的制作的Unity 渲染層 。
轉到圖層->編輯圖層
添加所需的圖層(順序無關緊要)
將圖層分配給您要由全角質攝像機渲染的對象。
作為一個例子,我加入trousers cube
與層trousers
,一個pillover cube
與層pullover
和OnTop cube
與層OnTop
創建一個新的Empty CameraParent
並調用它,例如CameraParent
。 這將包含您所有的相機,並且您應該移動此相機,而不要移動到目前為止的相機。
如果是VR / AR應用,則可能需要將Camera
組件附加到該父對象,使其成為主攝像機,但不渲染任何東西
創建例如4個子對象,並為其提供一個Camera
組件。 還要確保只有一台攝像機標記為MainCamera
並且只有一台攝像機在場景中具有AudioListener
。 我用4台攝像機為例具有TrousersCamera
一個PulloverCamera
一個OnTopCamera
和BackgroundCamera
。
現在進行渲染設置
BackgroundCamera
在這里,您可以像以前一樣渲染其他任何東西
ClearFlags
:例如SkyBox
Culling Mask
:選擇除 trousers
, pullover
和OnTop
之外的所有圖層 Depth
: -1
TrousersCamera
用於渲染褲子(在其他任何東西之上)
ClearFlags
:僅深度 Culling Mask
: 僅選擇trousers
Depth
: 0
(您會看到一個較大的值呈現在一個較低的值之上) PulloverCamera
用於在褲子頂部繪制套頭衫
ClearFlags
:僅深度 Culling Mask
: 僅選擇pullover
Depth
: 1
OnTopCamera
用於在一切之上渲染其他東西
ClearFlags
:僅深度 Culling Mask
: 僅選擇在 OnTop
Depth
: 2
結果,您可以看到盡管紅色多維數據集( OnTop cube
)確實遠遠落后於其余部分,而藍色多維數據集( Pullover cube
)居於中間,但紅色Pullover cube
將始終呈現在頂部,而不是藍色,而呈現在棕色之上( trousers cube
),最后是背景。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.