Unity3D 摄像机(Camera)属性详解

本文详细介绍了Unity中的相机系统,包括如何使用不同类型的相机来呈现游戏世界,以及如何通过调整各种属性来实现特定的视觉效果。

正如电影中的镜头用来将故事呈现给观众一样,Unity的相机用来将游戏世界呈现给玩家。你始终至少有一个相机在场景中,你也可以有多个。多相机可以给你一个双人分屏效果或创建高级的自定义效果。你可以让相机动起来,或用物理(组件)控制它们。几乎你能想到的任何事,都可以用相机变成可能,而且为了适合你的游戏风格,你可以用典型的或特殊的相机类型。

摄像机

  相机是为玩家捕捉和显示世界的一种装置。通过定制和操作相机,可以让你的游戏外观与众不同。在一个场景中你可以有数量不限的相机。它们可以被设置为以任何顺序来渲染,在屏幕上的任何地方来渲染,或仅仅渲染屏幕的一部分。



属性

·Clear Flags 清除标记
决定屏幕的哪部分将被清除。当使用多个相机来描绘不同的游戏景象时,利用它是非常方便的 

·Background 背景
在镜头中的所有元素描绘完成且没有天空盒的情况下,将选中的颜色应用到剩余的屏幕 

·Culling Mask 剔除遮罩
包含或忽略相机渲染对象层。在检视视图中为你的对象指派层 

·rojection 投射
切换摄像机的模拟透视功能 

·--> Perspective 透视
相机将用完全透视的方式来渲染对象。 

·--> Orthographic 正交
相机将用没有透视感的方式均匀地渲染对象 

·Size 大小
当设置了正交时摄像机的视口大小。 

·Field of view 视野范围
相机的视角宽度,以及纵向的角度尺寸。 

·Clipping Planes 剪裁平面
从相机到开始渲染和停止渲染之间的距离。 

·--> Near 近点
开始描绘的相对于相机最近的点。 

·--> Far 远点
开始描绘的相对于相机最远的点。 

·归一化视口矩形
用四个数值来表示这个相机的视图将绘制在屏幕的什么地方,使用屏幕坐标系(值0-1)。 

·--> X
相机视图将进行绘制的水平位置的起点 

·--> Y
相机视图将进行绘制的垂直位置的起点 

·--> W (Width) 宽度
相机输出到屏幕上的宽度

·--> H (Height) 高度 

·相机输出到屏幕上的高度

·Depth 深度
绘图顺序中的相机位置,具有较大值的相机将被绘制在具有较小值的相机的上面 

·Rendering Path 渲染路径 
该选项定义相机将要使用的渲染方法 

·--> Use Player Settings
     使用播放器设置 
该相机将使用任意一个播放器设置中所设置的渲染路径

·--> Vertex Lit 顶点光照
本相机对所有对象的渲染会作为顶点光照对象来渲染 

·--> Forward 快速渲染
所有对象将按每种材质一个通道的方式来渲染,如同在Unity2.x中的标准 

·--> Deferred Lighting 延迟照明
所有对象将无照明绘制一次,然后所有对象的照明将一起在渲染队列的末尾被渲染。 

·Target Texture 目标纹理
(Unity Pro/Advanced only)
请参考Render Texture,该页包含了相机视图的输出。这个引用属性将禁用相机渲染到屏幕的功能。 


细节

  相机对于将你的游戏显示给玩家是必不可少的。它们可以被定制、被脚本化、或被子类化以实现几乎任何可以想象的效果。对于一个益智游戏,你要保持相机处于静态显示全部视角。对于第一人称射击游戏,你应该将相机作为玩家角色的子对象,并将其放置在与角色的眼睛等高水平上。对于一个赛车游戏,你可能更希望让相机跟随玩家的车辆。

  你可以创建多个相机并且给每一个分配不同的深度。相机是按深度从低到高来绘制的,换言之,一个深度为2的相机将绘制在一个深度为1的相机之上。你可以调整标准视口矩形(参照前面的属性列表)的属性值来改变其大小和其在屏幕上的位置。这样你就可以创建多个小视窗,如导弹控制器,小地图窗口,后视镜等等。

 

 

Unity3d Camera的Clear Flags、Culling Mask和Depth三个属性的理解

先说说 Clear Flags:

Skybox:把颜色缓冲设置为天空盒,并完全清空深度缓冲 
Solid:和天空盒一样,只是把颜色缓冲设置为纯色 
Depth only:这个选项会保留颜色缓冲,但会清空深度缓冲 
Don’t Clear:不清除任何缓冲 
这个给我的感觉就是,空(没有物体)的部分用什么来填充,如果是Skybox,就用天空盒填充,如果是Solid,就用纯色填充,如果是Depth only取决于其他相机的深度,未渲染部分显示什么由深度小于本摄像机的内容来决定。 
下面放几张图片作为例子:

我们通过看Scene的右下角的Camera Preview来看相机拍摄的场景。

Skybox: 
这里写图片描述 
Solid: 
这里写图片描述 
改变下Solid的背景颜色,发现Camera Preview背景颜色变了: 
这里写图片描述 
Depth Only: 
这是Main Camera的属性,Depth为-1。 
这里写图片描述 
这是Camera属性,Depth为0,Clear Flags为Depth only: 
这里写图片描述 
运行,发现,Camera物体以外的地方全部是Main Camera所拍摄的。 
这里写图片描述 
取消Main Camera,发现只剩下Camera能拍摄到的东西。 
这里写图片描述

关于Culling Mask

Culling Mask是按层(即GameObject.layer)选择性的渲染部分场景。 
当我们Culling Mask是Everything的时候,Scene右下角的Camera Preview会把背景也显示。 
这里写图片描述 
但当我们把Culling Mask设置为只显示UI层的时候,背景这时候就不会显示在此Camera中了。 
这里写图片描述

关于Depth

Depth决定相机在渲染顺序上的深度,具有较低深度的相机将在较高深度的相机之前渲染。 
而如果把Main Camera的Depth设置为2(大于等于Camera的Depth):可以发现,运行后只能看到Main Camera拍摄的东西。 
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值