原文地址:http://blog.csdn.net/tanmengwen/article/details/8798231

1.简述两个属性

1.1 Clear Flags 清除标记

每个相机在渲染时会存储颜色和深度信息。屏幕的未绘制部分是空的,默认情况下会显示天空盒。当你使用多个相机时,每一个都将自己的颜色和深度信息存储在缓冲区中,还将积累大量的每个相机的渲染数据。当场景中的任何特定相机进行渲染时,你可以设定清除标记以清除缓冲区信息的不同集合。可以通过下面四个选项之一来完成:

1.Skybox 天空盒

这是默认设置。在屏幕上空的部分将显示当前相机的天空盒。如果当前相机没有设置天空盒,它会默认使用渲染设置(在Edit->Render Settings里)中选择的天空盒。然后它将退回使用背景颜色。另外天空盒组件可以添加到相机上。如果你想创建一个新的天空盒,您可以使用本指南

2.Solid Color 纯色

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

3.Depth Only 仅深度

如果你想绘制一个玩家的枪而不让它在环境内部得到裁剪,你要设置一个深度为0的相机来绘制环境,还要另一个深度为1的相机单独绘制武器。该武器相机的清除标记应设置为仅深度。这将保持环境的图形显示在屏幕上,但会丢弃所有关于每个对象在三维空间中的位置的信息。当枪被绘制出来,不透明的部分将完全覆盖任何已绘制的事物,而不管枪到墙之间如何接近。(这部分看起来很费劲)

4.Don't Clear 不清除

该模式不清除任何颜色或深度缓存。其结果是,每帧绘制在下一帧之上,造成涂片效果。这不是用于游戏的典型方式,最好是与自定义着色器一起使用。

1.2 Culling Mask 剔除遮罩

剔除遮罩使用层有选择地渲染一组对象。有关使用层的信息可以在这里找到。

通常好的做法,是把用户界面放到不同的层,然后用一个独立相机单独渲染UI层。

为了使UI显示在其他相机视角的顶部,你还需要设置清除标记为Depth only,并确保UI相机的深度比其他相机高。

2.下面将通过几步演示来展示摄像机该两个属性

一:

首先在Unity场景中创建两个摄像机,分别命名为camera1和camera2;

再在场景中创建一个cube和Sphere作为摄像机的拍摄物体;并让两摄像机都能够拍摄到两个物体。

接着设置camera1的Depth为0,camera2的Depth为1;

你会发现Game窗口将只显示camera2拍摄到的画面;

可见摄像机Depth属性设置相机绘图顺序,具有较大值的相机将被绘制在具有较小值的相机的上面,换言之,一个深度为1的相机将绘制在一个深度为0的相机之上。

二:

Clear Falgs默认Skybox;

将camera2的Clear Falgs设置为Depth Only;

此时你可以看到Game窗口将显示camera1和camera2同时拍摄到的画面

由此可见,要想将多个相机拍摄的画面渲染到同一个画面是很简单的事情,只需要将它们的Clear Falgs设置为Depth Only;但是有一个条件是,它们的Depth都需要比Clear Falgs为Skybox或Solid Color的摄像机的Depth高,这样才可以将多个相机单独拍摄的画面叠加于同一个画面上。

三:

现在的问题是,两个摄像机拍摄的物体是一样的,我该如何让camera1只拍摄场景背景,而camera2只拍摄制定的物体;

在场景中创建一个plane,并设置材质,充满camera1画面,当做场景背景。

接下来,我们要为物体设置层关系。Unity的Layer的概念可以类比PS里面的图层。

首先,添加一个层(Layer),如下图所示,并命名为object;

其次,给物体设置层;如图将sphere物体的层设为object层;同样cube的层也设置为object层。

最后你将设置两个摄像机的culling mask 属性,以使摄像机渲染指定层物体。

摄像机的cullingmask默认为Everything,表明渲染所有层的物体。

Camera1:将culling mask里面的object层勾去掉,culling mask将显示为Mixed… ;你将发现Camera1的窗口将只显示背景图片,物体没有被渲染。

Camera2:在culling mask选项里面先勾选Nothing,再勾选object层,表明该摄像机只渲染属于object的东西,将不会拍摄到别的图层。

最后,在Game窗口看到两个摄像机叠加的画面;

四:

至此,我们明白了摄像机的Depth、Clear Falgs和Culling Mask的强大作用。

同样的,如果是制作游戏,你可以创建一个界面摄像机,单独渲染界面,而别的摄像机将渲染场景。你只需要添加UI图层,将所有的界面物体的Layer设置为UI,UI摄像机的Culling Mask也只勾选UI层。

上面的Game窗口视图,为三个摄像机拍摄的画面叠加而成。

 

由于本博文上传的图片丢失,故将文档上传,下载地址:http://download.csdn.net/detail/tanmengwen/5255294
转载:http://blog.csdn.net/tanmengwen/article/details/8798231

Unity 摄像机Clear Flags和Culling Mask属性用途详解的更多相关文章

  1. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

  2. CSS定位属性Position详解

    CSS中最常用的布局类属性,一个是Float(CSS浮动属性Float详解),另一个就是CSS定位属性Position. 1. position:static 所有元素的默认定位都是:position ...

  3. html5的float属性超详解(display,position, float)(文本流)

    html5的float属性超详解(display,position, float)(文本流) 一.总结 1.文本流: 2.float和绝对定位都不占文本流的位置 3.普通流是默认定位方式,就是依次按照 ...

  4. CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)

    CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)   在CSS3中,可以利用transform功能来实现文字或图像的旋转.缩放.倾 ...

  5. CSS3教程:pointer-events属性值详解 阻止穿透点击

    转:http://www.poluoluo.com/jzxy/201109/142876.html 在某个项目中,很多元素需要定位在一个地图层上面,这里就要用到很多绝对定位或者相对定位的元素,但是这样 ...

  6. js原生之scrollTop、offsetHeight和offsetTop等属性用法详解

    scrollTop.offsetHeight和offsetTop等属性用法详解:标题中的几个相关相关属性在网页中有这大量的应用,尤其是在运动框架中,但是由于有些属性相互之间的概念比较混杂或者浏览器兼容 ...

  7. Android——TextView属性XML详解

    Android_TextView属性XML详解 博客分类: android   属性名称    描述 android:autoLink    设置是否当文本为URL链接/email/电话号码/map时 ...

  8. scrollTop、offsetHeight和offsetTop等属性用法详解--转转转

    scrollTop.offsetHeight和offsetTop等属性用法详解: 标题中的几个相关相关属性在网页中有这大量的应用,尤其是在运动框架中,但是由于有些属性相互之间的概念比较混杂或者浏览器兼 ...

  9. pointer-events属性值详解

    其实早知道这个属性,但是一直没有去研究过.今天正好在twitter看到这个词,就去研究了下,正好解决了目前遇到的一个小难题,所以分享下.嗯,其实这是个比较简单的CSS3属性. 在某个项目中,很多元素需 ...

随机推荐

  1. Javascript设置广告和时间表和数组的学习

    <html> <head> <meta charset="utf-8"> <title></title> </he ...

  2. 教你如何删除WIN7系统文件以及无法删除的文件

    http://jingyan.baidu.com/article/2f9b480d6d42ce41cb6cc2cc.html 我不怎么会说话,就简单明了的说吧!当我们想删除一个文件时提示无法删除,有些 ...

  3. gearman mysql udf

    gearman安装 apt-get install gearman gearman-server libgearman-dev 配置bindip /etc/defalut/gearman-job-se ...

  4. linux云主机怎么安装WDCP

    linux云主机 教你成功安装WDCP的2个方法(第一个不成功就试第2个) 工具/原料   Xshell 云服务器 方法/步骤   1 先用Xshell连接你的服务器 2 输入一下代码    wget ...

  5. Spring3 整合Hibernate3.5 动态切换SessionFactory (切换数据库方言)

    一.缘由 上一篇文章Spring3.3 整合 Hibernate3.MyBatis3.2 配置多数据源/动态切换数据源 方法介绍到了怎么样在Sping.MyBatis.Hibernate整合的应用中动 ...

  6. 神舟K650c i7(W350STQ)上成功装好Mac OS X 10.9,兼谈如何安装WinXP、7、8.1、OSX、Ubuntu五系统(Chameleon、MBR)

    作者:zyl910 参考教程——http://bbs.pcbeta.com/viewthread-1432534-1-4.html笔记本SNB和IVY平台Win7/Win8/Win8.1安装OS X ...

  7. Skyline6.5系列覆盖三维地理信息产业上下游

    SkylineGlobe将于近日推出6.5 系列产品.该系列产品提供从产业链上游影像处理.中游二三维展示分析.下游具体业务应用等覆盖整个三维空间地理信息产业链的一体化.一站式产品与服务. Skylin ...

  8. java观察者模式的实现

    在看博客里,有个订阅功能,当你订阅后,当博主发布新的博客,你都能收到消息.这是如何实现的?是不是后台有个线程在不停的轮询?如果是这样的话,显然太耗资源,如果当博客在发布时,找到所有的订阅者,然后循环的 ...

  9. 每日英语:The Secret About Online Ad Traffic: One-Third Is Bogus

    Billions of dollars are flowing into online advertising. But marketers also are confronting an uncom ...

  10. centos7 Linux 安装mysql

    安装过程如: http://blog.csdn.net/tengdazhang770960436/article/details/18361979 中间过程出现无法安装mysql-server 解决方 ...