什么时候必须使用UI相机? 多个相机的作用原理?
什么時候必須使用UI相機? 多個相機的作用原理?
首先,要從主畫布說起,maincanvas,這個有什么限制?
主畫布是一張默認用來繪制UI的地方,這些UI必須是系統提供的UI組件,在畫面下掛一個3D物體或非UI的2D物品是不會被繪制到畫布上的,但是仍然會繪制到世界空間,但會被UI擋住,因為UI是繪制在所有其它游戲元素(3D物體,精靈,特效)之上的。因為畫布的渲染隊列數值最高。
渲染隊列數值大的繪制會覆蓋數值小的繪制,
sprite屬于3000的半透明隊列,因此,不可能將sprite放到UI上顯示,它永遠被UI蓋住,除非重寫它的shader。
因此,要想在UI之上顯示一個3D模型,須要使用UI相機。所謂UI相機是指為相機指定target texture參數,相機將繪制到這張貼圖而不是屏幕上。
然后將磁盤上生成的這張貼圖賦給一個rawtexture組件,這樣就將3D模型轉為圖片然后畫到了UI上。
多個相機的作用是根據它們的depth值從小到大來順序起作用的,與相機位置無關,與相機在場景層級中出現的先后無關,主相機默認 depth:-1。根據相機中的culling mask 屬性來決定相機繪制的物件種類,根據相機視口來決定相機可見范圍。舉例:有A,B,C三個相機,深度值依次為-1,0,1,則繪制時:先啟用A相機,從它的角度拍攝一張照片,這張昨默認是渲染到屏幕上的。然后啟用B相機,默認設置,渲染到屏幕,這時候屏幕畫面被B相機的畫面覆蓋(A相機在屏幕上的所有像素被覆蓋掉),若想保留A相機的畫面,同時將B相機的畫面疊加上去,這時候可以設置相機的clear color為 depth only
?另外:深度測試時,物體的深度值是指物體在相機坐標系中的Z值
PS: 渲染隊列按數值劃分:
1000:background, 2000: geometry, 3000:transparent, 4000:overlay,文檔說明如下:
For special uses in-between queues can be used. Internally each queue is represented by integer index;?Background?is 1000,Geometry?is 2000,?AlphaTest?is 2450,?Transparent?is 3000 and?Overlay?is 4000. If a shader uses a queue like this:
Tags { "Queue" = "Geometry+1" }posted on 2018-04-24 11:01 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏
總結
以上是生活随笔為你收集整理的什么时候必须使用UI相机? 多个相机的作用原理?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UGUI BUG
- 下一篇: UGUI 自动布局的重叠BUG