多摄像机层次关系

1.序言

  在u3d中经常需要用到多个摄像机配合使用的情况,比如,UI和特效,再比如UI和场景角色。

2.基础知识

a.远近截面

远近截面指的是摄像机能拍摄到的物体距离摄像机的远近范围区间。该指标对应inspector面板的Clipping Planes:Near,Far。这个参数我试验了一下,对于正交和透视摄像机都是使用的,比如摄像机的坐标是(0,0,0),Far=10,Near=0.3, 坐标(0,0,10)的物体刚好可以看到,坐标(0,0,0.3)的物体刚好能看到,(0,0,11),(0,0,0.2)的物体是看不到的

b.正交摄像机:

 摄像机选项 Projection,选择Orthographic。如果将摄像机设置为正交,那么会出现Size选项,在代码中想获取或者设置使用Camera.orthographicSize。这个size,就是屏幕的height / 2,比如,size是5,那么如果一个物体的高度尺寸是10,那么将正好填满整个屏幕的高度(注意这个是正交摄像机,不是透视摄像机)。另外有个容易忽略的问题,就是U3D可以创建的plane面物体的尺寸是u3d单位10*10(scale是(1,1,1),这个是两回事)。

c.透视摄像机:

透视摄像机有一个自己独有的参数(正交摄像机没有),就是视角,对应Inspector面板的Field of View参数,默认是60度,注意摄像机默认的拍摄方向是世界坐标系的Z轴。

这个视角是另外两个方向,x轴和y轴方向的张开都是60度,是同时调整的(因为现实中的摄像机镜头是圆的啊,我个人理解啊)

d.屏蔽

屏蔽就是摄像机选择性的拍摄某些物体同时忽略其他物体(即使这些物体在摄像机的视野范围之内),对应Inspector面板的参数是Culling Mask,这个参数对正交和透视相机都起作用。里面有一些默认选项,还可以自己添加其他选项。这些选项都是通过位运算来体现的,所以只能有32个。这个选项和GameObject中的Layer 参数是直接相关的。

如果Culling Mask选择nothing ,就不拍摄任何物体,如果选择everything 就拍摄所有物体,如果仅仅选择 a层次,就拍layer层次是a的gameobject,对其他的视而不见。

       e.清除标记

确定了屏幕哪些部分将被清除。这是为了方便使用多个摄像机画不同的游戏元素。对应Inspector面板参数为Clear Flags。看下官方解释(看了下网上翻译,还是要看英文原文,翻译的有问题,严重影响理解):

每个摄像机在渲染场景时会存储颜色和深度的信息。屏幕上没有绘制的部分是空的,并且默认情况下会显示天空盒。当您使用多台摄像机,每个摄像机将自己的颜色和深度信息存储在buffers(这里是复数,那应该是每个摄像机有自己的缓存区)中,在每台摄像机渲染的时候进行叠加(accumulating)。当某个特定的摄像机在你的场景中渲染它的视图(view)的时候,你可以设置Clear Flags,来实现清楚缓存信息的不同集合(different collections of the buffer information)。 这是通过选择四个选项(Skybox,Solid Color,Depth Only,Don't Clear)之一来实现的。

  e.1 skybox

这是默认设置。屏幕上的任何空的部分,将显示当前相机的天空盒。如果当前的相机没有设置天空盒,它会默认在渲染设置中(Render Settings )选择的天空盒(在 Edit->Render Settings可以找到)。它将会变回背景色。另外天空盒组件可以添加到相机上。

e.2 Solid Color (纯色)

屏幕任何空的部分,将显示当前相机背景色。

e.3 Depth Only

如果你想绘制一个角色的枪,还不想让它在环境内部被剪裁,你需要设置一个摄像机来绘制环境,深度为0,同时另一个摄像机来单独绘制武器,深度为1。武器的Clear Flags应当设置为 Depth Only。这将保持环境图形显示在屏幕上,但是抛弃任何出现3D空间物体的部分。当枪绘制的时候,不透明的部分将彻底的覆盖任何绘制,忽略抢到底和墙壁离得有多近(这个意思是说,即使事实上是枪穿过墙壁,也就是说理论上是抢的一部分应该被墙遮挡,但由于摄像机的设置,抢完全在墙壁之上)。

e.4 Don't Clear

该模式不清除任何颜色和深度缓存。这样做的结果是绘制的每一帧在下一帧之上,导致了看起来像涂抹的效果。这不是典型的游戏应用,而更像是应该再自定义着色器中使用。

3.实例探索

a.场景

上面说的差不多了,我们看下实际例子,我们这里添加了3个摄像机,一个平行光,一个Cube,一个Sphere,一个Plane算是背景。如图:


从图中我们可以看出前后顺序分别是,球,平面,和立方体。球的layer分别是a,立方体是b,平面是groud 。这里还做了3个材质球,3种颜色,以方便区分。

b.摄像机

摄像机1,2,3,分别将cullingMask设置成a,b,ground,这样3个这相机分别只能看到3个物体,摄像机1,2是透视摄像机,摄像机3是正交摄像机。3台摄像机的坐标重合,也就是说三个物体都是在摄像机视野内的。摄像机1,2,ClearFlags选择Depth Only,摄像机3选择Solide Color。

如图:




   


3.成像效果

我们看到虽然前后顺序是球体,平面,立方体,但是由于摄像机采用depth only的选项,所以呈现的图像顺序是立方体、球体、平面,完全按照depth的大小顺序来的。最后一个摄像机,也就是Camera3,因为后面没有其他的摄像机了,所以不需要设置成depth only ,可以设置Solid Color

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值