一.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类!