如何在UI之間正確的顯示3D模型

2021-09-10 07:30:30 字數 1547 閱讀 9033

我們在做角色渲染時,通常會遇到一種情況,就是在ui與ui之間顯示乙個模型。而我們模型是用3d渲染的,如果直接放乙個模型上來。那麼就會導致要麼模型永遠在ui上面,要麼ui永遠在模型上面,達不到我們想要的模型夾在兩個ui之間的效果。

要做到這個效果,就會考慮到用rt來解決,具體就是在乙個ui上的乙個節點上建立乙個uitexture

這個uitexture關聯乙個rt(可以動態建立或靜態指定),並給他乙個shader(注意這個shader很關鍵

然後我們要在渲染3d模型的攝像頭上關聯rt和要渲染的層級等內容(注意這個rt和uitexture的rt是同乙個rt,可以**動態指定

然後就可以把角色渲染到這個節點上了。

剛開始大家可能會看到這個效果,發現角色旁邊全是黑的。

這是因為我們的攝像機選擇清理方式是顏色清理並且顏色是黑色。就算你把alpha去掉也會有一層黑色在(因為存到rt上會把顏色補上)。

這時候自然而然會想到用混合的方式把顏色去掉,然後用混合的話最開始想到的是用最平台用的混合方式

blend srcalpha oneminussrcalpha

得到的結果是

咋一看感覺好了,其實不然,我們要注意之前的角色是有特效的,而這個角色的特效不見了

也許是透明度還沒渲染出來,但是我們再仔細看

如果是這樣,也就是說前景色被裁剪了。其實我們不想被裁剪掉的,所以我們需要把前景直接設定為one。

現在顯示正常了

shader "unlit/colorreset"

_color("color", color) = (0,0,0,1)

} subshader

pass

;struct v2f

;fixed4 frag(v2f in) : sv_target

endcg}}}

另外:如果用的是blend srccolor oneminussrcalpha的話也可以看到特效,但會看到飽和度很高,因為顏色相當於double

ArcEngine開發判斷3D模型之間的關係

arcengine 開發判斷 3d模型之間的關係 1 可以通過 irelationaloperator3d 介面的disjoint3d 方法檢視兩個模型是否有相交的地方,c 示例 如下 publicstatic void testintersection 新的irelationaloperator3...

3D相機如何獲取基於立體視覺的3D資料

本文概述了使用立體相機獲取深度感知的主要處理步驟。立體視覺的深度感知基於三角測量原理。我們講兩台搭載投影光學系統的相機併排放置,使兩台相機的視野在所需物距發生重疊。我們通過這兩台相機的拍攝,可以得到兩個不同角度下的場景圖。如圖1所示。物體在圓錐筒前面,圓錐筒散落排列。在3d空間內,兩幅影象中的每乙個...

如何在3D模型上實現太陽光照模擬?

當前示例用於模擬太陽光照效果。第一步 新增螢幕炫光 description 新增乙個螢幕炫光到場景,因為螢幕炫光不是實際的光源,只是乙個效果,因此一般配合其他光源使用。一般用此螢幕炫光來模擬太陽光源,因此配合乙個平行光源使用。一般使平行光產生陰影效果分為以下幾步 1.將渲染器的陰影設定開啟,即 re...