原标题:[蛮牛教程] Unity3D 浅析-Camera(摄像机)
今天小编和大家一起学习unity中常用组件Camera,在游戏中Camera就是相当眼睛,通过它来看整个游戏的世界,一切酷炫的景象都需要通过Camera来渲染出来;一个场景需要显示画面,也必须至少有一个Camera;
1.Camera基本属性定义:
1.0 Clear Flags-清除标记,决定屏幕中哪部分被清除,一般用于多台摄像机来绘制不同对象的情况,一般分为三种模式:
1.0.0 Skybox 天空盒(默认项),在屏幕空白处显示当前摄像机的天空盒,如何没有指定天空盒,则会显示默认的背景色;
1.0.1 Solid Color:当没有天空盒的情况下,将默认显示此处设置的背景色;
1.0.2 Depth Only: 相机深度,该模式用于对象不被裁剪,一般用于需要多台相机层的渲染,例如画中画的显示,我们可以用到这个属性;
1.0.3 Don’t Clear: 不清除,该模式不清楚任何颜色或深度缓存,但这样做每帧渲染的结果都会叠加在下一帧之上,一般与自定义的Shader(着色器)配合使用;
1.1 Culling Mask:剔除遮罩,根据对象所指定的层 (layer)来控制渲染的对象;
1.2 Projection:投影方式,分为透视和正交模式
1.2.0 Perspective(透视):相机将用完全透视的方式来渲染对象[物体会近大远小的效果];
1.2.0.0 Field of view:视野范围(透视模式的参数)
1.2.1 Orthographic(正交):相机没有透视感的方式均匀地渲染对象
1.2.0.1 Size:视野大小 (正交模式的参数)
1.3 Clipping Planes:剪裁平面,摄像机渲染的范围,Near为最近的点,Far 为最远的点;
1.4 Viewport Rect: 视图矩形,用四个数值来控制摄像机的视图在屏幕中的位置和大小,使用屏幕坐标系,数值在0~1之间;
X:水平位置起点
Y:垂直位置起点
W:宽度
H:高度
1.5 Death: 深度,用于控制摄像机渲染顺序,一般数值大的摄像机将渲染在较小数值的摄像机上;
1.6 Rendering Path:渲染路径,设定摄像机的渲染方法
1.6.0 Use Player Setting:使用Project Setting>Player 中设置;
1.6.1 Vertex Lit: 顶点光照,将所有的对象作为顶点光照对象来渲染;
1.6.2 Forward:快速渲染,摄像机将所有对象做为顶点光照对象来渲染;
1.6.3 DeferredLighting: 延迟光照,先对所有对象进行一次无光照渲染,用屏幕空间大小的Buffer来保存几何体的深度、法线以及高光强度,生成的Buffer用于计算光照,同时生成一张新的光照信息Buffer,最后所有对象再次渲染,渲染时叠加光照信息Buffer的内容,一般此特性用于专业版;
1.7 Target Texture:目标纹理,包含相机视图输出,但是引用这个属性将禁用相机渲染到屏幕的功能;
1.8 HDR:高动态光照渲染,用于启动摄像机高动态范围渲染功能,因为人眼对范围的光照更为敏感,所有高动态范围渲染能让场景变得更为真实,光照的变化不会显得太突兀;
2.重点提一下Camera中的Aspect Ratios 宽高比
2.0 UI适配,例如不同分辨率的设备,我们需要计算不同的Aspect去做适配,例如UGUI中有一个Aspect Ratio Fitter 去动态做显示适配问题;
2.1 屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度
2.2 一般实际的屏幕分辨率与三个尺寸相关:摄像机尺寸,游戏内容尺寸,实际屏幕尺寸;只要确保游戏的有效内容区域和实际内容区域,当游戏启动时,可以根据实际的屏幕宽高比将摄像机尺寸调整到合适游戏的大小;好吧!在这里简单出一个小例子,在正交模式下,调节orthographicsSize保证游戏内容能正常显示;
2.2.0 新建一个TestCamera.cs组件,并且附加在含有Camera组件的对象上;
2.2.1 TestCamera.cs 代码如下:
责任编辑: