Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)22

大家好,又见面了,我是你们的朋友全栈君。

前言

在很多游戏的开场动画或者CG里,我们往往会碰见一些很酷炫的镜头效果。例如一个场景,我们的画面会从远处可以观察到整个场景到被拉近视角观察到场景中的主角。又或者一些CG动画中,我们的视角会像一直飞翔的老鹰一样,掠过整个场景。

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)              Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

想要实现这样的效果,我们不能仅仅让我们的摄像机简单的看向和跟随一个目标,而是期望我们的相机能够按照一定的路径运动。

想要我们的摄像机按一定的路径进行,那么首先我们就要绘制出这个轨道,否则相机无法知道自己应该往哪走。Cinemachine为我们提供了Dolly Paths来实现路径的绘制。

 

Dolly Paths

使用Dolly Path就可以指定出一个特定的路径来供我们的VirtualCamera,例如下图:

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

图中的绿色的路径就是我们的相机的移动路径,它由图中的三个白点(0,1,2三个小圆球)连线而成。这些小白点,我们称之为waypoint。我们可以通过添加删除以及修改waypoint,来绘制我们想要的路径。

Cinemachine为我们提供了CinemachinePathCinemachineSmoothPath两种组件用于绘制路径。

 

CinemachineSmoothPath

在上面图中的路径,我们是用CinemachineSmoothPath来实现的,其内容如下图:

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

其中路径中的0,1,2三个点即对应着组件中Waypoints数组的成员。每个waypoint包含XYZ的坐标信息,以及Roll的旋转信息。waypoint之间的连线方式使用了贝赛尔曲线的插值法(Bezier interpolation),因此我们不需要进行太多的设置,Cinemachine就会帮我们绘制好光滑且连续的路径。推荐使用。

接下来,我们来看看组件中各个属性的具体含义:

Resolution

定义了waypoint之间路径的精确度,即被分为多少段,会影响到路径长度的计算。

例如下面三张图的效果,Resolution的值分别为:1,2,10:

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)          Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)          Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

Path Color

Scene视图中,选中路径时,显示的颜色。

Inactive Path Color

Scene视图中,未选中路径时,显示的颜色。

Width

Scene视图中,路径的宽度。

Looped

勾选该选项,路径会首尾相连。例如下图,左图是不勾选的情况,右图是勾选了的情况:

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)                        Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

Path Length

路径的总长度。

Waypoints

waypoint的数组。

Waypoint.Roll

即waypoint点围绕着z轴的旋转,默认为0,我们的路径会平行于xz平面,若旋转90度,则会垂直于xz平面。例如下图中,左图我们下标1的waypoint的roll = 0,右图我们下标1的waypoint的roll = 90。

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)                               Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

 

CinemachinePath

CinemachinePath相比CinemachineSmoothPath区别主要在于,waypoint的属性中除了Position和Roll外,还多了Tangent属性。该属性主要用于调整waypoint间路径的弯曲程度,由于是我们自己调整的,因此若调整的不好,在Camera经过两段路径的接连处时,可能会出现抖动的情况。

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

大部分属性基本和前面的一样,就不重复介绍了。

Prefer Tangent Drag

如果我们要在Scene视图中通过拖动来调整Tangent时,但是此时Tangent的坐标系和waypoint的坐标系重叠时(即Tangent的值为Vector.zero),会发现点不到Tangent的坐标系。那么此时我们打开这个开关,就可以帮助我们优先选中的是Tangent的坐标系。

Waypoint.Tangent

我们可以理解为,有一个点,它到waypoint的偏移量为tangent的值。它和waypoint的连线,即该waypoint的曲线的切线。如下图:

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

切线的长度代表着bezier handle的强度,长度越长,曲线越平滑。

 

Tracked Dolly

根据前面的知识,我们已经可以绘制自己想要的路径了。那么,接下来,我们要如何让我们的Camera在路径上移动?在设置VirtualCamera的时候,我们知道,当给VirtualCamera设置了Follow目标时,Camera就可以跟随着我们设置的目标移动,而通过设置Body属性,可以设置相关的跟随方式。在Body中Cinemachine为我们提供了Tracked Dolly模式,用于实现Camera在路径上移动,具体设置如下:

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

老规矩,先来看看这些属性的含义:

Path

即VirtualCamera要使用到的路径,也就是我们前面提到的Cinemachine Path 或 Cinemachine Smooth Path。

Path Position 和 Position Units

Position Units的值会影响到Path Position的意义,因此放在一起说:

Position Units 取值 含义
Path Units Path Position取值范围 0~waypoints.Length-1,如Path Position=1,VirtualCamera即在下标1的waypoint所在的位置。
Distance

Path Position取值范围 0~Path Length,如Path Position=1,VirtualCamera即在距离起点长度为1的位置。

Normalized Path Position取值范围 0~1,如Path Position=1,VirtualCamera即在路径的终点。

Path Offset

VirtualCamera位置相对于Path的偏移,X的方向在Path所在平面且垂直于Path,Y的方向是Path的正上方,Z的方向在Path所在平面且与Path平行。会受到path旋转的影响,即waypoint的roll值。

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)                   Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)                  Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

Camera Up

如何设置VirtualCamera.transform.up的值,VirtualCamera在Aim计算时,会尝试遵守这个值。

Default 不修改VirtualCamera的up的值,使用Cinemachine Brain中World Up Override属性代替。
Path 使用当前位置Path的up向量
Path No Roll 使用当前位置Path的up向量,但是不受Roll影响
Follow Target 使用Follow目标的tramsform.up
Follow Target No Roll 使用Follow目标的tramsform.up,但是不受Roll影响

Auto Dolly

使用Auto Dolly,可以自动将VirtualCamera移动到Path上最接近Follow目标的位置。这样当我们Follow目标移动的时候,Path上的VirtualCamera会跟着移动到最接近我们目标的位置。

Enabled

开启或关闭Auto Dolly功能,开启该功能对性能会造成一定的影响。

Position Offset 偏移量(基于position units),Camera的最终在Path上的位置 = 最近的点 + 偏移量。
Search Radius

搜索半径,我们的Path是根据waypoint一段段连接起来的,这个半径指的是,在VirtualCamera所在的当前片段,向两边延伸多少个片段,作为搜索范围。若为0,则表示整个Path都作为搜索范围。

如果当目标移动时,Path上计算出的最近点不稳定,我们可以使用较小的值来缩小范围。

Search Resolution 将一个片段分成多少连续的块用于搜索。值越高结果越精确,但是消耗的性能也会更高。

不过需要注意的是,在某些情况下,我们目标移动一点点,但是导致Camera在Path上位移了一大段距离,例如下图:

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

甚至一些极端的情况,例如圆形的Path,目标在圆心,那么Path上的任何一个点到目标的距离都是最小距离。

 

Cinemachine Dolly Cart

如果想要我们的Camera自动在Path上移动,那么Cinemachine Dolly Cart组件可以帮助到我们。它可以约束带有它的GameObject在Cinemachine Path或Cinemachine Smooth Path上移动。效果如下:

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

属性

Cinemachine Dolly Cart的属性如下

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

Path

即指定一个Cinemachine Path或Cinemachine Smooth Path。

Update Method

速度不为0时,移动Cart的时机。对于普通的组件更新使用Update,若想要同步物理模块,使用Fixed Update

Position Units与Position

Tracked Dolly中的相同,不重复介绍了。

Speed

Cart的移动速度,同样受到Position Units的影响。

 

应用

Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)

在工具栏中Cinemachine提供了Create Dolly Camera with Track 和 Create Dolly Track With Cart两个快捷方式。

 

Create Dolly Camera with Track

可以帮我们创建一个VirtualCamera和一个Cinemachine Smooth Path,并且为我们设置好了Body的Tracked Dolly,与关联好了对应的Path。

此外我们也可以自己创建新的GameObject,添加Cinemachine Path或Cinemachine Smooth Path组件,并关联到VirtualCamera上。

接着通过添加删除修改waypoint就可以编辑我们的Path了。

 

Create Dolly Track With Cart

可以帮我们创建一个Cinemachine Smooth Path和一个Cinemachine Dolly Cart,同样关联好Cart的Path属性。

通常我们会将VirtualCamera的Follow目标设置为Cart,Body设置为Hard Lock To Target,这样我们的VirtualCamera就会和Cart同步移动了。

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140435.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月28日 上午6:40
下一篇 2022年5月28日 上午6:40


相关推荐

  • Svn服务启动的两种方式

    Svn服务启动的两种方式一、svn服务器启动›cmd命令行启动:vsvnserve-d–r文档仓库路径-d后台执行›-r版本库的根目录二、›Windows服务自动启动利用xp、2000以上的系统自带的工具

    2022年7月3日
    24
  • Sqlstate详解

    Sqlstate详解Sqlstate 详解 nbsp nbsp nbsp nbsp 根据 X Open 和 SQLAccessGro 规范 1992 所进行的定义 SQLERROR 返回 SQLSTATE 值 SQLSTATE 值是包含五个字符的字符串 五个字符包含数值或者大写字母 代表各种错误或者警告条件的代码 SQLSTATE 有个层次化的模式 头两个字符标识条件的通常表示错误条件的类别 后三个字符表示在

    2026年3月26日
    3
  • 蓝牙音频编码方式_aac蓝牙编码

    蓝牙音频编码方式_aac蓝牙编码https://zhuanlan.zhihu.com/p/265597723早在2000年,蓝牙耳机就已经出现,但由于技术限制,只能用于通话。2008年,随着蓝牙A2DP(AdvancedAudioDistributionProfile)开始普及,立体声蓝牙耳机日渐流行。发展到现在,手机的耳机插口几近取消,双无线(TWS,TrueWirelessStereo)耳机正处于爆发期…本文从蓝牙音频传输原理讲起,从旧到新介绍五种蓝牙音频编码,最后落脚实地,介绍如何选择和配置耳机/手机的蓝牙

    2025年10月31日
    5
  • 护照快到期了

    护照快到期了,周一上午请了半天假,去办理护照延期。听说大连公安局出入境管理处(以下简称入管处)搬到了泉水。上网查办护照延期需要带身份证,户口本和护照原件。又查了一下得知从数码广场到入管处需要坐26到51广场倒303路在龙泉小学下车,然后往前走1000多米.慢慢

    2022年4月8日
    74
  • Adminlte数据分页设置「建议收藏」

    Adminlte数据分页设置「建议收藏」##分页数据提示英文翻译成中文在jquery.dataTables.js中”oLanguage”:{ “sProcessing”:”处理中…”, “sLengthMenu”:”显示_MENU_项结果”, “sZeroRecords”:”没有匹配结果”, “sInfo”:”显示第_START_至_END_项结果,共_TO…

    2022年7月27日
    3
  • 职称计算机一个模块1500,职称计算机考试模块如何选择

    职称计算机一个模块1500,职称计算机考试模块如何选择职称计算机考试模块如何选择选择模块的原则:1、熟悉度:选择自己最常用切最熟悉的模块进行学习考试,像WindowsXP、Word2003、Excel2003、PPT2003、Internet应用、网页制作等都是大家较为熟悉的模块。2、相关性:有些模块之间的相关性很近,比如:学了Word之后再去学习PPT及Frontpage就显得非常容易。3、常用性:像Windows98、Word98、E…

    2022年6月2日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号