Unity中的Camera相机组件详解

【组件界面】

Unity中的Camera相机组件详解_第1张图片

【前言】

本文介绍的是使用Unity默认的内置渲染管线下的Camera组件,使用URP或HDRP则不同。

【属性】

  • Clear Flags:清除标记。每个相机在渲染其视图时都会存储颜色和深度信息。屏幕中未绘制的部分为空,默认情况下将显示天空盒。使用多个相机时,每个摄像机都会在缓冲区中存储自己的颜色和深度信息,随着每个相机渲染而累积越来越多数据。场景中的任何特定相机渲染其视图时,可以指定清除标记来清除不同的缓冲区信息集合。

    • Skybox:天空盒,默认项,屏幕的任何空白部分都将显示当前相机的天空盒。

    • Solid Color:表示纯色背景

    • Depth only:仅深度,该模式用于对象不被裁剪

    • Don’t clear:不清除,此模式不会清除颜色或深度缓冲区。结果是将每帧绘制在下一帧之上,从而产生涂抹效果。此模式通常不用于游戏,更可能与自定义着色器一起使用。

  • Background:相机的背景颜色,屏幕中的空白部分将显示相机的背景颜色

  • Culling Mask:剔除遮罩,选择哪个Layer的物体不会被剔除,也即哪个Layer的物体能被相机看见

  • Projection:相机的投影模式,有两种

    • Perspective:透视,默认的模式,也是人眼看世界的模式,一般不用更改。形状呈现为视锥体,如下所示

    • Unity中的Camera相机组件详解_第2张图片

    • Orthographic:正交,相当于相机用看物体的正视图俯视图的视角去看场景,一般在制作小地图的时候会用到。注意使用该相机时,渲染对象只能采用前向渲染,而不支持延迟渲染

  • Size:选择正交相机时,视口的大小

  • FOV Axis:视场角轴向,使用水平还是垂直方向的作为衡量视场角的方向

  • Field of view:视场角(选择透视相机时),以水平方向为例,图中Far Clipping Plane的左右两条边的中心和相机的位置(准确来说是透视中心)共三个点会形成一个夹角,这个夹角就是水平方向的视场角。在Unity中标出来Far Clipping Plane中四条边的中心。视场角增大时能看到更多的物体,所看到的画面越大,但显示器屏幕大小是一定的,因此,对同一个物体,当你增大视场角时,你看到屏幕中这个物体变小了。另外,如果视场角相同,相机靠近物体,则物体看起来变大了,这相当于变相更改了物体的scale。

  • Physical Camera:物理相机,模拟真实的相机的摄像效果

  • Clipping Planes:剪裁平面,位于近剪裁平面和远剪裁平面之间的物体能被看见,值为平面与相机的距离

  • Viewport Rect:指定相机的画面位于屏幕中的哪个位置,默认是全屏,采用比例的方式来确定,因此值为0~1,屏幕左下角是(0,0),右上角是(1,1)

    • ​​​​​​​X,Y:表示相机画面的左下角的位置

    • W,H:相机画面的长宽,0.5表示屏幕的一半,0.2表示屏幕的0.2

  • Depth:深度,表现相机看到的画面在屏幕上的绘制顺序,该值越大绘制越晚,例如,深度为1的相机将遮挡深度为0的相机的画面,我们最后看到的是深度为1的相机的画面

  • Rendering Path:渲染路径,设置相机的渲染方式,使用内置渲染管线时(默认的),一般有前向渲染(默认的)、延迟渲染、旧版顶点渲染、旧版延迟渲染四种。一般不需要更改这一项。

  • Target Texture:目标纹理,指相机输出的渲染纹理(也即相机看到的画面),一般默认为空,如果创建Render Texture拖到这里,则相机的渲染纹理将输入到到所创建的渲染纹理中,而不会在屏幕上渲染。

  • Occlusion Culling:默认使用遮挡剔除,使得位于其他物体后面的物体不会被渲染。通过视锥体可以判断物体是否位于相机视野内,视野外的不被渲染,如果不使用遮挡剔除,视野内的所有物体都会被渲染,而位于其他物体后面的物体本来就看不到,无需渲染。使用遮挡剔除就不用渲染这部分物体了,从而优化渲染速度。遮挡剔除先在编辑器中生成关于场景的数据,产生的数据过程就是烘焙,随后在运行时场景数据被载入内存,相机根据场景数据来确定可以看见什么,也即需要渲染什么物体。因此,运动的物体可以被场景遮挡,但运动的物体不能遮挡场景。

  • HDR:高动态范围,使用时可以显示比原来更亮或更暗的画面,画面对比度增强,更贴近现实。

  • MSAA:采用多重采样抗锯齿

  • Allow Dynamic Resolution:是否使用动态分辨率,使用时缩放该相机的所有渲染目标以降低分辨率,从而优化渲染速度

  • Target Display:要讲相机画面渲染到哪个显示设备

【使用场景】

  • 视角切换:如果仅仅是需要在不同的时机全屏显示两个不同相机的画面,直接更改相机的enbale即可
  • 多画面显示:如果需要在屏幕上显示四个相机的画面,更改每个相机的Viewport Rect
  • 覆盖显示:如果一个相机的画面始终要在另个相机画面之上的某个位置显示,更改相机的Viewport Rect和Depth
  • 相机射线:点击屏幕射击,拾取等实际上是从相机发出了一条射线Ray ray = camera.ScreenPointToRay(Input.mousePosition);

【参考】

Unity - Manual: Camera (unity3d.com)

你可能感兴趣的:(Unity,Camera)