基于Unity Cinemachine的镜头跟踪实现方式

在虚拟场景中,通常人物往远处移动时,会离镜头越来越远,而如果我们想要镜头跟随人物移动,可以通过Cinemachine中的虚拟相机来实现。下面会简要介绍一下Cinemachine及其相关组件,再详细说明具体的实现的方法。

1.什么是Cinemachine?

Unity2017版本推出的摄像机管理官方解决方案,致力于帮助开发者高效的实现虚拟场景中的相机系统。Cinemachine核心组件包括Brain和Virtual Camera(虚拟相机),Brain负责相机的切换,虚拟相机负责拍摄。

2.虚拟相机包含什么?

虚拟相机主要由六个模块组成,分别是:

Lens:包括调整FOV等参数;
Body:负责处理相机和跟踪目标之间的相对位置的这样一个关系;
Aim:负责处理焦点和跟踪目标在镜头中的相对位置;
Noise:模拟手持相机的晃动;
后处理模块:让每个镜头有不同的后处理效果;
Extnesions可扩展模块:包括碰撞处理等功能。

图片

3.Cinemachine主要包含了哪些组件?(v2.4.0)

CinemachineBrain:控制启用的虚拟相机,一个场景一般只需存在一个,必须添加在主相机(负责渲染)节点上。

CinemachineCollider(扩展属性):负责相机碰撞检测以及视线遮挡等功能。

CinemachineConfiner(扩展属性):负责定义相机的活动范围。

CinemachineFollowZoom(扩展属性):动态调整镜头FOV,以便目标在移动的时候会在镜头中保持同样的大小。

CinemachinePostProcessing(扩展属性):给相机添加一组后处理。

CinemachinePath(轨道):通过配置多个关键点组成轨道。将轨道赋给虚拟相机的Body.Path字段,则相机被固定在轨道上;将轨道赋给CinemachineDollyCart(轨道车),轨道车将匀速在轨道移动。

CinemachineSmoothPath(平滑的轨道):通过配置多个关键点组成轨道,自动生成轨道片段的走线方向(CinemachinePath中被Tangenet影响)以保证平缓。

CinemachineDollyCart(轨道车):轨道车可沿轨道匀速行驶,将轨道车赋给虚拟相机的Follow字段则可实现相机跟随轨道车的移动。

CinemachineTargetGroup(目标组):将多个节点设为目标,将目标组赋给虚拟相机的Look At字段,使相机自动寻找最佳位置、角度以找到所有目标。

CinemachineVirtualCamera(虚拟相机):虚拟相机的基础类。

CinemachineClearShot(虚拟相机):配置多个虚拟相机为CinemachineClearShot的子节点,CinemachineClearShot会根据权重、阻挡等,自动选择最佳的子相机进行拍摄。必须要给CinemachineClearShot配置碰撞体(Cinmachine Collider)。

CinemachineExternalCamera(虚拟相机):配置一个额外相机(Camera),主相机(绑定了CinemachineBrain)将参照额外相机的配置进行改变。

CinemachineFreeLook(虚拟相机):围绕目标水平旋转或竖直移动,实际上由三个Body组件为Obit Transposer的虚拟相机构成。我们可以利用FreeLook很轻易的实现第三人称相机。

CinemachineMixingCamera(虚拟相机):对多个虚拟相机进行混合,可给各虚拟相机设置权重。混合的虚拟相机都必须为CinemachineMixingCamera节点的子节点。

CinemachineStateDrivenCamera(虚拟相机):可以把动画状态和虚拟相机进行绑定,当动画状态切换的时候,虚拟相机自动进行切换。必须将切换的虚拟相机设置为此相机的子节点。

CinemachineBlentListCamera(虚拟相机):设置一组虚拟相机的线性变化队列,每个片段可单独设置长度及渐变时间(包含在片段长度中)。

图片

4.基于Cinemachine的镜头跟踪

4.1 安装Cinemachine

● 找到Window菜单,选择Package Mannger,搜索Cinemachine,选择并进行安装。Cinemachine中包含多种虚拟相机,见第3部分,此处主要使用 CinemachineVirtualCamera。

图片

4.2 设置虚拟摄像机跟随的物体

●  选中MainCamera,找到GameObject菜单,选择Align View to Selected,锁定窗口视角。

图片

● 点击Cinemachine,选择Creat Virtual Camera,创建虚拟相机CM vcam1,并将其与Main Carema放在一起。

图片

●  更改CM vcam1中的参数,body设置为Framing Transposer;Aim选择Do nothing;将DogPolyart拖到Follow处,现在Cinemachine就已经锁定人物的中心位置。人物移动时,摄像机将会跟随移动。

图片

4.3 创建人物子物体,调整跟随位置

● Cinemachine默认锁定的是人物的中心位置,如想调整跟随的位置,可 以创建人物的子物体。点击DogPolyart,选择Creat Empty,创建一个子物体,假设命名为LookAtPoint,再在人物上选中你想要跟随的坐标位置,将LookAtPoint拖到CM vcam1中的Follow处,这样就将跟随位置设置为了刚刚创建的子物体上。

图片
图片

4.4 调整摄像机角度

● 如想调整摄像机角度,先选中CMvcam1,点击GameObject,选择Align View to Selected。按住鼠标右键,使用键盘上的ASDW键移动位置,调整摄像机角度,按住Ctrl+Shift+F,或在GameObject菜单中,选择Align With View,则会将当前视角给到Cinemachine。另外,可以调整CMvcam1下的Camera Distance参数,以达到调整视角的远近的目的,数值越大,视角相对越远。

图片

当然,镜头跟踪也可以通过代码控制摄像机跟随角色实现,但是从整体跟随效果来看,还是基于cinemachine的镜头跟踪更胜一筹。

以上整个设置你学会了吗?

作者:彭小秦 | 来源:青榴实验室

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论