5分钟入门Cinemachine智能相机系统
摘要:相机是Unity世界的眼睛,一个智能相机更是能帮咱们节省大把的时间和精力。Cinemachine现在已经大量应用到各种项目中,如果你还没有用过Cinemachine,墙裂建议你来体验一下。
你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦。
Cinemachine入门
Cinemachine入门还是很容易的,5分钟足矣,但是深入去研究里面也有很多门道。
安装
Cinemachine是Unity官方开发的一个免费的插件。目前Cinemachine最新版为2.5,支持Unity 2017.1及以上版本。
从Unity 2018.1开始,Cinemachine可以从Package Manager安装。之前的Unity版本可以从Asset Store中下载安装。
安装好Cinemachine之后,菜单栏会有一个新的菜单项叫:Cinemachine。
Cinemachine没有外部依赖包,安装后就可以使用。Cinemachine还可以和Post Processing Stack(场景后处理工具)一起使用
从旧版Cinemachine升级
如果你从Asset Store安装过Cinemachine,现在想从Package manager中升级到最新版本。那需要注意以下步骤:
1、用Unity2018.1或之后的版本打开工程。
2、新建一个空场景(防止升级时场景中脚本引用丢失)。
3、在Project窗口中删除Cinemachine文件夹以及相关资产(如CinemachinePostProcessing相关资产)。
4、在Package Manager中安装Cinemachine包。
Cinemachine基本使用流程
使用Cinemachine时需要用一种新的方式来思考相机:你可能之前研究的都是如何通过脚本来更好的控制相机,但是在Cinemachine中,你需做的是各种相机的不同用途,快速创建出想要的相机然后调他们的参数就可以了。
虚拟相机
从菜单栏Cinemachine > Create Virutal Camera创建虚拟相机。
Cinemachine能控制大量相机,但是它并不创建新的相机,它通过控制Unity相机来实现多机位的效果。如何实现的呢?在Cinemachine中有一个虚拟相机的概念。虚拟相机是相机的一些设置,用于控制Unity相机的移动、旋转以及相关设置。
每个虚拟相机是一个单独的物体,独立运行,也和场景中的相机没有直接关系。例如,你的场景可能长这样:
虚拟相机有什么功能呢?
- 决定Unity相机在场景中的位置
- 决定Unity相机的朝向,并跟踪某物体
- 为相机添加程序化的晃动,比如手持相机效果或者车辆的震动
Cinemachine系统鼓励你创建多个虚拟相机。虚拟相机有很好的性能,不用过多担心会出现性能问题。如果你的场景对性能很敏感,可以禁用当前使用的虚拟相机以外的所有的虚拟相机,这样能达到极致性能。
虚拟相机的一个最佳实践是:一个镜头使用一个虚拟相机。例如:
- 对于两个角色对话的过场动画,使用三个虚拟相机:一个相机用于两个角色中间的镜头,单独的虚拟相机用于每个角色的特写镜头。然后使用Timeline同步音频与虚拟相机。
- 复制一个现有的虚拟相机,这样两个虚拟相机在场景中的位置相同。对于第二个虚拟相机,稍微改变一下FOV或构图。当玩家进入触发区域时,Cinemachine会从第一个虚拟相机过渡到第二个虚拟相机,用于强调变化。
同一时间仅有一个虚拟相机控制Unity相机,这个虚拟相机被称为活动虚拟相机(live virtual camera)。例外情况是从一个虚拟相机混合到另外一个虚拟相机的时候,混合阶段两个虚拟相机都是活动状态。
2、添加Cinemachine Brain
通常这一步不需要你手动添加,因为在第一步创建Virtual Camera时会自动给Unity相机添加Cinemachine Brain组件。
CinemachineBrain是挂在Unity相机上的一个组件。这个组件会跟踪场景中所有的活动虚拟相机。你可以通过激活/禁用虚拟相机物体来指定下一个活动虚拟相机。
Cinemachine Brain在运行时可以响应各种事件,这样可以通过逻辑动态控制相机。因为在游戏中,很多动作是不可预测的。
3、配置VirtualCamera的移动和旋转策略
使用VirtualCamera组件中的Body属性来设置相机如何移动。使用Aim属性来设置相机如何旋转。
虚拟相机有两个跟踪目标:
- Follow指定了相机跟随移动的目标。
- Look At指定了相机瞄准的目标。
Cinemachine中包含了各种用于相机控制和瞄准的算法。每个算法提供了一种特定的方式,你可以通过设置算法的属性来满足你的特殊需求。你也可以通过继承CinemachineComponent来实现自定义的移动和瞄准的行为。
Body属性提供了下列算法来移动虚拟相机:
- Do Nothing:不移动虚拟相机
- Framing Transposer:在屏幕空间,保持相机和跟随目标的相对位置,可以设置缓动。
- Hard Lock to Target:虚拟相机和跟随目标使用相同位置。
- Orbital Transposer:相机和跟随目标的相对位置是可变的,还能接收用户的输入。常见于玩家控制的相机。
- Tracked Dolly:相机沿着预先设置的轨道移动。
- Transposer:相机和跟随目标的相对位置固定,可以设置缓动。
Aim属性提供了下列算法来旋转相机对准Look At的目标:
- Composer:将目标保持在相机镜头内,可以设置多种约束
- Group Composer:将多个目标保持在相机镜头内
- Do Nothing:不旋转相机
- POV:根据用户的输入旋转相机
- Same As Follow Target:将相机的旋转和跟随目标的旋转同步
- Hard Look At:将Look At目标固定在镜头中心的位置。
4、配置镜头构图
上面第3步提到的Framing Transposer、Composer和Group Composer算法定义了镜头的几个特殊区域,可以用于镜头构图。
- Dead zone:Cinemachine会将目标保持在这个区域,目标在这个区域时,镜头保持不动。
- Soft zone:如果目标进入这个区域,会触发相机的移动和旋转,将目标重新移回dead zone。这个过程可能很快,也可能很慢,取决于Damping属性设置。
- Screen:Dead zone区域的中心在屏幕上的位置,可以不在整个游戏屏幕的正中间。
- Damping:模式现实世界中操控相机时的延迟。Damping设置了目标进入soft zone后相机的反应速度。数值越小,相机反应越快,会更快地操作相机把目标保持在dead zone。数值越大,相机反应越慢,跟随目标回到dead zone所需的时间也就更长,可以用来模拟一个很笨重的摄像机。
组件中的Game Window Guides勾选后,可以在Game窗口可视化的查看/编辑构图区域。最外圈是no pass zone,也就是目标从来不会到的位置。中间的黄色小方块代表了target的位置。
通过拖拽每个区域的边缘或者调整Inspector上的数值来调整这些区域。调整这些区域可以得到多种多样的相机行为。比如使用更大的damping值模拟笨重的相机;增加dead zone和soft zone来创建一个对目标运动不敏感的相机。
5、配置模拟相机的晃动
现实世界的摄像机通常比较笨重,由摄影师手持或者绑在车辆上。使用Noise属性可以模拟这些效果。例如,你可以给相机添加晃动来跟随一个向前跑的角色以获得更好的沉浸感。
每帧更新后,Cinemachine给相机单独添加晃动。这些晃动不会影响相机后续的位置和镜头。这样可以保证虚拟相机运行结果的一致性。
总结
小新:“上面就是配置一个Cinemachine虚拟相机的基本流程,经过这些步骤之后,就有了一个初步能用的虚拟相机了。动动手试试调节一下这些属性,看看有什么不同的结果。后面咱们继续一起来探索这些属性的详细信息。”
【扩展学习】在洪流学堂公众号回复
timeline
可以下载Timeline&Cinemachine系列教程全文带目录PDF哦
好了,今天就就让小新絮絮叨叨到这里了。没讲清楚的地方欢迎评论,不点赞、收藏我可能不会回复你的哦(¬、¬) (¬_¬)
我是大智,你的技术探路者,下次见!
别走!点赞,收藏哦!
好,你可以走了。
5分钟入门Cinemachine智能相机系统相关推荐
- Unity Cinemachine智能相机教程(五):VirtualCamera的Extension扩展
摘要:[长文预警,先收藏后品尝]如何让相机更智能呢?Extension扩展可以给虚拟相机带来无限的可能. 洪流学堂,让你快人几步.你好,我是跟着大智(VX: zhz11235)学Unity的萌新,我叫 ...
- 【Cinemachine智能相机教程】VirtualCamera(四):Noise属性
摘要:[长文预警,先收藏后品尝]如何让Unity中的相机模拟现实世界手持拍摄的晃动效果呢?Cinemachine的Noise属性可以让你在5分钟内解决这个问题. 洪流学堂,让你快人几步.你好,我是郑洪 ...
- 【Cinemachine智能相机教程】VirtualCamera(三):Aim属性
摘要:[长文预警,先收藏后品尝]Cinemachine中的虚拟相机如何旋转来让镜头锁定目标物体呢?这就需要搞明白Aim属性的设置咯. 洪流学堂,让你快人几步.你好,我是郑洪智,你可以叫我大智.我正在记 ...
- 【Cinemachine智能相机教程】VirtualCamera(二):Body属性
摘要:[长文预警,先收藏后品尝]Cinemachine中的虚拟相机如何跟随目标物体呢?这就需要搞明白Body属性的设置咯. 你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦. ...
- 技术19期:1分钟入门数据治理!必看!【技术篇】
1分钟入门数据治理!必看![技术篇] 前言: 在进行大数据开发过程中,数据调研和开发规范都是必不可少的.数据调研便于理清数据源之间的关系,梳理出哪些数据是符合当下的业务场景以及确定所要用到的加工口径等 ...
- hive hql文档_30分钟入门 Hive SQL(HQL 入门篇)
Hive SQL 几乎是每一位互联网分析师的必备技能,相信每一位面试过大厂的童鞋都有被面试官问到 Hive 优化问题的经历.所以掌握扎实的 HQL 基础尤为重要,既能帮分析师在日常工作中"如 ...
- STM32F103五分钟入门系列(十三)独立看门狗IWDG
参考:STM32F103五分钟入门系列(十三)独立看门狗IWDG 作者:自信且爱笑' 发布时间:2021-07-31 19:50:28 网址:https://blog.csdn.net/Curnane ...
- STM32F103五分钟入门系列(二)GPIO的七大寄存器+GPIOx_LCKR作用和配置
摘自:STM32F103五分钟入门系列(二)GPIO的七大寄存器+GPIOx_LCKR作用和配置 作者:自信且爱笑' 发布时间: 2021-05-01 12:08:32 网址:https://blog ...
- 米筐量化不支持c语言_AQ答疑:三分钟入门量化投资
答疑丨量化投资三分钟入门(一) 量化投资在国外的发展已经有很长时间的历史,虽然国内市场目前仍处于初起阶段,但是因其投资业绩稳定,市场规模和份额不断扩大,得到了越来越多投资人的认可,各个大型券商也在发展 ...
最新文章
- 十六、curator recipes之DistributedIdQueue
- clisp语言中的包
- MATLAB crc.generato,matlab中CRC的函数使用
- Vue + Element UI 实现权限管理系统 前端篇(八):管理应用状态
- client-go workqueue demo
- 小而全的Pandas使用案例
- pat09-散列3. Hashing - Hard Version (30)
- 剑指offer之旋转数组的最小数字
- php private ,public protected三者的区别
- linux单网卡配置vlan,三线机房Linux服务器单网卡配多VlanIP
- 免费题库CISP,NISP,SCSA,SCSP,CISA,CISSP,CISP-PTE
- matlab变压器温度仿真
- 一文说清长安链ChainMaker同步模块
- oracle百分比转数字_子分公司一把手谈企业数字化转型——新疆能源
- Android Espresso(一)——环境建立
- VMware虚拟机安装windows系统
- 神经科学探索脑第二十二章
- 微软新版Windows定价过高 遭韩国政府调查
- delta机器人 寸拳_《这就是寸劲?》第四章
- Echarts修改图例legend文字颜色和字体大小
热门文章
- 当使用VMware给虚拟机扩展硬盘容量时,显示无法扩展容量并提示:在部分链上无法执行所调用的函数,请打开父虚拟磁盘。
- FFMPEG直播推流
- 开关电源原理、电路组成部分
- Android与MVC设计模式相关操作
- 手把手教大家在mac上用VMWare虚拟机装Ubuntu
- LiveNVR监控摄像头Onvif/RTSP视频流媒体服务平台概览负载信息实时展示取流中、播放中、录像中等使用数目说明
- ajax注解解决中文乱码,基于注解的简单MVC框架的实现,以及jquery,prototype,ajax传输乱码问题的一点解决方法...
- Lesson 3 Please send me a card 请给我寄一张明信片
- ppt流程图字体太小_【PPT】几种处理字体的小方法,让PPT中的字体更好看
- 安卓最新版本_小米穿戴app下载安装-小米穿戴app官方版下载v1.2.1 安卓最新版本...