Unity Camera

课程目标

1. 了解摄像机(camera)不同视角的设计与实现;2. 感受在不同摄像机视角下观察虚拟场景。

喜欢玩游戏或者看3D动漫的朋友可以回忆在虚拟场景中摄像头的运动变化带来的视觉感受,例如:摄像头给场景中的主角来个特写镜头,或者摄像头距离主角的距离越来越远,视觉或者故事叙述会给观者带来怎样的感觉呢?

Camera设置的参数

属性:功能:
Clear Flags确定将清除屏幕的哪些部分。使用多个摄像机来绘制不同游戏元素时,这会很方便。
Background在绘制视图中的所有元素之后但没有天空盒的情况下,应用于剩余屏幕部分的颜色。
Culling Mask包含或忽略要由摄像机渲染的对象层。在检视面板中将层分配到对象。
Projection切换摄像机模拟透视的功能。
        Perspective摄像机将以完整透视角度渲染对象。
        Orthographic摄像机将均匀渲染对象,没有透视感。注意:在正交模式下不支持延迟渲染。始终使用前向渲染。
Size__(选择 Orthographic 时) |设置为 Orthographic 时摄像机的视口大小。 | |FOV Axis__(选择 Perspective 时)视野轴。
        Horizontal摄像机使用水平视野轴。
        Vertical摄像机使用垂直视野轴。
Field of view__(选择 Perspective 时) |摄像机视角(以沿着 FOV Axis__ 下拉选单中指定轴的度数为单位)。
Physical Camera勾选此复选框可为此摄像机启用 Physical Camera 属性。

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

在勾选此复选框之前,Physical Camera 属性不会显示在 Inspector 中。
        Focal Length设置摄像机传感器和摄像机镜头之间的距离(以毫米为单位)。

较小的值产生更宽的 Field of View,反之亦然。

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

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

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

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

可使用镜头移位来校正摄像机与拍摄对象成一定角度时发生的失真(例如,平行线会聚)。

沿任一轴移动镜头均可使摄像机视锥体倾斜。
                X传感器水平偏移。
                Y传感器垂直偏移。
        Gate Fit用于更改分辨率门大小(Game 视图的大小/宽高比)相对于胶片门大小(物理摄像机传感器的大小/纵横比)的选项。

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

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

如果传感器宽高比小于 Game 视图宽高比,Unity 会在两侧对渲染的图像进行过扫描。

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

如果传感器宽高比大于 Game 视图宽高比,Unity 会在顶部和底部对渲染的图像进行过扫描。

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

选择此设置时,更改传感器高度(Sensor Size > Y 属性)不会影响渲染的图像。
                Fill使分辨率门适应胶片门的宽度或高度(以较小者为准)。这会裁剪渲染的图像。
                Overscan使分辨率门适应胶片门的宽度或高度(以较大者为准)。这会过扫描 (overscan) 渲染的图像。
                None忽略分辨率门,仅使用胶片门。这会拉伸渲染的图像以适应 Game 视图宽高比。
Clipping Planes开始和停止渲染位置到摄像机的距离。
        Near相对于摄像机的最近绘制点。
        Far相对于摄像机的最远绘制点。
Viewport Rect通过四个值指示将在屏幕上绘制此摄像机视图的位置。在视口坐标中测量(值为 0–1)。
        X绘制摄像机视图的起始水平位置。
        Y绘制摄像机视图的起始垂直位置。
        W_(宽度) |屏幕上摄像机输出的宽度。 | |        H_(高度)屏幕上摄像机输出的高度。
Depth摄像机在绘制顺序中的位置。具有更大值的摄像机将绘制在具有更小值的摄像机之上。
Rendering Path定义摄像机将使用的渲染方法的选项。
        Use Player Settings此摄像机将使用 Player Settings 中设置的任何渲染路径 (Rendering Path)。
        Vertex Lit此摄像机渲染的所有对象都将渲染为顶点光照对象。
        Forward每种材质采用一个通道渲染所有对象。
Target Texture引用将包含摄像机视图输出的渲染纹理。设置此引用将禁用此摄像机的渲染到屏幕功能。
Occlusion Culling为此摄像机启用遮挡剔除 (Occlusion Culling)。遮挡剔除意味着隐藏在其他对象后面的对象不会被渲染,例如,如果对象在墙后面。请参阅遮挡剔除 (Occlusion Culling) 以了解详细信息。
Allow HDR为此摄像机启用高动态范围渲染。请参阅高动态范围渲染以了解详细信息。
Allow MSAA为此摄像机启用多重采样抗锯齿。
Allow Dynamic Resolution为此摄像机启用动态分辨率渲染。请参阅动态分辨率以了解详细信息。
Target Display定义要渲染到的外部设备。值为 1 到 8 之间。

练习项目

打开项目

1. 下载附带项目,在unity hub 中打开该项目

2. 在打开项目中,在Project窗口中点击Assets>CreativeCore_Camera>Scenes, 在右边窗口中双击选择Camera_Intro_Scene,打开该场景,见下图:

切换摄像机

3. 点击上述窗口中中间上方的play三角形)按键,运行该场景,鼠标点击左下方的游戏窗口,然后在按键盘上的 C 按键(可以连续按),切换游戏窗口中的摄像机,可以看到如下不同的摄像机场景:

4.  熟悉上述变换camera视角感受场景后,重新选择一个新的场景,开始尝试设置Camera参数,在Project窗口中点击Assets>CreativeCore_Camera>Scenes, 在右边窗口中双击选择Camera_Projection_Scene,打开该场景:

Projection设置

5. 在Hierarchy 窗口中找到 PlayerArmature,然后按一下 F 键,左上方的虚拟场景将近景显示该虚拟任务,见上图。

6. 再在Hierarchy 窗口中点击 MainCamera (在上述PlayerArmature的下方),按住 Ctrl+Shift+F 组合按键(或者選擇菜單 GameObject > Align With View),這樣左下方的游戲窗口和上方場景窗口的視角一致。

7. 选择MainCamera,可以在最右侧的 Inspector窗口中看到Camera参数, 例如:Projection 设置为 PerspectiveField of View 设置了一个数值,可以左右滑动该按钮,改变Field of View 数值,左下方游戏窗口的视野会相应变大或变小。

也可以选择最左侧场景窗口的左边的旋转按键,这时场景中的Camera将会高亮(白色)显示,并有绿色和蓝色等圆环环绕,鼠标选中绿色圆环,左右移动,可以看到场景中Camera旋转,同时下方的游戏场景中的视角也相应移动。

8. 再回到最右侧的 Inspector窗口中看到Camera参数,将 Projection 设置为 Orthographic,可以看到游戏窗口中视角变得很大,可以在上方场景中适当调节MainCamera的位置和角度,让你几乎可以看到全景,然后点击上图正中间顶端的 运行(三角形)按键, 运行游戏。鼠标点击左下方的游戏窗口,然后按键盘上ASDW按键,操作机器人在场景中漫游。

可以改变 Camera参数Size值,可以看到游戏窗口变大或变小。

Clipping & Culled Planes

9. 再次点击(三角形)按键,退出游戏。

下面认识 Clipping Planes 定义摄像机能够看到的平面,包含 近(near) 和远 (far)两个平面:

near, which defines how close an object is able to get to the camera while still rendering,

far, which defines how far away an object can be before it’s no longer visible on screen

A white wireframe in the Scene view shows you the locations of these planes. For perspective cameras, the wireframe is a pyramid shape, and for orthographic cameras, the wireframe is a rectangle.

10. 在Project窗口, Assets>CreativeCore_Camera>Scenes目录中双击选择  Camera_Limits_Scene,打开这个场景,在Hirarchy窗口单击选择 Main Camera.

11. 在右侧的Inspector窗口中,看到Clipping Plane的两个参数near 0.3 和 far 1000, 可以尝试改变这个far 的数值,例如改为 10,可以看到左下方的Game窗口中所有物体消失了,只剩下天空图像。(自己思考一下为什么变成这样了)

12. 将far参数改回1000,在尝试更改一下near 0.3 的参数,例如改为 20,在Game窗口中会看到一些地面不显示,好像地面被割掉了。

通过更改clipping plan的far和near数值,可以定义摄像机能够看到(渲染)的场景范围。尝试不同数值后,改为原先的数值。

13. 下面设置culling masks在摄像机看到的范围内隐藏或显示物体。

在左边的Scene场景窗口中,选中红色的Capsule,然后在右侧Inspector窗口中,点击Layer参数边的下三角,在下拉菜单中选择 Add Layer..

14. 在显示的 Tags & Layers 窗口中, User Layer 6的右边输入 “Culled”,定义了一个新的层

15. 再次在Scene场景窗口中选择红色的Capsule,然后在右侧Inspector窗口中,点击Layer参数边的下三角,在下拉菜单中选择刚刚新建的 Culled 层

16. 在Hirarchy窗口点击Main Camera, 可以先查看一下左下方的Game窗口中红色Capsule是显示的,然后在右侧的Inspector窗口,点击 Rendering部分的Culling Mask右侧的下拉菜单(当前显示everything),在菜单中点击Culled,将该层选择取消。这是可以查看左下方Game窗口中红色Capsule消失了!

再次点击Culled,消失的红色Capsule又再次显示了。

体验多个摄像场景

在下面的场景中,有多个摄像头的转换场景,在场景中漫游的时候,摄像头会自动切换。

17. 在Scenes文件夹中打开Camera_Views_Scene 场景文件,然后点击正中间上方play(三角形)按键,进入游戏模式,使用键盘 W A S D 按键在场景中开始漫游,首先进入3rd Person Camera view (第三人称的摄像头)区域。

3rd Person Camera 可以让玩家从控制的游戏人物后方观察所控制的游戏人物和其周围所能看到的场景。

18 操控W A S D 按键将游戏人物走到最左方的位置,进入First-Person Camera View (第一人称摄像视角),即透过游戏人物的眼睛观察周围场景。

19. 操控W A S D 按键将游戏人物走到右边一点的 Ortho View,显示 Isometric camera views (等轴测摄像机视图),通常在2D动画显示,缺少一些深度信息。

20 操控W A S D 按键将游戏人物再走到右边一点的迷宫,进入迷宫后,摄像头显示一个天空俯视向下(Top-Down view)的一个上帝视角所看的场景,这样是否可以帮助你快速走出迷宫呢?

22 操控W A S D 按键走出迷宫后,来到 “See behind the building"的标志下,进入建筑的后方通道后,稍微停顿一下,等待摄像头切换到固定摄像头场景,然后控制游戏人物向摄像头走来。

固定摄像头场景(Fixed-Camera View)

23. 完成上述漫游后,可以自己再尝试一遍,体验不同摄像场景。一般游戏场景设置第三人称视角,并且允许用户切换为第一人称视角。

体验摄像机拍摄角度

24. 在Scenes文件夹中打开Camera_Shots_Scene 场景文件,然后点击正中间上方play(三角形)按键,进入游戏模式,游戏中显示的是一个广角(wide angle)场景,按 1 键激活这个场景(如果没有看到如下游戏场景的话)

广角(wide angle)场景

25.在游戏场景中,按 2 键激活近景的镜头(close-up shot),见下图。该镜头能够清晰看到游戏角色的腰部到头的躯干部分。如果把摄像机位置放在游戏角色身后的位置,该近景的镜头通常称为 过肩镜头(over-the-shoulder shots).

26. 在游戏场景中,按 3 键激活鸟瞰图(bird's-eye view),见下图。改图是在上述两个图之间的显示场景,给与玩家对场景及角色位置有一个更好的了解。

27. 在游戏场景中,按 4 键激活仰视图(worm's-eye view),见下图,该镜头从下往上看游戏中的角色,通常是警告玩家游戏中遇到一些问题。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马来西亚原生静态IP注册的账号稳定吗?

马来西亚作为东南亚重要的经济体之一,其网络基础设施和互联网服务水平在近年来有了显著提升。静态IP作为一种固定的互联网协议地址,对于某些特定的网络应用和需求非常重要。本文将围绕马来西亚原生静态IP注册的账号稳定性进行探讨,分析其在不…

【Python系列】Python 字典合并

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

pytorch基础模块:Tensorboard、Dataset、Transforms、Dataloader

Tensorboard、Dataset、Transforms、Dataloader 该文档主要参考【土堆】的视频教程:pytorch入门教程–土堆 一、Tensorboard 安装tensorboard:pip install tensorboard 使用步骤: 引入相关库:from torch.utils.tensorboard i…

LinkedList接口源码解读

LinkedList 接口源码解读(一) 前言 因为追求质量,所以写的较慢。大概在接下来的三天内会把LinkedList源码解析出完。大概还有两篇文章。废话不多说,正片开始! 大家都知道,LinkedList是在Java底层中是由 …

手机上音乐如何转换成MP3格式?分享5款音频格式转换APP

手机上音乐如何转换成MP3格式?相信很多外出办公或者不经常使用电脑的工作人士,学生党,媒体从业者都有这样的疑惑和需求。不同设备和应用可能支持不同的音频格式,导致某些情况下需要将音乐文件转换为MP3格式以确保兼容性。下面&…

操作系统|day4.Linux、Linux内核、Linux负载、Linux文件存储

文章目录 LinuxLinux内核定义功能态 Linux负载定义 Linux文件存储链接分类区别使用场景 拷贝 Linux Linux内核 定义 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能…

.NET周刊【7月第4期 2024-07-28】

国内文章 .NET 高性能缓冲队列实现 BufferQueue https://mp.weixin.qq.com/s/fUhJpyPqwcmb3whuV3CDyg BufferQueue 是一个用 .NET 编写的高性能的缓冲队列实现,支持多线程并发操作。 项目地址:https://github.com/eventhorizon-cli/BufferQueue 项目…

【虚拟仿真】Unity3D中实现2DUI显示在3D物体旁边

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 这篇文章来实现2DUI显示在3D物体旁边,当我们需要在3D模型旁边显示2DUI的时候,比如人物的对…

grep工具的使用

grep [options]…… pattern [file]…… 工作方式: grep 在一个或者多个文件中搜索字符串模板,如果模板中包括空格,需要使用引号引起来,模 板后的所有字符串会被看作是文件名。 工作结果:如果模板搜索成功&#xf…

Springboot+Vue在线水果(销售)商城管理系统-附源码与配套论文

1.1 研究背景 互联网概念的产生到如今的蓬勃发展,用了短短的几十年时间就风靡全球,使得全球各个行业都进行了互联网的改造升级,标志着互联网浪潮的来临。在这个新的时代,各行各业都充分考虑互联网是否能与本行业进行结合&#xf…

Java:进程和线程

文章目录 进程线程的概念和区别总结如何创建线程1.继承Thread重写run2.实现Runnable重写run3.继承Thread重写run,通过匿名内部类来实现4. 实现Runnable重写run,通过匿名内部类来实现5.基于lambda表达式来创建 虚拟线程 并发编程: 通过写特殊的代码,把多个CPU核心都利…

Shell编程 --基础语法(1)

文章目录 Shell编程基础语法变量定义变量使用变量命令的使用只读变量删除变量 传递参数字符串获取字符串长度字符串截取 数组定义方式关联数组获取数组的长度 总结 Shell编程 Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解…

【人工智能基础三】卷积神经网络基础(CNN)

文章目录 1. 卷积神经网络结构2. 卷积神经网络计算2.1. 卷积层计算2.2. 池化层计算2.3. 全连接层计算 3. 典型卷积神经网络3.1. AlexNet3.2. VGGnet 卷积神经网络(Convolutional Neural Network,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Ne…

计算机毕业设计Python+Tensorflow股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

1、用pycharm打开项目,一定要打开包含manage.py文件所在文件夹 2、配置解释器:建议使用Anaconda(Python 3.8(base)),低于3.8版本的,页面会不兼容 3、安装依赖库:打开pycharm的终端,输入: pip in…

Docker-学习笔记(借助宝塔面板)

ubuntu环境 一、安装 可以参考官网进行或其他博客进行安装 1.进入宝塔面板 进图Docker菜单,查看是否提示安装。 2.查看是否安装 查看版本 docker -v 证明已经安装 二、常用命令 1.查看版本 docker -v 2.启动、停止、重启docker systemctl start docker…

自制安卓车机软件(含APP)

本软件使用APPinventor2编程软件,耗时5天和3天调试,具有高德导航,视频播放,网易云音乐,酷狗,抖音,(需下载车机版软件)和自定义添加软件,网页有哔哩哔哩&#…

无人机工程师技术高级证书详解

随着无人机技术的飞速发展,其在航拍、农业、测绘、救援、物流等多个领域的应用日益广泛,对无人机工程师的专业技能与综合素质提出了更高要求。无人机工程师技术高级证书,作为对无人机领域高级工程师专业技能的权威认证,不仅是对个…

简单搭建dns服务器

目录 一.安装服务 二.编写子配置文件 三.编写主配置文件 四.编写文件 五.测试 一.安装服务 [rootnode1 ~]# dnf install bind -y 二.编写子配置文件 [rootnode1 ~]# vim /etc/named.rfc1912.zones 三.编写主配置文件 [rootnode1 ~]# vim /etc/named.conf 四.编写文件 …

【Python】Numpy概述安装及使用

文章目录 Numpy概述Numpy开发环境搭建Numpy使用创建数组创建一维数组创建二维数组创建三维数组,array()函数ndmin参数的使用array()函数dtype参数的使用随机数创建 Numpy概述 Numpy是科学计算基础库,提供大量科学计算相关功能,比如数据统计&…

GuLi商城-商品服务-API-新增商品-调试会员等级相关接口

在网关服务中配置路由: 代码: nacos这些服务都要启动: 如果有不是一个命名空间中的,要改成同一个命名空间中 启动商品product服务遇到循环依赖问题,解决: