電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>人工智能>URP中如何用多個相機?

URP中如何用多個相機?

2021-02-04 | pdf | 419.84KB | 次下載 | 2積分

資料介紹

作者:鄭洪智

在通用渲染管線(URP)中,相機有堆棧相機、渲染到同一渲染目標、渲染為RenderTexture(渲染紋理)三種工作方式。

在通用渲染管線(URP)中,相機有以下工作方式:

  • 堆棧相機(Stack Cameras)可以將多個相機的輸出合并為單個輸出。通過相機堆棧,你可以在2D UI中加入3D模型,或者創(chuàng)建車輛駕駛艙的效果。
  • 將多個基礎相機或相機堆棧渲染到同一渲染目標。這使你可以創(chuàng)建例如分屏渲染效果。
  • 將基礎相機或相機堆棧渲染為RenderTexture(渲染紋理)。通過渲染到RenderTexture,可以創(chuàng)建例如CCTV監(jiān)視器之類的效果。

URP中的相機堆棧

你可以結(jié)合使用這些工作方式來獲得更復雜的效果。例如,你可以定義兩個相機堆棧,然后將每個相機堆棧設置為渲染到同一渲染目標的不同區(qū)域。

相機堆棧

相機堆棧由基礎相機和一個或多個疊加相機組成。相機堆棧使用堆棧中所有相機的組合輸出疊加基礎相機的輸出。這樣,你可以對基礎相機的輸出進行任何處理,也可以對相機堆棧的輸出進行處理。例如,你可以將相機堆棧渲染到給定的渲染目標、應用后處理效果等等。

URP在Camera中執(zhí)行了多項優(yōu)化,包括渲染順序優(yōu)化以減少overdraw。但是,使用相機堆棧時,你在手動定義渲染這些相機的順序。因此,你必須小心對相機進行排序,不要導致過度overdraw。有關URP中overdraw的信息,后面開一節(jié)專門講。

01 將相機添加到相機堆棧

將相機添加到相機堆棧

  • 在場景中創(chuàng)建相機。它的Render Type默認為Base,使其成為基礎相機。
  • 在場景中創(chuàng)建另一個相機,然后選中。
  • 在相機Inspector中,將相機的渲染類型RenderType更改為Overlay。
  • 再次選擇基礎相機。在相機Inspector中,滾動到Stack部分,單擊加號(+)按鈕,然后單擊疊加相機的名稱。

疊加相機現(xiàn)在是基礎相機的相機堆棧的一部分。Unity在基礎相機的輸出之上渲染疊加相機的輸出。

你可以通過直接操縱cameraStack基礎相機的UniversalAdditionalCameraData組件的屬性,將腳本中的相機添加到相機堆棧中,如下所示:

var cameraData = camera.GetUniversalAdditionalCameraData();
cameraData.cameraStack.Add(myOverlayCamera);

02 從相機堆棧中移除相機

從相機堆棧中移除相機

  • 創(chuàng)建一個至少包含一個疊加相機的相機堆棧。
  • 選擇相機堆棧的基礎相機。
  • 在相機Inspector中,滾動到Stack部分,單擊要刪除的疊加相機的名稱,然后單擊減號(-)按鈕。

疊加相機保留在場景中,但不再是相機堆棧的一部分。

你可以通過直接操縱cameraStack基礎相機的UniversalAdditionalCameraData組件的屬性,從腳本中的相機堆棧中刪除相機,如下所示:

var cameraData = camera.GetUniversalAdditionalCameraData();
cameraData.cameraStack.Remove(myOverlayCamera);

03 更改相機堆棧中相機的順序

從相機堆棧中移除相機

  • 創(chuàng)建一個包含多個疊加相機的相機堆棧。
  • 在相機堆棧中選擇基礎相機。
  • 在相機Inspector中,滾動到“堆棧”部分。
  • 使用疊加相機名稱旁邊的手柄重新排列疊加相機列表。

基礎相機會渲染相機堆棧的基礎層,堆棧中的疊加相機會按照從上到下的列出順序在其頂部進行渲染。

你可以通過直接操縱cameraStack基礎相機的UniversalAdditionalCameraData組件的屬性,在腳本中對相機堆棧進行重新排序。

04 將同一臺疊加相機添加到多個堆棧

要將疊加相機添加到多個相機堆棧:

  • 創(chuàng)建一個至少包含一個疊加相機的相機堆棧。
  • 在場景中創(chuàng)建相機。它的渲染類型默認為Base,使其成為基礎相機。
  • 選擇新的基礎相機。
  • 在相機Inspector中,滾動到堆棧部分,單擊加號(+)按鈕,然后單擊要在兩個相機堆棧中使用的疊加相機的名稱。

現(xiàn)在,疊加相機將同時在兩個相機堆棧中渲染。

你還可以通過直接操縱cameraStack基礎相機的UniversalAdditionalCameraData組件的屬性,將腳本中的相機添加到相機堆棧中,如下所示:

var cameraData = camera.GetUniversalAdditionalCameraData();
cameraData.cameraStack.Add(myOverlayCamera);

將多個相機渲染到一個目標

在通用渲染管線(URP)中,多個基礎相機或相機堆??梢凿秩镜酵讳秩灸繕恕_@使你可以創(chuàng)建例如分屏渲染的效果。

如果有多個基礎相機或相機堆棧渲染到渲染目標的同一區(qū)域,則Unity會多次繪制重疊區(qū)域中的每個像素。最高優(yōu)先級的基礎相機或相機堆棧最后繪制。

你可以使用基礎相機的輸出目標屬性來定義渲染目標,并使用視口矩形(Viewport Rect)屬性來定義要渲染到的渲染目標的區(qū)域。

設置分屏渲染

在URP中設置分屏渲染

  • 在場景中創(chuàng)建相機。其渲染模式默認為Base,使其成為Base Camera。
  • 選擇相機。在Inspector中,滾動到Output部分。將Viewport的值更改為以下值:
    X:0
    Y:0
    Width:0.5
    Height:1
  • 在場景中創(chuàng)建另一個相機。其渲染模式默認為Base,使其成為Base Camera。
  • 選擇相機。在Inspector中,滾動到Output部分。將Viewport Rect的值更改為以下值:
    X:0.5
    Y:0
    Width:0.5
    Height:1

Unity將第一個Camera渲染到屏幕的左側(cè),將第二個Camera渲染到屏幕的右側(cè)。

你可以通過設置其rect屬性,在腳本中更改相機的視口矩形,如下所示:

myUniversalAdditionalCameraData.rect = new Rect(0.5f, 0f, 0.5f, 0f);

渲染到RenderTexture

在通用渲染管線(URP)中,相機可以渲染到屏幕或RenderTexture(渲染紋理)。渲染到屏幕是默認設置,也是最常見的用例,但是渲染到RenderTexture可讓你創(chuàng)建如CCTV相機監(jiān)視器的效果。

如果你有要渲染為RenderTexture的相機,則必須有第二個相機,然后再將該RenderTexture渲染到屏幕上。在URP中,所有渲染到RenderTexture的相機都在所有渲染到屏幕的相機之前執(zhí)行其渲染循環(huán)。這樣可以確保RenderTexture已準備好渲染到屏幕上。

渲染到RenderTexture,然后將該RenderTexture渲染到屏幕。

在URP中渲染到RenderTexture

  • 使用Assets > Create > Render Texture在項目中創(chuàng)建Render Texture資產(chǎn)。
  • 在場景中創(chuàng)建一個Quad。
  • 在你的項目中創(chuàng)建一個材質(zhì),然后選擇它。在Inspector中,將RenderTexture拖動到材質(zhì)的BaseMap字段。
  • 在Scene視圖中,將材質(zhì)拖到Quad上。
  • 在場景中創(chuàng)建相機,其渲染模式默認為Base,使其成為Base Camera。
  • 選擇基礎相機。在Inspector中,滾動到Output部分,然后將Render Texture拖到Output Texture字段。
  • 在場景中創(chuàng)建另一個相機。它的渲染模式默認為Base,使其成為Base Camera,將Quad放置在新Base Camera的視圖內(nèi)。

第一臺Camera將其視圖渲染到RenderTexture。第二臺相機將包括RenderTexture的場景渲染到屏幕上。

你可以通過設置cameraOutput相機的UniversalAdditionalCameraData組件的屬性,在腳本中設置相機的Output,如下所示:

myUniversalAdditionalCameraData.cameraOutput = CameraOutput.Texture;
myCamera.targetTexture = myRenderTexture;


本文轉(zhuǎn)自:Unity官方平臺 ,作者:鄭洪智,轉(zhuǎn)載此文目的在于傳遞更多信息,版權歸原作者所有。

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1491次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  95次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關電源原理及各功能電路詳解
  10. 0.38 MB  |  11次下載  |  免費
  11. 6100W短波放大電路圖
  12. 0.05 MB  |  4次下載  |  3 積分
  13. 7基于單片機和 SG3525的程控開關電源設計
  14. 0.23 MB  |  4次下載  |  免費
  15. 8基于AT89C2051/4051單片機編程器的實驗
  16. 0.11 MB  |  4次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業(yè)版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關電源設計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537793次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費