Unity常用类—Camera类

一.Camera Comptent:                                                                              2019年 8月3日 星期六


下面总结且借鉴了一些Unity中的Camera组件的描述。如有错误,欢迎指出!!

Clear Flags :清除标识:确定了屏幕哪些部分将被清除,方便多个摄像机画不同的游戏元素

Skybox :天空盒:这是默认设置。屏幕上的任何空的部分将显示当前相机的天空盒。 如果当前的相机没有设置天空盒,它会默认在渲染设置(Render Settings )选择天空盒

 Solid Color :纯色,屏幕上的空白部分将显示当前摄像机的背景色

Depth Only :深度相机,只渲染采集到的画面 如果你想绘制一个玩家的枪,又不让它内部环境被裁剪,你会设置深度为0的相机绘制环境, 和另一个深度为1的相机单独绘制武器。武器相机的清除标志(Clear Flags )应设置 为depth only。

Don't Clear :不清除,此模式不清除颜色或深度缓存。每帧的渲染画面叠加在上一帧画面之上。

Background: 背景色

Culling Mask: 包含或省略要由相机呈现的对象层。在检查器中将图层分配给您的对象。Nothing: 什么层都不剔除Everything: 什么层都剔除Default: 默认层剔除TransparentFX: 隐形层,系统不会渲染贴图和模型Ignore Raycast:射线层剔除Water:水层剔除UI:UI层剔除

Projection:  切换相机的功能来模拟透视。

Perspective(透视):  相机将完整地呈现透视物体。拍摄角度为0-180°(最高)

Field of View:  设置为“正交”时,“相机”的视口大小。

Orthographic(正交): 相机将统一渲染对象,没有视角。注:正交模式下不支持延迟渲染。正向渲染总是被使用。Size:设置为“正交”时,“相机”的视口大小。Cliping Planes:从相机到开始和停止渲染的距离。

    Near :相对于相机的最近点将出现绘图。

    Far  :相对于相机的最远点将出现绘图。

ViewportRect:视口矩形 四个值指示屏幕上的相机视图将被绘制的位置。在视口坐标中测量(值为0-1)。

Depth: 相机的位置按照画图顺序。具有较大值的相机将被绘制在具有较小值的相机之上。

Rendering Path: 用于定义相机将使用什么渲染方法的选项

    Use Graphics Settings: 使用玩家设置:在玩家设置(Player Settings.)相机使用哪个渲染路径。

    Forward:正向渲染:所有对象每材质渲染只渲染一次,快速渲染

    Deferred :延迟照明:所有物体将在无光照的环境渲染一次,然后在渲染队列尾部将物体的光照一起渲染出来。

    Legacy Vertex Lit :顶点光照 :所有被这个相机渲染的物体都将渲染成Vertex-Lit物体。

    Legacy Deferred : 旧的延迟光照

Target Texture : 目标纹理:渲染纹理 (Render Texture)包含相机视图输出。这会使相机渲染在屏幕上的能力被禁止。可用于实现画中画或者画面特效。

Occlusion Culling : 是否剔除物体背向摄像机的部分

Allow HDR:  高动态光照渲染,启动相机高动态范围渲染功能。让场景更真实。

Allow MSAA: 这台相机应该使用MSAA渲染目标吗?如果当前质量设置MSAA级别支持,将只使用MSAA。

Allow Dynamic Resolution:动态分辨率缩放。如果相机使用动态分辨率渲染,则为true,否则为false。即使此属性为true,动态分辨率也只能在当前图形设备支持的情况下使用。

Target Display: 设置此摄像机的目标显示。此设置使摄像机呈现在指定的显示中。显示器(例如监视器)支持的最大数目是8.

二.Camera Properties:


如下是Camera的类的属性,一些静态方法的描述

aspect:获取或者设置Camera视口的宽高比例值,当aspect的值发生改变时,相机的视野也随着aspect的改变而变化

cameraToWorldMatrix: 从相机空间的转换到世界空间的矩阵,相机的前向为负z轴,通过此矩阵转换位置,返回当前任意矩阵转换的位置,可以用来处理投影变换

Vector3: 对应的本地坐标系的转换

Transform: 对应的世界坐标系的转换

cullingMask: 按照层级进行渲染,该属性用于按照层级有选择性的渲染场景中的物体。通过cullingMask可以使得当前摄像机有选择性的渲染场景中的部分物体

cullingMask = -1 :渲染任何层级

cullingMask = 0 :不渲染任何层级

Layer层级::deafult层和TransparentFX是从0开始计算的,Ignore Raycast:忽略射线检测,4:Water,从该层开始,cullingMask =第几层就渲染第几层的物体,如果需要渲染多个层级的物体,就可以用左移运算符,如要渲染第8层可以用 1+(1<<8),而且layer的层级是通过2的几次幂进行计算的,如2的0次幂等于1,哪就是第一层也是就是默认层

eventMask:按照层级响应事件,选择哪个层级的物体可以响应鼠标事件

1.必须满足的两个条件:

A:物体必须在摄像机视野内

B:Ignore Raycast层,无论evenMask的值为多少,都不会响应鼠标事件,在2的layer次方的值以eventMask进行与运算(&)结果依旧为2的layer次方的值会响应鼠标事件,如果想要多个不同层的物体响应鼠标事件,则需要把所有的层2的layer次方的值相加,在与eventMask进行与运算。例如,2个物体,layer值分别为1,3,当event与9进行与运算后结果仍为9,则这两个物体都会响应鼠标事件。

layerCulldistances:设置相机基于层的消隐距离,当设置层级的物体的距离相机到一定距离后,相机就会停止渲染

layerCullSphericla: 球面距离剔除这个属性用于设置相机在基于层剔除物体时,是否采用基于球面距离的剔除方式。默认为false,表示只要有一点没有超过物体所在的层的远视平面口,物体就是可见的,当设置为true时,只要物体的距离里摄像机的距离大于所在层的剔除距离,物体就会变成不可见

orthographic:   用来设置摄像机的投影模式,Camera的投影模式为正交投影 (orthographic),与透视投影模式(perspective),正交模式主要用于2D场景中,正交模式是非透视模式,远近所看到的物体都是一样大的,而只有透视模式才有近大远小的关系

pixelRect : 摄像机渲染的区间,设置Camera被渲染到屏幕中的坐标位置,以实际像素大小来设置显示视口的位置。

如下图:A为原始平面大小,B为变换后的视口大小,则X0的值为视口右移的像素大小,Y0的值为视口上移的像素大小,w为Camera.pixelWidth,h的值为Camera.pixelHeight。这里要注意:Screen.width和Screen.height为模拟硬件屏幕的宽高值,不随Camera.pixelWidth和Camera.pixelHeight的改变而改变。图片因为上传失败所有就没有!不过大家理解就行了,类似于屏幕中又有一个屏幕!

projectionMatrix: 自定义投影矩阵,该属性的功能是设置摄像机的自定义投影矩阵,此属性常在一些特效场景下用到,在切换变换矩阵是通常需要先用,Camera.ResetProjectionMatrix()重置Camera的变换矩阵。

renderingPath:渲染路径,用于获取和设置摄像机的渲染路径,RenderPathing为枚举类型。

A: VertexLit:使用顶点光照。最低消耗的渲染路径,不支持实时阴影,适用于移动及老式设备。

B: forward:使用正向光照,基于着色器的渲染路径。支持逐像素计算光照(包括法线贴图和灯光Cookies)和来自一个平行光的实时阴影。

C: DeferredLighting:使用延迟光照,支持实时阴影,计算消耗大,对硬件要求高,不支持移动设备,仅专业版可用。

D:  Use Graphics Settings 使用玩家设置:在玩家设置(Player Settings.)相机使用哪个渲染路径。

worldToCameraMatrix:  从世界空间转换到相机空间,可以用于切换场景,重设矩阵时,摄像机的Transform组件数据不会同步更新。如果想回到Transform的可控状态,需要调用ResetWorldToCameraMatrix方法重置摄像机旋转矩阵。

renderToCubeMap:生成CubeMap静态贴图,这用于特殊效果,例如渲染整个场景的屏幕空间正常缓冲区,热视觉等。要使用此功能,通常需要创建一个摄像头并禁用它。然后在上面调用RenderWithShader

renderWithShader:  使用其他shader渲染

使用指定shader来代替当前物体的shader渲染一帧。当replacementTag为空时会替换视口中所有物体的shader

SetReplacementShader:使用指定的shader来替换物体当前的shader,被替换后每一帧都会替换shader来渲染物体,与上面的方法刚好不同

ScreenToViewPortPoint:坐标系转换,实现坐标点从屏幕坐标系向摄像机视口的单元化坐标系转换。但是是像素

ScreenPointToRay:  由相机近视口到屏幕的射线

ScreenToworldPoint :  坐标系转换,从屏幕坐标系到世界坐标系,实际单位像素组值,而非比例值。

viewPortToWorldpoint:视口坐标点向世界坐标点转换。此方法的返回值受当前摄像机在世界坐标系的位置Camera的FieldOfView的值以及Position的共同影响

WorldToScreenPoint:世界坐标转成屏幕坐标。

WorldToViewPoint:从世界坐标转换屏幕单位化坐标中。

SetTargetBuffers: 重设摄像机到TargetTexture的渲染,SetTargetBuffers(RenderBuffer colorBuffer,RenderBuffer depthBuffer)其中参数ColorBuffer为纹理颜色缓存,depthBuffer为纹理的深度缓存。SetTargetBuffers(RenderBuffer [] colorBuffer,RenderBuffer depthBuffer)其中参数ColorBuffer为纹理颜色缓存,depthBuffer为纹理的深度缓存,这个方法可以将摄像机的渲染一次赋给多个colorBuffer.

以上文章如有不妥之处,欢迎指出!下面我会总结一下Unity里面的Trasform类!

你可能感兴趣的:(Unity常用类—Camera类)