当前位置: 首页 > article >正文

Unity 摄像机(Camera)详解

文章目录

  • 0.前言
  • 1.相机属性介绍
  • 2.Unity 中多个相机画面堆叠显示
    • 2.1 3D 摄像机
    • 2.2 UI 摄像机
    • 2.3 摄像机的Culling Mask设置

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:视野范围的大小
  • 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 摄像机:
在这里插入图片描述


http://www.kler.cn/a/298618.html

相关文章:

  • C++ 入门第23天:Lambda 表达式与标准库算法入门
  • 基于Python的投资组合收益率与波动率的数据分析
  • HackMyVM-Again靶机的测试报告
  • Transformer 和 Attention机制入门
  • 数据结构与算法之二叉树: LeetCode 107. 二叉树的层序遍历 II (Ts版)
  • xml-dota-yolo数据集格式转换
  • 牛客小白月赛100(下)
  • 计算机知识科普问答--6 (26-30)
  • 使用lspci命令获取加速卡型号
  • 【编程底层思考】导致Spring事务失效的场景示例与原因分析,以及如何避免事务失效
  • SpringCloud nacos
  • 【Kubernetes知识点问答题】资源配额 / 访问控制
  • 服务器重装系统,数据备份 容器备份
  • vue页面使用自定义字体
  • Mysql基础练习题 1527.患某种疾病的患者 (力扣)
  • Vue组件:混入
  • C语言文件操作全攻略:从打开fopen到读写r,w,一网打尽
  • Redis基本类型常用命令练习
  • [CTF夺旗赛] CTFshow Web1-12 详细过程保姆级教程~
  • uniapp微信小程序开发踩坑日记:Pinia持久化报错Cannot read property ‘localStorage‘ of undefined
  • Spark MLlib模型训练—文本算法 LDA(Latent Dirichlet Allocation)
  • DNS解析与网络通信中的套接字与协议栈工作机制详解
  • Linux 进程等待与替换
  • 算法【宽度优先遍历及其扩展】
  • vim 快捷命令
  • react js 笔记 1