0.前言
本文介绍的是使用Unity默认的内置渲染管线
下的Camera组件,使用URP或HDRP则不同。
1.相机属性介绍
- Clear Flags: 清除标记。每个相机在渲染其视图时都会存储颜色和深度信息。屏幕中未绘制的部分为空,默认情况下将显示天空盒。使用多个相机时,每个摄像机都会在缓冲区中存储自己的颜色和深度信息,随着每个相机渲染而累积越来越多数据。场景中的任何特定相机渲染其视图时,可以指定清除标记来清除不同的缓冲区信息集合。
- Skybox:天空盒,默认项,屏幕的任何空白部分都将显示当前相机的天空盒。(Windows-Rendering-Lighting)
- Solid Color:空白区域以纯色显示,该颜色在摄像机的Background Color中指定
- Depth only:仅深度,该模式用于对象不被裁剪,保留了前一个摄像机的画面,但清除了之前所有的深度信息,可以用于混合两个摄像机看到的画面
- Don’t clear:不清除,此模式既不清除之前渲染的画面,也不清除深度信息。结果是将每帧绘制在下一帧之上,从而产生涂抹效果。此模式通常不用于游戏,更可能与自定义着色器一起使用
- Background: 相机的背景颜色,屏幕中的空白部分将显示相机的背景颜色
- Culling Mask: 剔除遮罩,选择哪个Layer的物体不会被剔除,也即哪个Layer的物体能被相机看见
- Projection: 相机的投影模式,有两种
- Perspective:透视,近大远小,一般用于3D,
视野范围是一个锥体
- FOV Axis:视场角轴向,使用水平还是垂直方向的作为衡量视场角的方向
- Field of view:视锥的宽度
- Orthographic:正交,
视野范围是一个长方体
- Size:视野范围的大小
- Perspective:透视,近大远小,一般用于3D,
- Clipping Planes: 剪裁平面,位于近剪裁平面和远剪裁平面之间的物体能被看见,值为平面与相机的距离
- Viewport Rect: 指定相机的画面位于屏幕中的哪个位置,默认是全屏,采用比例的方式来确定,因此值为0~1,屏幕左下角是(0,0),右上角是(1,1)
- X,Y:表示相机画面的左下角的位置
- W,H:相机画面的长宽,0.5表示屏幕的一半,0.2表示屏幕的0.2
- Depth:深度,表现相机看到的画面在屏幕上的绘制顺序,该值越大绘制越晚,例如,深度为1的相机将遮挡深度为0的相机的画面,我们最后看到的是深度为1的相机的画面
- Target Texture:目标纹理,指相机输出的渲染纹理(也即相机看到的画面),一般默认为空,如果创建Render Texture拖到这里,则相机的渲染纹理将输入到到所创建的渲染纹理中,而不会在屏幕上渲染
- Occlusion Culling:默认使用遮挡剔除,使得位于其他物体后面的物体不会被渲染。通过视锥体可以判断物体是否位于相机视野内,视野外的不被渲染,如果不使用遮挡剔除,视野内的所有物体都会被渲染,而位于其他物体后面的物体本来就看不到,无需渲染。使用遮挡剔除就不用渲染这部分物体了,从而优化渲染速度。遮挡剔除先在编辑器中生成关于场景的数据,产生的数据过程就是烘焙,随后在运行时场景数据被载入内存,相机根据场景数据来确定可以看见什么,也即需要渲染什么物体。因此,运动的物体可以被场景遮挡,但运动的物体不能遮挡场景
- HDR:高动态范围,使用时可以显示比原来更亮或更暗的画面,画面对比度增强,更贴近现实。
- MSAA:采用多重采样抗锯齿
- Allow Dynamic Resolution:是否使用动态分辨率,使用时缩放该相机的所有渲染目标以降低分辨率,从而优化渲染速度
- Target Display:要讲相机画面渲染到哪个显示设备
2.Unity 中多个相机画面堆叠显示
一般3D游戏项目,会创建至少两个摄像机,一个3D摄像机(使用透视视角)
和一个UI摄像机(使用正交视角)
。
2.1 3D 摄像机
2.2 UI 摄像机
2.3 摄像机的Culling Mask设置
3D 摄像机:
UI 摄像机: