UnityAPI的学习——Camera类

  Camera类用来控制游戏中虚拟场景的展示,以左下角为屏幕的(0,0)点坐标,以右上角为屏幕的(camera.pixelWidth,camera.pixelHeight)点坐标。
如果用单位化方式表示,则左下角为(0,0)点,右上角为(1,1)点。

Camera类实例属性
在Camera类中,涉及的实例属性有aspect、cameraToWorldMatrix、cullingMask、eventMask、layerCullDistances、layerCullSpherical、orthographic、pixelRect、projectionMatrix、rect、renderingPath、targetTexure和worldToCameraMatrix。


aspect属性:设置摄像机视口比例

public float aspect{get;set;}

功能:此属性用于获取或设置Camera视口的宽高比例值
aspect只处理摄像机Camera可以看到的视图的宽高比例,而硬件显示屏的作用只是把摄像机Camera看到的内容显示出来

cameraToWorldMatrix属性:变化矩阵

public Matrix4x4 cameraToWorldMatrix{get;}

功能:此属性的功能是返回从摄像机的局部坐标系到世界坐标系的变化矩阵(只读)

Camera中的forward方向为其自身坐标系的-z轴方向,一般其他GameObject对象的forward方向为自身坐标系的z轴方向

cullingMask属性:摄像机按层渲染

public int cullingMask{get;set;}

功能 :此属性用于按层(即GameObject.layer)有选择性地渲染场景中的物体。通过cullingMask可以使得当前摄像机有选择性地渲染场景中的部分物体,默认cullingMask=-1即渲染场景中任何层物体,当cullingMask=0时不渲染场景中任何层,若只渲染分别位于2、3、4层的物体,则可以使用代码cullingMask=(1<<2)+(1<<3)+(1<<4)来实现。

eventMask属性:按层响应事件

public int eventMask{get;set;}

功能:此属性的功能是选择哪个层(layer)的物体可以响应鼠标事件

layerCullDistances属性:层消隐的距离

public float[] layerCullDistances{get;set;}

功能:此属性用来设置摄像机基于层的消隐距离。摄像机可以通过基于层(GameObject.layer)的方式来设置不同层物体的消隐距离,但这个距离必须小于或等于摄像机的farClipPlane才有效。

layerCullSpherical属性:基于球面距离剔除

public bool layerCullSpherical{get;set;}

功能:此属性用于设置摄像机在基于层剔除物体时,是否采用基于球面距离的剔除方式。此属性默认值为false,既不使用球面剔除方式

orthographic属性:摄像机投影模式

public bool orthographic{get;set;}

功能: 此属性用于获取或设置当前摄像机的投影模式,投影模式包括正交投影模式(orthographic)和透视投影模式(perspective)。若值为true则为正交投影,反之为透视透影。

pixelRect属性:摄像机渲染区间

public Rect pixelRect{get;set;}

功能:此属性用于设置camera被渲染到屏幕中的坐标位置。pixelRect与属性rect功能类似。

projectionMatrix属性:自定义投影矩阵

public Matrix4x4 projectionMatrix{get;set;}

功能:此属性的功能是设置摄像机的自定义投影矩阵。此属性常在一些特效场景喜爱用到,在切换变化矩阵时通常需要先用camera.ResetProjectMatrix()重置camera的变化矩阵。

rect属性:摄像机视图的位置和大小

public Rect rect{get;set;}

功能:此属性使用单位化坐标系的方式来设置当前摄像机的视图位置和大小

renderingPath属性:渲染路径

public RenderingPath renderingPath{get;set;}

功能:此属性用于获取或设置摄像机的渲染路径。Unity中渲染路径RenderingPath为枚举类型

targetTexture属性:目标渲染纹理

public RenderTexture targetTexture{get;set;}

功能:调用Camera此属性可以生成目标渲染纹理(专业版)

worldToCameraMatrix属性:变换矩阵

public Matrix4x4 worldToCameraMatrix{get;set;}

功能:此属性的功能是返回或设置从世界坐标系到当前Camera自身坐标系的变化矩阵。

2、Camera类实例方法

在Camera类中,涉及的实例方法有RenderToCubmap、RenderWithShader、ScreenPointToRay、ScreenToViewportPoint、ScreenToWorldPoint、SetTargetBuffers、ViewportPointToRay、ViewportToWorldPoint、WorldToScreenPoint和WorldToViewportPoint。

RenderToCubmap:生成Cubemap静态贴图
RenderWithShader:使用其他shader渲染
ScreenPointToRay:近视口到屏幕的射线
ScreenToViewportPoint:坐标系转换
ScreenToWorldPoint:坐标系转换
SetTargetBuffers:重设摄像机到TargetTexture的渲染
ViewportPointToRay:近视口到屏幕的射线
ViewportToWorldPoint:坐标点的坐标系转换
WorldToScreenPoint:坐标点的坐标系转换
WorldToViewportPoint:坐标点的坐标系转换

关于Camera视口、aspect、pixelRect、rect的关系注解

Camera视口用来记录当前摄像机能看到场景中的哪些内容,其大小及位置是可以改变的。

Unity的Game面板中的aspect选项是用来模拟硬件屏幕

在Camera.aspect固定的情况下,无论选择Game视图中哪些屏幕模拟方式,它们的显示内容都是相同的

PixelRect和Rect功能类似,都是决定硬件显示屏如何显示Camera视口提供的内容的。不同的是PixelRect以实际像素来展示显示内容,而Rect以单位化形式来展示显示内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值