資料介紹
作者:鄭洪智
在通用渲染管線(URP)中,相機有堆棧相機、渲染到同一渲染目標、渲染為RenderTexture(渲染紋理)三種工作方式。
在通用渲染管線(URP)中,相機有以下工作方式:
- 堆棧相機(Stack Cameras)可以將多個相機的輸出合并為單個輸出。通過相機堆棧,你可以在2D UI中加入3D模型,或者創建車輛駕駛艙的效果。
- 將多個基礎相機或相機堆棧渲染到同一渲染目標。這使你可以創建例如分屏渲染效果。
- 將基礎相機或相機堆棧渲染為RenderTexture(渲染紋理)。通過渲染到RenderTexture,可以創建例如CCTV監視器之類的效果。
你可以結合使用這些工作方式來獲得更復雜的效果。例如,你可以定義兩個相機堆棧,然后將每個相機堆棧設置為渲染到同一渲染目標的不同區域。
相機堆棧
相機堆棧由基礎相機和一個或多個疊加相機組成。相機堆棧使用堆棧中所有相機的組合輸出疊加基礎相機的輸出。這樣,你可以對基礎相機的輸出進行任何處理,也可以對相機堆棧的輸出進行處理。例如,你可以將相機堆棧渲染到給定的渲染目標、應用后處理效果等等。
URP在Camera中執行了多項優化,包括渲染順序優化以減少overdraw。但是,使用相機堆棧時,你在手動定義渲染這些相機的順序。因此,你必須小心對相機進行排序,不要導致過度overdraw。有關URP中overdraw的信息,后面開一節專門講。
01 將相機添加到相機堆棧
- 在場景中創建相機。它的Render Type默認為Base,使其成為基礎相機。
- 在場景中創建另一個相機,然后選中。
- 在相機Inspector中,將相機的渲染類型RenderType更改為Overlay。
- 再次選擇基礎相機。在相機Inspector中,滾動到Stack部分,單擊加號(+)按鈕,然后單擊疊加相機的名稱。
疊加相機現在是基礎相機的相機堆棧的一部分。Unity在基礎相機的輸出之上渲染疊加相機的輸出。
你可以通過直接操縱cameraStack基礎相機的UniversalAdditionalCameraData組件的屬性,將腳本中的相機添加到相機堆棧中,如下所示:
var cameraData = camera.GetUniversalAdditionalCameraData(); cameraData.cameraStack.Add(myOverlayCamera);
02 從相機堆棧中移除相機
- 創建一個至少包含一個疊加相機的相機堆棧。
- 選擇相機堆棧的基礎相機。
- 在相機Inspector中,滾動到Stack部分,單擊要刪除的疊加相機的名稱,然后單擊減號(-)按鈕。
疊加相機保留在場景中,但不再是相機堆棧的一部分。
你可以通過直接操縱cameraStack基礎相機的UniversalAdditionalCameraData組件的屬性,從腳本中的相機堆棧中刪除相機,如下所示:
var cameraData = camera.GetUniversalAdditionalCameraData(); cameraData.cameraStack.Remove(myOverlayCamera);
03 更改相機堆棧中相機的順序
- 創建一個包含多個疊加相機的相機堆棧。
- 在相機堆棧中選擇基礎相機。
- 在相機Inspector中,滾動到“堆棧”部分。
- 使用疊加相機名稱旁邊的手柄重新排列疊加相機列表。
基礎相機會渲染相機堆棧的基礎層,堆棧中的疊加相機會按照從上到下的列出順序在其頂部進行渲染。
你可以通過直接操縱cameraStack基礎相機的UniversalAdditionalCameraData組件的屬性,在腳本中對相機堆棧進行重新排序。
04 將同一臺疊加相機添加到多個堆棧
要將疊加相機添加到多個相機堆棧:
- 創建一個至少包含一個疊加相機的相機堆棧。
- 在場景中創建相機。它的渲染類型默認為Base,使其成為基礎相機。
- 選擇新的基礎相機。
- 在相機Inspector中,滾動到堆棧部分,單擊加號(+)按鈕,然后單擊要在兩個相機堆棧中使用的疊加相機的名稱。
現在,疊加相機將同時在兩個相機堆棧中渲染。
你還可以通過直接操縱cameraStack基礎相機的UniversalAdditionalCameraData組件的屬性,將腳本中的相機添加到相機堆棧中,如下所示:
var cameraData = camera.GetUniversalAdditionalCameraData(); cameraData.cameraStack.Add(myOverlayCamera);
將多個相機渲染到一個目標
在通用渲染管線(URP)中,多個基礎相機或相機堆棧可以渲染到同一渲染目標。這使你可以創建例如分屏渲染的效果。
如果有多個基礎相機或相機堆棧渲染到渲染目標的同一區域,則Unity會多次繪制重疊區域中的每個像素。最高優先級的基礎相機或相機堆棧最后繪制。
你可以使用基礎相機的輸出目標屬性來定義渲染目標,并使用視口矩形(Viewport Rect)屬性來定義要渲染到的渲染目標的區域。
設置分屏渲染
- 在場景中創建相機。其渲染模式默認為Base,使其成為Base Camera。
- 選擇相機。在Inspector中,滾動到Output部分。將Viewport的值更改為以下值:
X:0
Y:0
Width:0.5
Height:1
- 在場景中創建另一個相機。其渲染模式默認為Base,使其成為Base Camera。
- 選擇相機。在Inspector中,滾動到Output部分。將Viewport Rect的值更改為以下值:
X:0.5
Y:0
Width:0.5
Height:1
Unity將第一個Camera渲染到屏幕的左側,將第二個Camera渲染到屏幕的右側。
你可以通過設置其rect屬性,在腳本中更改相機的視口矩形,如下所示:
myUniversalAdditionalCameraData.rect = new Rect(0.5f, 0f, 0.5f, 0f);
渲染到RenderTexture
在通用渲染管線(URP)中,相機可以渲染到屏幕或RenderTexture(渲染紋理)。渲染到屏幕是默認設置,也是最常見的用例,但是渲染到RenderTexture可讓你創建如CCTV相機監視器的效果。
如果你有要渲染為RenderTexture的相機,則必須有第二個相機,然后再將該RenderTexture渲染到屏幕上。在URP中,所有渲染到RenderTexture的相機都在所有渲染到屏幕的相機之前執行其渲染循環。這樣可以確保RenderTexture已準備好渲染到屏幕上。
渲染到RenderTexture,然后將該RenderTexture渲染到屏幕。
- 使用Assets > Create > Render Texture在項目中創建Render Texture資產。
- 在場景中創建一個Quad。
- 在你的項目中創建一個材質,然后選擇它。在Inspector中,將RenderTexture拖動到材質的BaseMap字段。
- 在Scene視圖中,將材質拖到Quad上。
- 在場景中創建相機,其渲染模式默認為Base,使其成為Base Camera。
- 選擇基礎相機。在Inspector中,滾動到Output部分,然后將Render Texture拖到Output Texture字段。
- 在場景中創建另一個相機。它的渲染模式默認為Base,使其成為Base Camera,將Quad放置在新Base Camera的視圖內。
第一臺Camera將其視圖渲染到RenderTexture。第二臺相機將包括RenderTexture的場景渲染到屏幕上。
你可以通過設置cameraOutput相機的UniversalAdditionalCameraData組件的屬性,在腳本中設置相機的Output,如下所示:
myUniversalAdditionalCameraData.cameraOutput = CameraOutput.Texture; myCamera.targetTexture = myRenderTexture;
本文轉自:Unity官方平臺 ,作者:鄭洪智,轉載此文目的在于傳遞更多信息,版權歸原作者所有。
- 工業相機入門知識
- 如何用相機制作Wi-Fi坦克
- 【虹科】工業相機介紹
- 嵌入式工業相機在機器視覺中的應用
- 嵌入式工業相機在機器視覺中的應用講解
- 工業相機的50個問題及解答 29次下載
- 如何用MATLAB實現靜態仿真電子版下載 0次下載
- 基于散焦模糊量估計的相機加權標定方法 16次下載
- 如何用Matlab繪制二維圖形資料下載
- URP渲染管線初步解析
- 千兆以太網工業相機八相機系統方案詳細概述 12次下載
- 機器視覺線陣相機原理和應用 26次下載
- LabView相機采集圖像指南 100次下載
- TI配置Hercules ARM安全MCU SCI和LIN 模塊如何用于UART通信 10次下載
- 超單元在大型復雜航天相機結構中的應用
- 機器視覺中如何解決工業相機丟幀問題 677次閱讀
- 線陣相機與面陣相機的區別 917次閱讀
- 自制一個簡單易用的針孔相機 1126次閱讀
- 如何用Rust通過JNI和Java進行交互 619次閱讀
- OpenHarmony上實現分布式相機 1326次閱讀
- 線掃相機的原理和判斷方法 5837次閱讀
- 如何用ChipScopy創建并運行link sweep 1112次閱讀
- 圖像測量和機器視覺應用中的相機標定方法 1395次閱讀
- 事件相機定義與設計 3148次閱讀
- 線陣相機和面陣相機的區別 1.4w次閱讀
- 如何用空糖果盒制作LED面板? 3485次閱讀
- 如何選擇工業相機的接口? 9419次閱讀
- 工業相機在機器視覺系統中的地位和作用 8926次閱讀
- 顯示器中的QD與相機中的量子點相比 4920次閱讀
- 數碼相機的原理及構成 1.6w次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1491次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機和 SG3525的程控開關電源設計
- 0.23 MB | 4次下載 | 免費
- 8基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537793次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多