《Unity_API解析》 第二章(上) Camera類實例屬性


aspect屬性:設置攝像機視口比例

public float aspect{ get ; set; }
功能說明:此屬性用於獲取或設置Camera視口的寬高比例值。
 
cameraToWorldMatrix屬性:變換矩陣
public Matrix4x4 cameraToWorldMatrix{ get; }
功能說明:此屬性的功能是返回從攝像機的局部坐標系到世界坐標系的變化矩陣。
Camera中的forward方向為其自身坐標系的-z軸方向,一般其他對象的forward方向為自身坐標系的z軸方向。
通過這個屬性,可以獲得一個4x4矩陣,當相機坐標,或角度發生變化時,矩陣的值也發生變化。
 
cullingMask屬性:攝像機按層渲染
public int cullingMask{ get; set; }
功能說明:此屬性用於按層有選擇性的渲染場景中的物體。通過cullingMask可以使得當前攝像機有選擇性地渲染場景總的部分物體,默認cullingMask=-1即渲染場景中任意層物體,當cullingMask=0時不渲染場景中任何層。若只渲染分別位於2、3、4層的物體,則可以使用代碼culling1Mask=(1<<2) + (1<<3)+(1<<4)來實現
 
eventMask屬性:按層響應事件
public int eventMask{ get; set; }
功能說明 此屬性的功能是選擇哪個層的物體可以響應鼠標事件
如果要使物體響應鼠標事件必須滿足:
1.物體在攝像機的視野范圍內。
2.在2的layer次方的值與eventMask進行&運算后結果認為2的layer次方的值。
如果想要多個不同層的物體都響應鼠標事件,則需要把所有層的2的layer次方值想家,在於eventMask做&運算。
當物體的layer選擇IgnoreRaycast時(系統內置,值為2)時,無論eventMask值為多少,物體都無法響應鼠標事件。這個層忽略攝像碰撞。
此屬性的計算特別消耗資源。
 
layerCullDistances屬性:層消隱距離
public float[] layerCullDistances{ get; set; }
功能說明 此屬性用來設置攝像機基於層的消隱距離。攝像機可以通過基於層的方式來設置不同層物體的消隱距離,但這個層必須小於攝像機的farClipPlane(遠裁剪面距離)才有效。
代碼結果,當cube所有面的距離都大於層消隱距離后,cube消失。
 
layerCullSpherical屬性:基於球面距離剔除
public bool layerCullSpherical{ get; set; }
功能說明 此屬性用於設置攝像機在基於層剔除物體時,是否采用基於球面距離的剔除方式,此屬性默認值為false,此時,只要物體表面有一點沒有超出物體所在層的遠視口平面,物體可見。當為true,只要物體的世界坐標與攝像機的距離大於所在層剔除距離,物體不可見。
 
orthographic屬性:攝像機投影模式
public bool orthographic{ get; set; }
功能說明 此屬性用於獲取或設置當前攝像機的投影模式,投影模式包括正交投影模式和頭飾投影模式。若值為true則為正交投影。正交投影下,物體在視口中的大小只與正交視口的大小有關,與攝像機到物體的距離無關,主要用於呈現2D效果。而在透視投影模式下,物體在視口中的大小與攝像機的視口夾角以及攝像機與物體的距離都有關系,有遠小近大的效果,主要用來呈現3D效果。
 
pixelRect屬性:攝像機渲染區間
public Rect pixelRect{ get; set; }
功能說明 此屬性用於設置camera被渲染到屏幕中的坐標位置。pixelRect與屬性rect功能類似,不同的是pixelRect以實際像素大小來設置現實視口的位置,而rect以單位化方式設置顯示視口的位置。
 
可以看到攝像機渲染位置變了。
 
projectionMatrix屬性:自定義投影矩陣
public Matrix4x4 projectionMatrix{ get; set;}
功能說明 此屬性的功能是設置攝像機的自定義投影矩陣。此屬性常在一些特效場景下用到,在切換變換矩陣時通常需要先用camera.ResetProjectionMatrix()充值camera的變換矩陣。
 
rect屬性:攝像機視圖的位置和大小
public Rect rect{ get; set; }
功能說明 此屬性使用單位化坐標系的方式來設置當前攝像機的視圖位置和大小。
 
renderingPath屬性:渲染路徑
public RenderingPath renderingPath{ get; set}
功能說明 此屬性用於獲取或設置攝像機的渲染路徑。Unity中渲染路徑RenderingPath為枚舉類型,共有以下4種設置方式
UsePlayerSetting:使用功能中的設置,即Edit - ProjectSettings - Player中各個平台下的設置。
Vetexlit:使用頂點光照,最低消耗的渲染路徑,不支持實時陰影,適用於移動及老式設備。
Forward:使用正向光照,基於着色器的渲染路徑,支持逐像素計算光照和來自一個平行光的實時陰影。
DeferredLighting:使用延時光照,支持實時陰影,計算消耗大,對硬件要求高,不支持移動設備,僅專業版可用。
 
targetTexture屬性:目標渲染紋理
public RenderTexture targetTexture{ get; set; }
功能說明 調用Camera此屬性可以生成目標渲染紋理,僅專業版可用。此屬性的作用是可以把某個攝像機的視圖作為Renderer Texture,然后添加到一個Material對象形成一個新的material,再把這個material賦給一個GameObject對象的Renderer組件,便可以在這個GameObject中實時的看到攝像機中的視圖,此屬性可以用來一些實時跟蹤類功能。
 
worldToCameraMatrix屬性:變換矩陣
public Matrix4x4 worldToCameraMatrix{ get; set; }
此屬性的功能是返回或設置從世界坐標系到當前Camera自身坐標系的變換矩陣,當用camera.worldToCameraMatrix重設攝像機的轉換矩陣時,攝像機對應的Transform組件數據不會同步更新,如果想回到Transform的可控狀態,需要調用ResetWorldToCameraMatrix方法充值攝像機的轉換矩陣。
 


免責聲明!

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



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