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

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.lryc.cn/news/434705.html

相关文章:

  • 数学基础 -- 线性代数之LU分解
  • 高职人工智能训练师边缘计算实训室解决方案
  • 【Java】SpringCloud中使用set方法报错空指针
  • 芯片杂谈 -- 常聊的内核包含哪些模块
  • 运维问题0002:SAP多模块问题-SAP系统程序在执行时,跳出“加急快件”窗口,提示:快件文档“更新已终止”从作者***收到
  • 深度解析RAG:你必须要了解的RAG优化方法
  • 深度学习驱动下的字符识别:挑战与创新
  • 使用 JAXB 将内嵌的JAVA对象转换为 xml文件
  • 若依项目后台启动报错: [网关异常处理]、503
  • 【C++ Qt day10】
  • GO HTTP库使用
  • 数据结构 - 顺序表
  • 企业如何组建安全稳定的跨国通信网络?
  • OCR在线识别网站现已上线!
  • 排名再升2位 中国平安位列BrandZ最具价值中国品牌第9位
  • k8s集群部署:环境准备
  • <C++> set、map模拟实现
  • 软考学习 数据结构 查找
  • h264 视频流中添加目标检测的位置、类型信息到SEI帧
  • 大模型api谁家更便宜
  • 代码随想录算法训练营第二十三天| 455. 分发饼干、376. 摆动序列、53. 最大子序和
  • react js 路由 Router
  • AplPost使用
  • 【Qt】Qt与Html网页进行数据交互
  • 教师节特辑:AI绘制的卡通人物,致敬最可爱的人‍
  • SprinBoot+Vue智慧农业专家远程指导系统的设计与实现
  • AI大模型行业专题报告:大模型发展迈入爆发期,开启AI新纪元
  • FLV 格式详解资料整理,关键帧格式解析写入库等等
  • 《深度学习》OpenCV 高阶 图像直方图、掩码图像 参数解析及案例实现
  • coredump-N: stack 消耗完之后,用户自定义信号处理有些问题 sigaltstack