当前位置:   article > 正文

Cinemachine - Unity相机入门_unity cinemachine 切换相机

unity cinemachine 切换相机

Unity相机策略千千万,Cinemachine独占一半

以上权当一句玩笑话

不过就博主入职的若干芝麻小公司而言,Cinemachine出现的频率堪称恐怖。

有直接用Cinemachine的,也有魔改后再用的……

那么,为什么Cinemachine有这样的魔力呢?至此,我开始尝试《走进相机》……

注意:只有2017.1之后版本的Unity才可以使用Cinemachine

Cinemachine是什么?

cinemachine相机是虚拟的,内部由数据来控制,所以体量小,性能消耗小

在运行时将场景的camera绑定到某一个cinemachine虚拟相机上

所以镜头的操作是由cinemachine来实现,而真正的相机功能还是由场景原本的camera来完成

而Cinemachine本身提供了很多封装好的方法

使用Cinemachine可以很方便地实现相机跟随人物、镜头融合、轨道相机……在游戏快速开发阶段,这点堪称绝杀。

本篇博客只是粗略了解下cinemachine提供的各类型相机以及使用方法,如有误欢迎评论区指正。


以下开始逐个了解各个相机的参数

一、virtual camera

virtual-camera即普通虚拟相机,是最简单的

可以结合timeline完成镜头融合,切换镜头等操作

1、cinemachine基础设置

solo:虚拟相机存在优先级,点击solo后,Game窗口的镜头会锁定到该虚拟相机上,方便调试

Game Window Guides:描述相机视野的窗口白线

Save During Play:播放时保存

Priority:优先级。优先级高的相机会显示在Game窗口,但优先级无法影响timeline中相机的调度

Follow:获取跟踪物体的transform

LookAt:获取镜头锁定物体的transform

Field Of View:视野范围设置

Near Clip Plane:近裁剪面设置(相当于能观察的最近距离)

Far Clip Plane:远裁剪面设置(相当于能观察的最远距离)

2、cinemachine进阶设置

        body

body内的数据,只在Follow栏存在物体才会被真正使用。

Binding Mode:绑定的模型类型

Follow Offset:跟随补偿。相当于cinemachine在跟随物体时的镜头偏移量

X/Y/Z/Yaw Damping:四种阻尼类型。相当于镜头在移动时的缓冲程度

        Aim

Aim中的数据,只有Look At栏存在物体时才会被真正使用

Tracked Object Offset:跟踪对象偏移补偿。相当于cinemachine在跟踪物体时的镜头偏移量

Horizontal/Vertical Damping:水平/垂直阻尼

Screen X/Y:屏幕的偏移量

Dead Zone Width/Height:死亡区域的长宽设置。在死亡区域内的时候,镜头不会跟踪物体。当物体离开死亡区域后,镜头才会开始跟踪物体

Soft Zone Width/Height:软化区域的长宽设置

  1. 黄色的点为镜头焦点,中心的透明矩形为死亡区域,蓝色区域为软化区域
  2. 当镜头焦点在死亡区域时,镜头不会跟踪物体
  3. 当镜头焦点出现在软化区域时,镜头会开始跟踪物体
  4. 红区为焦点不可到达的地方

Bais X/Y:软化区域的偏移设置

Center On Activate:是否在激活时居中

        Noise

镜头噪声。可以制作出屏幕抖动抖等效果

Noise有两种状态,none和Basic Multi Channel Perlin

Noise Profile:可以设置噪声,实现屏幕抖动的效果

TimeLine实现镜头融合

演示:

TimeLine实现镜头融合


二、Dolly Camera with Track

顾名思义,Dolly Camera with Track即为轨道相机

相当于可以给相机规划一个轨道路线,相机会沿着轨道的路线来移动

创建了Dolly Camera with Track后,会创建两个物体

一个是Virtual Camera,还有一个轨道(Dolly Track)

VirtualCamera的设置变动

        Body

Body的类型为Tracked Dolly

新增的参数:

Path:添加轨道。也就是挂载了轨道脚本的物体

Path Position:相机在轨道上的位置。

如果轨道相机挂载了跟随的物体,那么Auto Dolly即可使用

他会自动的设置相机在轨道的位置,实现跟踪物体的效果

        Dolly Track

                Dolly Track是挂载了CinemachineSmoothPath脚本的物体

Resolution:轨道清晰度调整。作用是调整轨道间距的大小。

Appearance:

Path Color:路径颜色

Inactive Path Color:非活动路径颜色

Width:轨道宽度

Looped:循环

WayPoints:轨道点。一条完整的轨道是由多个轨道点相互连接形成的

点击“+”即可增加轨道点

x,y,z三参数分别为轨道点在三维空间上移动的数值

Roll为轨道点自身的旋转角度

TimeLine结合动画实现轨道镜头的移动

演示:

个人运镜水平非常的拉胯,凑合看看


三、ClearShot Camera

ClearShot Camera一般是用于切镜操作

什么是切镜:

        并不只是单纯地切换镜头。在摄像机拍摄物体时,如果在镜头和物体之间存在遮挡物,就需要切换镜头的视角,来实现在不同位置观察物体的操作

实现思路:

1、点击创建ClearShot Camera后,会生成一个CM ClearShot和若干个CM vcam

2、ClearShot挂载了CinemachineClearShot组件,用于管理不同机位的vcam

3、vacm挂载了一个vitrual Camera(虚拟相机)组件,用于实现虚拟相机的功能。

        并且还挂载了一个 Cinemachine Collider组件。

        Collider组件是用于判断当前的机位的视线是否会被某个层级的物体遮挡。

        如该机位的视线被遮挡了,那么ClearShot会自动切换到下一个机位来观察选中的物体

Clear Shot

        负责管理旗下的所有参与切镜操作的vcam

solo:虚拟相机存在优先级,点击solo后,Game窗口的镜头会锁定到该虚拟相机上,方便调试

Game Window Guides:描述相机视野的窗口白线

Save During Play:播放时保存

Priority:优先级

        优先级高的相机会显示在Game窗口。该优先级是参与全局的cinemachine类型相机优先级的比较。它的子物体(各个vcam)的Priority是在Clear Shot内进行比较

Follow:获取跟踪物体的transform

LookAt:获取镜头锁定物体的transform

        (Follow和LookAt上绑定的transform是可以被子物体继承的)

Activate After:Clear Shot激活的时间

Min Duration:最小持续时间

Randomize Choice:随机化选择

Default Blend:镜头混合种类选择。也就是切换镜头的方式

Custom Blends:自定义镜头混合

Virtual Camera Children:存储挂载在Clear Shot下的子相机(vcam)

Vcam

        vcam就相当于切镜时的一个机位。

        挂载了CinemachineVirtualCamera组件。用于实现虚拟相机的基础功能

        挂载了Cinemachine Collider组件。参与判断切镜条件已经切镜参数设置

CinemachineVirtualCamera

        具体功能查看:VirtualCamera

唯一需要注意的点是Follow和Look At两个参数

如果Follow和Look At不设置参数时。默认继承父物体Clear Shot上挂载的transform

设置了参数后,在使用该机位时,会暂时覆盖父物体上挂载的transform

Cinemachine Collider

Collide Against:碰撞层级设置。

        当一个处于执行中机位的视线被指定层级的物体遮挡后,会触发改变机位的行为。

Ignore Tag:相机忽视标签。

        当遮挡相机视线的物体,标签为Ignore Tag时,相机不出触发改变机位的行为

Transparent Layers:透明层设置

TimeLine实现切镜

演示:


Free Look Camera

Free Look Camera即自由视角相机

可以实现第三人称自由视角的移动。使用起来方便快捷,并且参数一般是可以由c#代码控制的

在创建了Free Look Camera后,会生成一个挂载了CinemachineFreeLook组件的虚拟相机

CinemachineFreeLook组件继承于CinemachineVirtualCamera组件(Virtual Camera)。

所以Free Look Camera的大部分功能是和Virtual Camera相同的

相机整体介绍

Free Look Camera通过三维空间的相机轨道来控制相机位置以及旋转角度的变化

它拥有三条轨道:Top,Middle,Buttom。用于调控Free Look Camera的位置和旋转角度

每一条轨道的参数都是独立开来的,包括机位高度,相机视野大小,渲染范围大小,相机区域大小等

所以可以把一个Free Look Camera看做是三个不同高度的Virtual Camera进行操作

CinemachineFreeLook

        部分参数功能参考:VritualCamera

        CinemachineFreeLook组件参数主要分为两个部分:

                  一部分用于控制Free Look Camera的整体参数(非轨道参数)

                  另一部分用于控制三个轨道的参数(轨道参数)

        非轨道参数

        (与Virtual Camera相同的参数不再解释)

        Common Lens:开启Lens统一设置。

                开启后,统一设置三条轨道的Lens。

                关闭后,每个轨道的Lens需要单独设置。

Axis Control部分:Free Look Camera的轴控制

Y/X Axis:

        Value:相机位置设置。

                Y轴参数改变相机在三条轨道之间的高度位置

                X轴参数改变相机在某个轨道之间的水平位置

        Speed:相机移动速度设置

                Y轴参数可以改变相机在三条轨道之间移动时的垂直速度

                X轴参数可以改变相机在某个轨道之间移动时的水平速度

        Accel Time:相机移动时的加速时间

        Decel Time:相机移动时的减速时间

        Input Axis Name:输入轴名称

                默认是Mouse X/Y。也就是鼠标移动对应的Axis Name来操作相机

                可以自定义成其他的Axis Name

        Input Axis Value:输入轴的值

        Invert:是否开启轴反转

                当你在往左滑动时,却发现镜头往右转

                说明当前轴的移动条件和预期相反

                 可以通过开关轴反转来达到自己的要求

Y Axis Rencentering:

        Enabled:是否开启Y轴重新居中。

                开启后,当停止对相机的轴操作,相机会重新移动回Middle轨道上

        Wait Time:停止操作后的等待时间

        Recentering Time:重新定心时间。也就是回到轨道上的时间

Orbits:

        Binding Mode:绑定模式设置

        Spline Curvature:样条曲线曲率。控制轨道上下移动轨迹的曲率

        Top/Middle/Bottom Rig:三条轨道的大小以及高度的设置

                Height参数控制轨道高度

                Radius参数控制轨道半径

        轨道参数

                Look At Override:注视覆盖

                Lens:在非轨道参数中,将Common Len设为true后激活

                        Field Of View:视野范围设置

                        Near Clip Plane:近裁剪面设置(相当于能观察的最近距离)

                        Far Clip Plane:远裁剪面设置(相当于能观察的最远距离)

                        Dutch:镜头旋转设置

                其余参数,参考VritualCamera

实现镜头跟随角色

演示:


State-Driven Camera

State-Driven Camera为状态驱动相机

顾名思义,通过场景中某个物体自身的状态(包括动画系统里的参数)来驱动cinemachine虚拟相机的切换

所以状态驱动相机需要挂载场景中某个物体的Animator。

State-Driven Camera分为两个部分:

        ①状态驱动控制台:挂载了CinemachineStateDrivenCamera组件

        ②虚拟相机集合:由若干个虚拟相机组合而成(例如Virtual Camera,Free Look Camera)

CinemachineStateDrivenCamera

负责接收已挂载的Animator参数。用于控制虚拟相机集合

由于存在多个子物体(Virtual Camera)。所以某些参数是可以继承给子物体的

具体解释请看ClearShotCamera中的Clear Shot栏

Animated Target:绑定场景中某物体的Animator。用于获取动画状态参数来控制虚拟相机合集

Default Blend:默认混合设置

        第一个参数可以选择切换镜头时的效果,例如Cut是立刻切镜、Ease in附带镜头移动

        第二参数是切镜效果的持续时间

Custom Blends:选择自定义的混合设置

        可以新增自定义混合设置:例如物体从idle状态变成walk状态时,让镜头切换效果是Cut

        例如物体从walk状态变成idle状态时,让镜头切换效果是Ease int

状态切换配置表:

设置:某状态对应的指定虚拟相机

Wait:执行虚拟相机切换前的等待时间

Virtual Camera Children:增加或删除子虚拟相机

使用动画状态控制虚拟相机切换

演示:

使用动画状态控制虚拟相机切换


Group Target Camera

Group Target Camera:目标组跟随相机

可以保证需要观察的多个物体都在相机的视野范围内

相机会动态更改视野的范围,保证可以观察到指定的多个物体

在生成Group Target Camera后:

        会创建一个挂载了CinemachineTargetGroup脚本的TargetGroup物体

        以及若干个Virtual Camera

TargetGroup负责管理子虚拟相机Virtual Camera

CinemachineTargetGroup

挂在TargetGroup上

Position Mode:位置模式

Rotation Mode:旋转模式

Update Method:相机更新模式

物体跟随表:增加或删除需要跟随的物体

        Target:存放被跟随物体的transform

        Weight:权重设置

        Radius:半径设置

CinemachineVirtualCamera

具体参数功能请参考:VritualCamera

新增的参数:

Aim

        在Aim参数集中,新增了有关Group Target的参数设置

Group Framing Size:组框架大小设置。

        就是多个组物体在相机中所占据的空间大小

Framing Mode:框架模式

Frame Damping:阻尼设置。也就是相机视野变化的速率大小

Adjustment Mode:调整相机模式

Minimum Fov:最小镜头范围设置

Maximum Fov:最大镜头范围设置

实现相机跟随目标组

演示:

实现相机跟随目标组


顺着Cinemachine自个的相机类型,笼统的实操了一遍,以应付项目中临时的需求。hhhh……

摸鱼本是无敌路,何须再借摆烂骨?

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/483512
推荐阅读
相关标签
  

闽ICP备14008679号