模型在UI上顯示

2021-08-20 09:59:32 字數 1065 閱讀 5504

接到的任務需求是在將3d模型的內容在ui上顯示

梳理了目前有3個種方式,當然沒有好壞之分,只有合適與否。在開源專案中sometips的scenes資料夾中,加入3duiwayno1-3的場景,看到以上的實現方式。

camer是skybox直接與ui混合。如果在放在ui節點下,因為在同一層級下,通過控制z值設定前後的關係。

使用rendertexur,camera單獨照模型,攝像機的內容放到rendertexure,在ui介面上放入raw image。要設定渲染層都為rendertexture。

rendertexture的方式,可以滿足在兩個不同的層級之間的需求。問題是美術效果上,需求要對於效果做shader上處理。用camera和原來的在camer下有色差,以及如果涉及粒子特效。粒子的效果的衰減。也有研究自己寫shader解決alpha的問題。

原因在於預設的粒子效果使用到的shader中使用了colormask rgb,所以只有rgb三個通道的值被存入了緩衝,而沒有寫入a通道的值, 所以我們得到的texture其實沒有粒子的alpha資訊,由於使用了zwrite off,所以也沒有粒子的深度資訊,當我們把這張紋理拿出來顯示的時候,由於某些粒子所在位置alpha值為0,所以通過alpha預存得到的rgba值是(0, 0, 0, 0),所以最後也就看不到顏色了。

對用的解決辦法是將shader中的colormask rgb改為colormask rgba,寫入粒子的alpha資訊就行了。

使用多個攝像機混合,但要同時要求camera都是深度模式,需要指令碼去改變camera的depth值。另外渲染的camera的depeth要大於uicamera的。好處在於用的時候載入,在不用的時候就解除安裝了。方便自己的管理。

自己專案中選擇第三種,原因是在需要在不同的場景下開啟,如果是美術效果最好,當然是單獨場景最好。而且背景上有更大的美術發揮空間。問題在於場景loading會有點奇怪,不合乎策劃設計的初衷,體驗上有轉場的感受。

研究了下守望先鋒的寶箱,其實在同乙個場景裡,切到了場景某個點,進行操作的,沒有載入的過程。如果在場景某個點作為開啟的位置,目前多個場景都要處理。帶來更多的美術工作量。後期需要美術管理反而變多了。

Unity 在UI上顯示特效Or物體(無背景)

一般的方法 是建立乙個render texture 掛在指定相機和要顯示的ui上,會像下圖一樣有黑色背景 視覺效果很不好 解決辦法 保留建立的render texture 1.建立乙個shader no alpha shader default no alpha color tint color 1...

粒子顯示在UI前方

canvas的render mode的三種模式比較 canvas元件中的render mode 1.screen space overlay 此模式不需要ui攝像機,ui將永遠出現在所有攝像機的最前面 ui置頂 2.screen space camera 它需要提供乙個uicamera 這樣就和ng...

在UI上使用BackgroundWorker

凡是winform的應用程式,如果他執行了乙個的非常冗長的處理操作 比如檔案查詢 它在執行時會鎖定使用者介面,雖然主活動視窗一直在執行,但使用者無法與程式互動,無法移動窗體或改變窗體大小,所以使用者感覺很不爽。如何做才能使得這個程式有響應。答案就是在後台執行緒中執行這個操作。在這裡已經有了多種方法來...