Unity Camera -- (3)控制相机能看到的东西
使用剪裁平面(Clipping Planes)定义相机可视范围
Clipping Planes定义了相机所能看到的场景范围。在有些时候,限制相机所能看到的范围是出于风格上的考量,但编辑Clipping Planes的主要目的是为了优化性能。相机所需要渲染的东西越少,程序的负载就越低。
相机的剪裁平面有两个参数值:near(近平面)和far(远平面)。near定义了离相机最近且还能被相机所渲染的平面所处位置;far则是相反的一个平面。
对于正交投影相机来说,远近平面呈金字塔形状,可以在场景视图中选中了相机后看到:


1. Hierarchy中选中Main Camera,缩放一下场景视图以便能观察到相机整体远近平面的情况。
2. 在Main Camera的Inspector中,修改一下Clipping Planes里的Far参数,从1000改为100,从100改为10,然后从10改为1。观察一下场景视图中相机的远近平面线框的情况以及相机预览窗口的变化。
我们可以看到,随着Far的减小,相机所能看到的东西也跟着减少。原来能够被看到的东西,看不见之后,会用背景做填充(一般是天空盒背景)。
3. 在场景视图中,我们使用移动工具,让相机沿着z轴向前平移。
随着相机的向前平移,我们可以看到之前不可见的物体,到达了Far平面范围内后,会突然跳出来。虽然这种效果可以被刻意用来做一些风格化的需求,但一般来说,在游戏或实时应用要尽量避免。一般我们会设置一个较大的Far值,让用户感受不到这种物体突然消失或突然出现的现象。这里我们将Far设置回默认的1000。
4. 近平面参数Near的意思和Far是类似的,我们也可以调整一下这个参数。但有一个常见的问题是,当角色或某个游戏物体的模型有部分处于近平面外的时候,我们可能会看到物体内部的mesh。

使用culling masks来隐藏或显示物体
如果有一个物体处于相机的Near和Far平面之内,但我们又要隐藏或显示它时该怎么做呢?解决这个问题有多种方法,对于相机来说,有一个culling masks可以用来实现这个功能。
1. 场景视图中,选中红色的胶囊体,按F聚焦。
2. 在胶囊体的Inspector中,选择Layer -> Add Layer, 然后将User Layer6设置为Culled。




修改背景类型
默认情况下,场景会使用一个默认的天空盒作为背景。这个天空盒和Directional Light(也是创建场景时默认的平行光源)是绑定的。这两个物体一起为场景的环境光(ambient light)起到了贡献。虽然天空盒及相关光照是由天空盒的shader和光照属性所决定的,但camera可以管理在场景中天空盒是否可见。
1.调整相机视角,确保相机能够看到天空盒。
2. 在Inspector中,找到Camera组件的Enviroment部分
3. 将Background Type从Skybox修改为Solid Color

5. 点击Background的颜色条,将颜色修改为其他颜色试试,比如绿色。
