Camera
前言
工作中遇到了和Camera有关的问题,虽然最终通过百度解决,但是对于Camera还是一知半解,并且Camera在Unity中经常用到,非常重要,于是查询相关API并且亲自操作,有了以下这篇文章。
Camera属性一览
Clear Flags
Determines which parts of the screen will be cleared. This is handy when using multiple Cameras to draw different game elements.
确定屏幕哪些地方被清除。当使用多个摄像机绘制不同的游戏元素时,这是非常方便的。(官方描述机翻)
个人感觉官方描述很抽象,不好理解,说大白话,即没有物体的地方你希望怎么渲染?
有四个选项:
Skybox:
空白的地方渲染默认的天空盒。
Solid color:
空白的位置渲染为纯色。
Depth only:
空白的地方什么都不渲染,爷任性,爷只想渲染爷需要的。
Dont’Clear:
不要清理任何一帧画面,在原来的基础上渲染每一帧。
Culling Mask
要渲染的图层,每个物体都可以设置一个layer,Camera可以通过设置Culling Mask来决定渲染哪些物体。
Projection
Camera渲染物体的方式、分为两种,一种透视渲染(模拟人眼),一种均匀渲染。如下图。
Perspective:透视模式。
File of View:相机视角的宽度,以度为单位沿局部Y轴测量。
Orthographic:正交模式
Size:当设置为正交时摄像机的视口大小。
图上的小球与正方体斜对着Camera,在透视模式中小球会遮挡方块,因为模仿人的眼睛看过去被遮挡,非透视模式则没有类似人眼遮挡效果。
Clipping Planes
Near/Far:渲染的最近最远距离,如下图:
Viewport Rect
Four values that indicate where on the screen this camera view will be drawn. Measured in Viewport Coordinates (values 0–1).
通过四个值可以更改Camera的内容显示位置。
X、Y表示Camera绘制的起点位置,左下角为0、右上角为1。都设置为0.5的时候如下图所示:
是不是有点像以前玩的CS/CF中的地图,没错,使用多个摄像头就可以实现这个效果,具体如何实现的等讲到depth时详细说明。效果如下图所示:
W、H表示Camera内容的宽高:都为0.5时。效果如下图所示。
PS:W、H的值不会因为X、Y值改变而改变。
举个例子:此时X、Y都为0.5,显示的为右上角部分,如果想让右上角X轴上只显示一半,此时需要将W改为0.25,而不是0.5。
Depth
深度值,当使用多个Camera的时候会用到这一项,深度值高的Camera的内容会覆盖深度值低的内容,例如CS/CF中的枪、雷达地图永远显示在最前方,就是因为深度值高的Camera后渲染出来,并覆盖已有的内容。此时Clear Flags需要设置为Depth Only,使用Sky box 或者 Solid Color会将不需要覆盖的地方填充为天空盒或者纯颜色。具体可以参考这边文章多Camera的使用。
Rendering Paths
官方介绍该属性主要是影响光照与阴影。
工作中没有遇到相关问题,等以后遇到相关问题在总结,目前知识储备不够不足以总结相关知识,在此就不献丑了。
Target Texture
Reference to a Render Texture that will contain the output of the Camera view. Setting this reference will disable this Camera’s capability to render to the screen.
引用渲染纹理,该纹理将包含相机视图的输出。设置此引用将禁用此相机向屏幕呈现的功能。
理解起来比较抽象,目前知道的是可以通过camera.targetTexture与RenderTexture搭配获取相机屏幕截图。使用案例——Camera截图方法
Occlusion Culling
遮挡剔除,unity优化相关的,具体可以参考Unity3D-游戏场景优化之遮挡剔除(Occlusion Culling)的使用。工作中暂时没用到,以后如果有时间回来总结。
其余项
Allow HDR:是否支持这个相机的高动态范围渲染。
Allow MSAA:是否使用MSAA渲染目标;只有在当前质量设置MSAA级别支持的情况下才会使用MSAA。
Allow Dynamic Resolution:是否使用动态分辨率缩放。
上面三项没有用过,不知道实际效果,以后如果有机会用到回来总结。
Target Display:目标显示;定义要呈现的外部设备。1 - 8。没有用过,通常默认为display1。
至此,把Camera相关属性总结完成,常用的属性已经讲解清楚,如有错误希望大家指出,因为自身实力不够,有一些没讲解清楚,等以后学习用到了再回来总结。
PS:这里是U3D程序员一只,日常分享工作中遇到的问题与学习笔记。