Unity 3D-- 摄像机Clear Flags和Culling Mask属性用途详解

转载 2015年07月10日 13:52:20

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场景中创建两个摄像机,分别命名为camera1camera2

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

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

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

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

二:

Clear Falgs默认Skybox;

         将camera2的Clear Falgs设置为Depth Only;


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


      由此可见,要想将多个相机拍摄的画面渲染到同一个画面是很简单的事情,只需要将它们的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 3D]摄像机Clear Flags和Culling Mask属性用途详解

1.简述两个属性 1.1 Clear Flags 清除标记        每个相机在渲染时会存储颜色和深度信息。屏幕的未绘制部分是空的,默认情况下会显示天空盒。当你使用多个相机时,每一个都将自己的颜...

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

先说说 Clear Flags:Skybox:把颜色缓冲设置为天空盒,并完全清空深度缓冲 Solid:和天空盒一样,只是把颜色缓冲设置为纯色 Depth only:这个选项会保留颜色缓冲,但会清空...

Unity3D:Camera的Clear Flags

要理解Clear Flags,首先来看D3D中的IDirect3DDevice9::Clear方法 HRESULT Clear( [in] DWORD Count, [in] c...

Unity3D 摄像机(Camera)属性详解

摄像机的设备捕获和显示世界玩家。 通过定制和操作相机,你可以使你的游戏真正独特的演讲。 你可以有一个无限数量的摄像机在场景。他们可以在任何顺序集呈现在屏幕上的任何地方,或只有某些部分的屏幕。 Uni...

Unity3D 摄像机(Camera)属性详解

原文链接:http://blog.csdn.net/jbjwpzyl3611421/article/details/12705721正如电影中的镜头用来将故事呈现给观众一样,Unity的相机用来将游戏...

Unity3d Occlusion Culling设置

  • 2012年09月20日 13:04
  • 225KB
  • 下载

Unity3D【脚本】点击物体后屏幕放大 - (射线、坐标的转换、摄像机的移动和改变属性)

using UnityEngine; using System.Collections; public class DParaticle : MonoBehaviour { //摄像机 pu...

[Unity-13] Unity 3D 遮挡剔除(仅专业版) Occlusion Culling (Pro only)

Occlusion Culling is a feature that disables rendering of objects when they are not currently seen...

Unity3d Shader开发(三)Pass(Culling & Depth Testing)

剔除是一种通过避免渲染背对观察者的几何体面来提高性能的优化措施。所有几何体都包含正面和反面。剔除基于大多数对象都是封闭的事实;如果你有一个立方体,你不会看到背离你的那一面(总是只有一面在你的前方),因...
  • Carl180
  • Carl180
  • 2015年02月01日 23:29
  • 490

Unity3D Shader官方教程翻译(七)----Shader语法:Pass的Culling & Depth Testing

ShaderLab syntax: Culling & Depth Testing 语法:面剔除及深度测试     Culling is an optimization ...
  • ldghd
  • ldghd
  • 2012年09月18日 12:19
  • 1169
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity 3D-- 摄像机Clear Flags和Culling Mask属性用途详解
举报原因:
原因补充:

(最多只允许输入30个字)