多層相機疊加

2021-09-28 19:00:55 字數 1982 閱讀 9390

需要實時截出不同背景的(要求背景顏色對場景有反射效果),但是場景中用到postprocessing等後處理,還有影子、倒影等效果,所以單純更換背景很難將這些效果疊加上去。

解決方案:由於在pc上應用,所以處理起來比較簡單粗暴。通過三層相機分別來渲染模型影子、倒影以及地面與模型,背景為白色,通過顏色相乘來換成其他背景。

場景中分別新四個quad,並調整quad大小到需要的尺寸,四個quad放在同一位置,調整z值使之錯開(可根據需要調整前後順序)

設定最後面乙個quad為背景色(白色),材質為unlit/color。

用乙個solid color型別的camera來渲染模型和地面(此camera指渲染模型和地面),通過rendertexture賦值給1.1中的乙個quad,此quad的shader為ui/unlit/transparent(亦可以用unlit/texture)。

用乙個solid color型別的camera來渲染模型,通過rendertexture賦值給1.1中另外乙個quad,此quad的shader為ui/unlit/transparent。把此quad放置在1.3中quad背後,並調整材質的透明通道使之看起來像影子,可調整quad的位置。

注:此影子為模擬燈光照射產生的影子。

用乙個solid color型別的camera來渲染倒影,此camera放在始終與1.3中的相機始終關於地面對稱的位置,並始終lookat相機。通過rendertexture賦值給1.1中最後乙個quad,此quad的shader為ui/unlit/transparent。調整材質的透明通道使之看起來像倒影,可調整quad的位置,如果需要把scale的y值改為-1 。

注:倒影為三位模型在比較光滑地面上的鏡面反射圖

通過乙個正交相機來獲取上述四個quad疊加倒影,並通過畫素相乘來更改背景。

通過1.6中的正交相機即可獲取混合後的,然後通過畫素相乘,即可獲取更換背景後的,且背景對影子、倒影等都會產生混合效果。

*///後續刪除

}也可以統一獲取到畫素顏色陣列,然後更改顏色,最後賦值給texturedd,這樣效率更高

texture2d

changecolor

(color color)

modifiedtex.

setpixels

(colors)

; modifiedtex.()

;/*for(int i=0;ifinaltex = modifiedtex;

return modifiedtex;

}

實現多層DIV疊加的js事件穿透

flash裡面有個很好的特性是,乙個容器裡,不存在實際物件的部分,不會阻攔滑鼠事件穿透到下一層。前端就不一樣了,兩個div層疊以後,上層div會接收到所有事件 即使這個div裡面內容是空的,沒有任何實際物件 下層div什麼事件都接不到。舉個例子 這個示意圖中 c方塊在a容器中 a容器邊框為紅色 d方...

層疊加的五條疊加法則

法則一 同輩元素定位方式相同,且無z index設定時,html靠後者居上。法則二 同輩元素同為動態定位時,且有z index設定時,z index值大者居上。法則三 同輩元素定位方式不同時,動態定位居上。法則四 非同輩元素,任意一者及其祖元素不具備動態布局時,html靠後者居上。引用 其實前四點都...

opencv字元疊加

參考1 參考2 參考3參考4 puttext 函式是不支援 n換行的。所以要自己去換行。cvscalar font size text.getfont null,font size,null,null std string str astr astr為被疊加的字串,以 n為換行標誌 std stri...