Unity(2022.3.41LTS) - 摄像机

news2024/11/16 0:43:47

目录

一、基本概念

二、重要属性

三、摄像机模式

四、脚本控制

五、渲染设置

六. 组件详细介绍



一、基本概念

  1. 作用:摄像机决定了玩家在游戏中能够看到的内容。它就像是玩家的眼睛,从特定的位置和角度观察场景,并将场景中的物体渲染到屏幕上。
  2. 类型:
    • 主摄像机(Main Camera):每个场景通常都有一个主摄像机,它是默认的观察视角。主摄像机的设置对游戏的整体视觉效果起着关键作用。
    • 附加摄像机:可以在场景中添加多个附加摄像机,用于实现特定的效果,如分屏显示、小地图等。

二、重要属性

  1. 位置和旋转:
    • 位置决定了摄像机在场景中的坐标。可以通过在编辑器中直接拖动摄像机或者在脚本中修改其 Transform 组件的 position 属性来调整位置。
    • 旋转决定了摄像机的观察方向。可以通过在编辑器中旋转摄像机或者在脚本中修改其 Transform 组件的 rotation 属性来调整旋转。
  2. 视野(Field of View):
    • 对于透视摄像机,视野决定了摄像机的观察范围。较大的视野会显示更多的场景,但可能会导致物体变形。较小的视野则会聚焦在较小的区域,适用于需要特写或瞄准的场景。
    • 可以在 Inspector 面板中直接调整视野的值,也可以在脚本中通过修改 Camera 组件的 fieldOfView 属性来动态改变视野。
  3. 清除标志(Clear Flags):
    • 用于指定摄像机在渲染画面之前如何清除屏幕。有以下几种选项:
      • Skybox:使用天空盒来清除屏幕。这是默认选项,适用于大多数 3D 场景。
      • Solid Color:使用单一颜色来清除屏幕。可以在 Inspector 面板中设置清除的颜色。
      • Depth Only:只清除深度缓冲区,不清除颜色缓冲区。适用于多个摄像机叠加的场景,以避免画面重叠。
      • Don't Clear:不清除屏幕,保留上一帧的画面。这种选项很少使用,可能会导致画面混乱。
  4. 深度(Depth):
    • 摄像机的深度决定了它在渲染顺序中的优先级。深度值较小的摄像机将先渲染,深度值较大的摄像机将在其后渲染。
    • 可以在 Inspector 面板中设置摄像机的深度值,也可以在脚本中通过修改 Camera 组件的 depth 属性来动态改变深度。

三、摄像机模式

  1. 透视模式(Perspective):
    • 模拟人眼的视觉效果,物体近大远小。适用于大多数 3D 游戏,能够营造出立体感和深度感。
    • 可以调整视野、近裁剪平面和远裁剪平面等参数来控制透视效果。
  2. 正交模式(Orthographic):
    • 没有透视效果,物体在各个方向上的大小相同。适用于 2D 游戏或需要精确尺寸显示的场景,如策略游戏、模拟经营游戏等。
    • 可以调整大小(Size)参数来控制正交摄像机的观察范围。

四、脚本控制

可以通过编写脚本来控制摄像机的行为,实现各种动态效果。以下是一些常见的脚本控制方法:

  1. 摄像机跟随:
    • 使摄像机跟随一个特定的目标物体移动,如玩家角色。可以通过计算目标物体的位置和摄像机的位置之间的差值,然后逐渐移动摄像机来实现平滑的跟随效果。
    • 以下是一个简单的摄像机跟随脚本示例
using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    public Transform target;
    public float smoothSpeed = 0.125f;
    public Vector3 offset;

    void LateUpdate()
    {
        Vector3 desiredPosition = target.position + offset;
        Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
        transform.position = smoothedPosition;
        transform.LookAt(target);
    }
}
  1. 摄像机切换:
    • 在不同的场景或情况下切换不同的摄像机视角。可以通过激活和禁用不同的摄像机来实现切换效果。
    • 例如,可以在游戏中设置多个摄像机,分别用于主视角、第三人称视角和小地图视角,然后根据玩家的操作或游戏状态切换不同的摄像机。
    • oldCamera.enable = false;
    • newCamera.enable=true
    • using UnityEngine;
      
      public class ExampleScript : MonoBehaviour {
          public Camera firstPersonCamera;
          public Camera overheadCamera;
      
          // Call this function to disable FPS camera,
          // and enable overhead camera.
          public void ShowOverheadView() {
              firstPersonCamera.enabled = false;
              overheadCamera.enabled = true;
          }
          
          // Call this function to enable FPS camera,
          // and disable overhead camera.
          public void ShowFirstPersonView() {
              firstPersonCamera.enabled = true;
              overheadCamera.enabled = false;
          }
      }

  2. 摄像机震动:
    • 模拟摄像机的震动效果,如爆炸、撞击等。可以通过在脚本中随机改变摄像机的位置和旋转来实现震动效果。
    • 以下是一个简单的摄像机震动脚本示例:
using UnityEngine;

public class CameraShake : MonoBehaviour
{
    public float shakeDuration = 0.5f;
    public float shakeMagnitude = 0.1f;

    private Vector3 originalPosition;
    private Quaternion originalRotation;
    private float shakeTimer = 0f;

    void Start()
    {
        originalPosition = transform.position;
        originalRotation = transform.rotation;
    }

    void Update()
    {
        if (shakeTimer > 0)
        {
            transform.position = originalPosition + Random.insideUnitSphere * shakeMagnitude;
            transform.rotation = new Quaternion(
                originalRotation.x + Random.Range(-shakeMagnitude, shakeMagnitude),
                originalRotation.y + Random.Range(-shakeMagnitude, shakeMagnitude),
                originalRotation.z + Random.Range(-shakeMagnitude, shakeMagnitude),
                originalRotation.w + Random.Range(-shakeMagnitude, shakeMagnitude)
            );
            shakeTimer -= Time.deltaTime;
        }
        else
        {
            transform.position = originalPosition;
            transform.rotation = originalRotation;
        }
    }

    public void Shake()
    {
        shakeTimer = shakeDuration;
    }
}

五、渲染设置

  1. 层(Layers):
    • 可以将场景中的物体分配到不同的层,然后通过摄像机的 Culling Mask 属性来控制哪些层的物体被摄像机渲染。
    • 例如,可以将玩家角色和敌人分配到不同的层,然后设置摄像机只渲染玩家所在的层,以提高性能。
  2. 后期处理(Post-processing):
    • Unity 提供了强大的后期处理功能,可以通过添加后期处理效果来增强游戏的视觉效果。例如,可以添加 Bloom(辉光)、Color Grading(色彩分级)、Depth of Field(景深)等效果。
    • 可以在摄像机上添加 Post-process Layer 组件,并在项目设置中配置后期处理效果。

六、性能考虑

  1. 优化渲染:
    • 合理设置摄像机的视野和裁剪平面,避免渲染不必要的物体。可以根据游戏的需求调整视野大小,以减少渲染的区域。
    • 使用层和 Culling Mask 属性来控制摄像机渲染的物体,只渲染需要显示的物体,提高性能。
  2. 避免过多的摄像机:
    • 过多的摄像机可能会导致性能下降。尽量减少不必要的摄像机,或者在需要时动态激活和禁用摄像机。
  3. 后期处理效果的性能影响:
    • 后期处理效果可能会对性能产生较大的影响。根据游戏的性能需求,合理选择和调整后期处理效果,避免过度使用复杂的效果。

六. 组件详细介绍

名称:功能:
清除标志确定将清除屏幕的哪些部分。当使用多个摄像机绘制不同的游戏元素时,这非常方便。
背景绘制视图中所有元素后应用于剩余屏幕的颜色,并且没有天空盒
.
剔除遮罩包括或忽略要由 Camera 渲染的对象层。将图层分配给 Inspector 中的对象。
投影切换摄像机模拟透视的功能。
        透视Camera 将渲染透视完好无损的对象。
        正交摄像机将均匀地渲染对象,没有透视感。注意:Orthographic (正交) 模式不支持延迟渲染。前向渲染
始终使用。
大小(选择 Orthographic 时)视窗
size (摄像机的大小) 设置为 Orthographic (正交)。
FOV 轴(选择 Perspective 时)视野轴。
        水平Camera 使用水平视野轴。
        垂直Camera 使用垂直视野轴。
视野(选择 Perspective 时)摄像机的视角,沿 FOV Axis 下拉列表中指定的轴以度为单位测量。
物理相机勾选此框可启用此摄像机的 Physical Camera 属性。

启用 Physical Camera 属性后,Unity 会使用模拟真实摄像机属性的属性(Focus LengthSensor Size 和 Lens Shift)来计算 Field of View

物理摄像机属性在 Inspector 中不可见,直到您勾选此框。
        焦距设置相机传感器和相机镜头之间的距离(以毫米为单位)。

较低的值会导致 View (视野) 更宽,反之亦然。

更改此值时,Unity 会自动相应地更新 Field of View 属性。
        传感器类型指定希望摄像机模拟的真实摄像机格式。从列表中选择所需的格式。

选择摄像机格式时,Unity 会自动将 Sensor Size > X 和 Y 属性设置为正确的值。

如果手动更改 Sensor Size 值,Unity 会自动将此属性设置为 Custom
        传感器尺寸设置相机传感器的大小(以毫米为单位)。

Unity 会在您选择 Sensor Type 时自动设置 X 和 Y 值。如果需要,您可以输入自定义值。
                X传感器的宽度。
                Y传感器的高度。
        镜头偏移从中心水平或垂直移动镜头。值是传感器大小的倍数;例如,沿 X 轴偏移 0.5 会使传感器偏移其水平大小的一半。

您可以使用镜头偏移来校正当相机与主体成一定角度时发生的失真(例如,会聚平行线)。

沿任一轴移动镜头,使相机视锥体倾斜。
                X水平传感器偏移量。
                Y垂直传感器偏移量。
        浇口拟合用于更改分辨率门(游戏视图的大小/纵横比)相对于胶片门(Physical Camera 传感器的大小/纵横比)大小的选项。

有关分辨率门和胶片门的更多信息,请参阅有关物理摄像机的文档。
                垂直使分辨率门与胶片门的高度相适应。

如果传感器长宽比大于游戏视图长宽比,则 Unity 会在两侧裁剪渲染的图像。

如果传感器长宽比小于游戏视图长宽比,则 Unity 会过扫描侧面的渲染图像。

选择此设置时,更改传感器宽度(传感器大小 > X 属性)不会影响渲染图像。
                水平使分辨率门适合胶片门的宽度。

如果传感器长宽比大于游戏视图长宽比,则 Unity 会过扫描顶部和底部的渲染图像。

如果传感器长宽比小于游戏视图长宽比,Unity 会裁剪渲染图像的顶部和底部。

选择此设置时,更改传感器高度(传感器大小 > Y 属性)不会影响渲染图像。
                填补使分辨率门适合胶片门的宽度或高度,以较小者为准。这将裁剪渲染的图像。
                过扫描使分辨率门适合胶片门的宽度或高度,以较大者为准。这将过度扫描渲染的图像。
                没有忽略分辨率门,只使用胶片门。这将拉伸渲染的图像以适合游戏视图纵横比
.
剪切平面从摄像机开始和停止渲染的距离。
        将发生绘制的相对于相机最近的点。
        将发生绘制的相对于相机的最远点。
视口矩形四个值,指示此摄像机视图将在屏幕上的绘制位置。以 Viewport Coordinates (值 0–1) 为单位进行测量。
        X将绘制摄像机视图的起始水平位置。
        Y将绘制摄像机视图的开始垂直位置。
        W (宽度)屏幕上摄像机输出的宽度。
        H (高度)屏幕上摄像机输出的高度。
深度摄像机在绘制顺序中的位置。值较大的照相机将绘制在值较小的照相机上。
渲染路径用于定义摄像机将使用的渲染方法的选项。
        使用 Player 设置此摄像机将使用在播放器设置
.
        Vertex Lit此摄像机渲染的所有对象都将渲染为 Vertex-Lit 对象。
        向前所有对象都将使用每个材质的一个通道进行渲染。
目标纹理对渲染纹理
,它将包含 Camera (摄像机) 视图的输出。设置此引用将禁用此摄像机渲染到屏幕的功能。
Occlusion Culling为此摄像机启用 Occlusion Culling。遮挡剔除意味着隐藏在其他对象后面的对象不会被渲染,例如,如果它们位于墙后。有关详细信息,请参阅 Occlusion Culling。
允许 HDR为此摄像机启用高动态范围渲染。有关详细信息,请参阅高动态范围渲染。
允许 MSAA启用多样本抗锯齿
对于此相机。
允许动态解析为此摄像机启用 Dynamic Resolution 渲染。看动态分辨率
了解详情。
目标显示定义要渲染到的外部设备。介于 1 和 8 之间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

北冥坞“学件”系统

简介 学件由周志华教授在 2016 年提出 [1, 2]。在学件范式下,世界各地的开发者可分享模型至学件基座系统,系统通过有效查搜和复用学件帮助用户高效解决机器学习任务,而无需从零开始构建机器学习模型。 北冥坞是学件的第一个系统性开源实现&…

客户端字符集小于数据库字符集导致乱码

一、现象 使用plsql或者sqlplus客户端 查询某个表的数据库均显示乱码,如下图所示: 二、原因分析 1、查看数据库的字符集 2、查看客户端的字符集 3、比较 数据库的字符集AL16UTF18(服务端)是大于en_US.UTF-8(客户端&…

【Linux】gcc(工具篇)

文章目录 背景知识gcc的使用预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别代码)连接(生成可执行文件或库文件) gcc选项函数库函数库一般分为静态库和动态库两种C/C静态库的安…

Python 程序设计基础教程

Python 程序设计基础教程 撰稿人:南星六月雪 第 一 章 变量与简单数据类型 1.1 变量 先来观察以下程序: world "Hello Python!" print(world)world "Hello Python,I love you!" print(world)运行这个程序,将看到两…

一个利用率超高的大数据实验室是如何练成的?

在当今这个数据爆炸的时代,大数据已成为推动各行各业创新与发展的核心动力。一个高效运转、利用率超高的大数据实验室,不仅是技术创新的摇篮,更是企业竞争力的重要体现。那么,如何构建并维持这样一个实验室呢?本文将探…

【机器学习】软输出和硬输出的基本概念和区别、如何选择软输出还是硬输出、联系函数的作用以及线性判别分析和逻辑回归的基本概念(含python代码)

引言 在机器学习中,“软输出”(Soft Output)和"硬输出"(Hard Output)是两种不同的预测输出形式,通常用于分类问题中 文章目录 引言一、软输出和硬输出1.1 硬输出(Hard Output&#xf…

深入理解C语言指针原理——深入底层机制

概述 在C语言中,指针是处理内存的核心工具。为了更好地理解指针如何工作,我们需要深入了解指针与底层硬件和操作系统之间的交互方式。本文将探讨指针的底层实现、内存布局、以及它们如何影响程序的行为。 内存模型 虚拟内存 现代操作系统为每个进程提…

Java算法—排序篇之快速排序(Quick sort)

快速排序(Quick sort) 核心思路: 从数列中挑出一个元素,一般都是左边第一个数字,称为 “基准数”;创建两个指针,一个从前往后走,一个从后往前走。先执行后面的指针,找出第一个比基…

io进程----库

目录 一丶定义 二丶分类 1.静态库 2.动态库 三丶静态库制作 四丶动态库制作 总结: 一丶定义 当使用别人的函数时除了包含头文件以外还需要有库 头文件:函数声明、结构体等类型定义、头文件、宏定义、其他头文件等 库:把一些常…

Java 使用QQ邮箱的接收发送功能,入门级教程

进入qq邮箱主页面,点击账号 下滑找到POP3...如果没有开启,需要开启,开启后,点击管理服务 然后点击生成授权码 按照步骤执行完成后,会给你需要的授权码 1.拿到授权码后,导入相关依赖,和yml相关配…

基于STM32开发的智能家居温度控制系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化温度监测与显示风扇/加热器控制Wi-Fi通信与远程监控应用场景 家庭环境的智能温度管理办公楼的节能温控系统常见问题及解决方案 常见问题解决方案结论 1. 引言 随着人们对生活质量…

OZON电子类目解封,OZON新品飙升榜

Ozon电子类目的解封对于商家来说是一个重要的机会,可以重新进入市场并恢复销售。 Ozon电子类目解封选品:m6z.cn/5H6fQR(复制浏览器打开) Top1 便携式音响 Портативная колонка Bluetooth с караоке м…

多意图指令识别项目调研及整理

多意图算法及专利调研整理 AGIF: An Adaptive Graph-Interactive Framework for Joint Multiple Intent Detection and Slot Filling 短文本多意图解析 https://zhuanlan.zhihu.com/p/405096922 多意图语义解析包括多意图发现MID(Multi-intent discovery&#xf…

搭建go开发环境

下载go软件压缩包 解压压缩包到D:/Program Files 验证是否安装成功 配置系统环境变量Path

甄选范文“论软件质量保证及其应用”,软考高级论文,系统架构设计师论文

论文真题 软件质量保证(Software Quality Assurance, SQA)是指为保证软件系统或软件产品充分满足用户要求的质量而进行的有计划、有组织的活动,这些活动贯穿于软件生产的整个生命周期。质量保证人员负责质量保证的计划、监督、记录、分析及报告工作,辅助软件开发人员得到高…

arthas源码刨析:arthas 命令粗谈 dashboard watch retransform (3)

文章目录 dashboardwatchretransform 前面介绍了 arthas 启动相关的代码并聊了聊怎么到一个 shellserver 的建立。 本篇我们来探讨一下几个使用频次非常高的命令是如何实现的。 在开始之前,我们先概要地了解一下 arthas 命令的几个思路。 自定义命令,普通…

【Hexo】hexo-butterfly主题添加非主站提示

本文首发于 ❄️慕雪的寒舍 说明 因为hexo可以很方便的在多个平台上免费部署,为了让自己的博客能uptime更久一段时间,很多老哥都和我一样,把自己的hexo博客在好多个平台上都部署了一份。 但是我一直想要一个功能,就是在别人访问…

可商用插画

可商用插画 https://www.88sheji.cn/favorites/free-illustration

5G+智慧工业园区解决方案

1. 智慧工业园区架构概览 智慧工业园区采用多层架构设计,包括展示层、应用层、服务层、数据层和安全保障体系。此架构利用云计算、物联网和移动通信技术,实现园区管理的数字化和智能化。 2. 园区大脑功能 园区大脑作为智慧园区的“中枢神经”&#xf…

校园招聘,在线测评包括哪些内容?

一年两次的校园招聘(秋招和春招),面对众多职业测评的时候,很多人都会觉得无从下手,从而在竞争中失利。根据实践中的情况来看,校园招聘时的测试其实不难,求职者提前准备,想通过在线测…