小白_Unity引擎_詳細Camera以及代碼設置


 

 

  Cemera攝像機:

Unity主要核心組件之一。顯示場景中,攝像機照射部分,是向玩家捕獲和顯示世界的設備。

1.

ClearFlags :清除標記。顯示背景內容,默認為天空盒子

  代碼設置:

   m_Camera.GetComponent<Camera>().clearFlags = CameraClearFlags.Skybox;

   如果沒有指定天空盒子,在屏幕顯示默認背景色。
        Solic Color:空白處將顯示默認此處設置背景色
        Depth Only:僅深度,該模式用於對象不被裁剪。
        Dont Clear :不清除,該模式不清除任何顏色或深度緩存,但這樣每幀渲染的結果都會疊加在下一幀上。

       選Depth Only的效果:

 

如何實現看到后邊的小圓球呢?

再創建一個攝像機Camera2,兩個攝像機都設置為Depth Only,小圓球創建一個Layer層 layer1,設置Camera2的CullingMask為層設置為layer1,

並且Camera2的深度比Camera1的深度大。

 原因:每個攝像機賦予不同的深度值。攝像機是從低深度值到高深度值次序繪制,一個深度值為2的攝像機將會在深度為1的攝像機繪制完成后再繪制。

 

 

 

 設置Dont Clear: 不清除任何顏色或深度緩存,但這樣每幀渲染的結果都會疊加在下一幀上。

程序運行后,看到這樣的效果

 

 

第二。Background: 背景顏色(屬性)

設置獲取背景色代碼

1         Color c =   m_Camera.GetComponent<Camera>().backgroundColor;
2        m_Camera.GetComponent<Camera>().backgroundColor = Color.red; //設置背景顏色    
View Code

 

第三。Culling Mask:剔除遮罩,顯示某些層(去掉不顯示的層)

    

 

第四。Projection: 攝像機投射方式

   perspective透視:以3D方式觀察物體 特點:近大遠小
        Orthographic正交:以2D方式觀察物體(沒有近大遠小效果)

 

第五。Field of view 視野范圍

 

1      //  public float fieldOfView { get; set; }  屬性
2        m_Camera.GetComponent<Camera>().fieldOfView = 12;
3        float num2 =  m_Camera.GetComponent<Camera>().fieldOfView;

 

第六。Clipping Planes 剪切面。 攝像機渲染的距離

  Near:最近點, Far:最遠點

   

 

 第七。.Viewport Rece: 可控制視窗的偏移量

Vewport Rect: 設置 0-1 ,左下角為原點

第八。Depth:攝像機深度

1   //  攝像機深度(若存在若干攝像機,則渲染數值越小的攝像機畫面渲染越早,在最后面
2         m_Camera.GetComponent<Camera>().depth = 12;
3         float num3 =   m_Camera.GetComponent<Camera>().depth         

 

第九。Rendering Path: 渲染路徑。設定攝像機渲染方法

 

1  //獲取渲染路徑
2         RenderingPath rp = m_Camera.GetComponent<Camera>().renderingPath;
3         //設置渲染路徑
4         m_Camera.GetComponent<Camera>().renderingPath = RenderingPath.DeferredLighting;

 渲染路徑四種方式:

Use Player Settings:使用Project Settings>Player中的設置
 Vertex Lit:頂點光照,將所有的對象做為頂點光照對象來渲染
 Forward:快速渲染,攝像機將對所有對象按每種材質一個通道的方式來渲染。
DeferredLighting:延遲光照,先對所有對象進行一次無光照渲染,用屏幕空間大小的Buffer保存幾何體的深度、法線以及高光強度,生成的Buffer將用於計算光照,同時生成一張新的光照信息Buffer。最后所有對象再次被渲染,渲染時疊加光照信息BUffer的內容

 第十:Target Texture: 目標貼圖紋理

原理::就是將此攝像機攝像的畫面影響實時打在一張指定的目標貼圖上,

此時,這張貼圖存有這個攝像機所攝的實況轉播信息了,則此貼圖可以隨便放在某個Plane地板或者UI界面中

簡單制作演示過程:

創建一個貼圖紋理 :

 

 

 

最后看效果:gif錄制不是很清晰。

左側是Plane。移動攝像機,右下角攝像機攝到的內容和Plane中的一樣

 

 

第十一: Occlusion Culling :是否使用遮罩剔除

m_Camera.GetComponent<Camera>().useOcclusionCulling = true;
 bool b =  m_Camera.GetComponent<Camera>().useOcclusionCulling;

 

第十二: HDR: 啟用攝像機高動態范圍渲染,用於啟用攝像機的高動態范圍渲染功能,因為人眼對的范圍的光照強度更為敏感,所有用高動態范圍渲染能讓場景變得更為真實,光照的變化不會顯得太突兀。

  1 m_Camera.GetComponent<Camera>().allowHDR = true; 2 bool b2= m_Camera.GetComponent<Camera>().allowHDR;  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM