補充之前對相機渲染的認識理解

2022-08-26 06:21:06 字數 1836 閱讀 6028

要鬧清楚相機渲染的順序首先我們要清楚理解相機元件中幾個屬性的具體意思。

還是先概念,注意詳細理解,這個必須細摳。。。。

確定螢幕的哪一部分將被清除。

每個攝像機在渲染它檢視的時候都會快取顏色和深度資訊。繪製出來的影象中那部分沒有被繪製到的部分是空白的,預設的情況下會顯示天空盒的顏色。

當使用多個攝像機的時候,每個都在快取中存放了它自己的顏色和深度資訊,在每個相機渲染的時候會累積更多的資料。在場景中任何特定的攝像機渲染其檢視的時候,可以指定清除標誌來清除快取資訊中的不同部分。可選項有sky box,solid color,depth only和dont clear。

這是清除標誌的預設設定。螢幕的任何空白部分都會顯示攝像機的天空盒,如何當前攝像機沒有設定天空盒,它會預設使用渲染設定中(eidt->render settings)的天空盒。假如預設渲染設定中也沒有設定天空盒,它會退而使用背景色。可以選擇是否將乙個天空盒元件新增到攝像機。

螢幕的任何空白部分都會顯示當前攝像機的背景色

如果想要繪製乙個玩家的槍而不讓它在環境中不被裁剪,可以設定乙個深度為0的相機來繪製環境,同時另乙個深度為1的相機單獨繪製這個**。**相機的清除標誌應該設定成depth only。這會保持環境的圖形顯示在螢幕上,但是丟棄所有關於每個物件處於3d空間什麼位置的資訊。當槍被繪製的時候,被繪製出來的不透明部分會完全覆蓋現有的被繪製的環境影象,而不管槍離牆壁多近。

為相機使用depth only作為清除標誌,會使相機僅僅根據相機的深度資訊來輸出畫面,比如相機深度為n的清除標誌設為depth only,那麼它的輸出會直接覆蓋在所有深度小於n的相機輸出畫面上,而不管在真實的3d環境中,各種物件的z值如何。

這個模式下不會清除顏色和深度快取。這會導致下一幀會在上一幀的結果上進行繪製,這個模式在遊戲中用得少,一般用於常規的shader中。

不清除的話不過一會螢幕所有的空白區域都會被填滿,完全看不出是什麼東西。

在沒有天空盒的時候,當所有的元素繪製完成後剩餘螢幕的顏色,即那些沒有被元素繪製到的螢幕區域顯示的顏色

重要的就是上面第乙個屬性的理解。。。。。今天舶主主要想更新一下對之前對3d物體繪製在2d物體之前demo的修改,之前說canvas時候串帶的那個其實是有點問題點,今天通過不同攝像機的深度來實現一樣的效果推薦使用今天這個,這個邏輯比較清晰。

建立一塊畫布,畫布下面建立張image

修改canvas及uicamera屬性

這裡的culling mask也可以不修改,使用全部都拍攝,但是這裡為了把ui獨立分出來我做了設定,就當前效果而言改或不改是沒影響的。。。這個需要自己仔細理解一下clear flags屬性的意義。

建立乙個cube並修改其屬性

修改拍cube的攝像機的屬性

效果如圖

總結 一下:繪在前面的,深度值大。clear flags應為deep only(只根據深度管理自己的層的繪製,其它的不管,空白部分為透明色)

對axios的基礎認識與理解

axios相比jquery來說,axios更加的輕便。axios有以下特徵 從瀏覽器中建立 xmlhttprequest 從 node.js 發出 http 請求 支援 promise api 攔截請求和響應 轉換請求和響應資料 取消請求 自動轉換json資料 axios的cdn script 使用...

對3D渲染管線(渲染流水線)的理解

渲染管線的概念 3d渲染管線也稱為渲染流水線,可以將其理解為乙個流程,就是我們準備一些資料,讓gpu對這些資料做一些處理,最後得出一張二維影象,渲染流程主要分為幾個大的階段 資料準備階段,頂點處理階段,光柵操作階段,畫素著色階段。一 資料準備階段 該階段主要是根據使用者提供的頂點及索引資訊,構建多邊...

我對浮動的理解和認識(二)

上篇我寫了我對浮動的認識 一 裡面主要說了float的初衷和浮動帶來的一些實際本質的問題。聰明的css開發者利用css的佔位特性進行布局,的確起到了一些很好的效果,但是也會帶來一些實際的問題。比如浮動後沒有高度,高度為0.這個現象 請廣大的css開發者留意。不然可能出現一些很莫名奇妙的問題。如何解決...