【Cinemachine智能相机教程】VirtualCamera(二):Body属性

【Cinemachine智能相机教程】VirtualCamera(二):Body属性摘要:【长文预警,先收藏后品尝】Cinemachine中的虚拟相机如何跟随目标物体呢?这就需要搞明白Body属性的设置咯。你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦。自从咱们一起5分钟入门Cinemachine之后,上周我和你一起学习了Cinemachine中的VirtualCamera的基本用法,今天咱们来学习一下它的Body属性。**【长文预警,先收藏…

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

摘要:【长文预警,先收藏后品尝】Cinemachine中的虚拟相机如何跟随目标物体呢?这就需要搞明白Body属性的设置咯。

你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦。

自从咱们一起5分钟入门Cinemachine之后,上周我和你一起学习了Cinemachine中的VirtualCamera的基本用法,今天咱们来学习一下它的Body属性。
**【长文预警,先收藏后品尝】**Cinemachine中的虚拟相机如何跟随目标物体呢?这就需要搞明白Body属性的设置咯。

Body属性

CinemachineVitualCamera组件中的Body属性用于设置相机移动时使用什么算法。需要先设置好上面的Follow属性。

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

Cinemachine包含以下移动相机的算法:

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

  • Do Nothing:不移动虚拟相机
  • Framing Transposer:跟随目标移动,并在屏幕空间保持相机和跟随目标的相对位置。
  • Hard Lock to Target:虚拟相机和跟随目标使用相同位置。
  • Orbital Transposer:相机和跟随目标的相对位置是可变的,还能接收用户的输入。常见于玩家控制的相机。
  • Tracked Dolly:相机沿着预先设置的轨道移动。
  • Transposer:跟随目标移动,并在世界空间保持相机和跟随目标的相对位置固定。

Do Nothing算法

选中这个算法时,虚拟相机激活时,会控制Unity相机会固定在当前虚拟相机的位置,不会移动。用于固定位置的镜头,也可以通过自定义脚本来控制相机的位置。通常和Look At配合使用,模拟固定位置的跟随镜头。

Framing Transposer算法

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

选中这个算法时,Cinemachine会在屏幕空间将相机和跟随物体保持固定的相对位置关系。只会改变相机的位置,不会改变相机的旋转。还可以设置偏移、阻尼、构图规则等等。

Framing Transposer算法是为2D和正交相机设计的,主要用于2D情况。但是对于透视相机和3D环境也可以使用。

这个算法工作流程大概是:首先沿着相机的Z轴移动相机直到Camera Distance距离的XY平面上,然后在XY面上平移,直到目标物体在屏幕空间到达期望的位置。
特别注意:使用Framing Transposer时,Look At属性必须为空。

如果Follow属性是一个Target Group(后面会讲到),会有额外的设置。

属性详解

Lookahead Time:根据目标的运动,调整虚拟相机与“跟随”目标的偏移量。Cinemachine预测目标在未来数秒之内到达的位置并提前设置Unity相机的位置。这个功能对微动的动画敏感,并且会放大噪点,导致非预期的相机抖动。如果不能接受目标运动时的相机抖动,减小这个属性可能会使相机动画更流畅。
Lookahead Smoothing:预测算法的平滑度。较大的值可以消除抖动但会使预测滞后。
Lookahead Ignore Y:如果选中,在预测计算时会忽略沿Y轴的移动。

X Damping:相机在X轴上移动的阻力系数。较小的值会使相机反应更快。较大的值会使相机的反应速度变慢。每个轴使用不同的设置可以制造出各种类型相机的行为。
Y Damping:相机在Y轴上移动的阻力系数。较小的值会使相机反应更快。较大的值会使相机的反应速度变慢。
Z Damping:相机在Z轴上移动的阻力系数。较小的值会使相机反应更快。较大的值会使相机的反应速度变慢。

各区域示意图

Screen X:目标的水平屏幕位置。相机移动的结果是使目标处于此位置。
Screen Y:目标的垂直屏幕位置,相机移动的结果是使目标处于此位置。
Camera Distance:沿摄像机Z轴与跟随目标保持的距离。
Dead Zone Width:当目标在此位置范围内时,不会水平移动相机。
Dead Zone Height:当目标在此位置范围内时,不会垂直移动相机。
Dead Zone Depth:当跟随目标距离相机在此范围内时,不会沿其z轴移动相机。

Unlimited Soft Zone:如果选中,Soft Zone没有边界
Soft Zone Width:当目标处于此范围内时,会水平移动相机,将目标移回到Dead Zone中。Damping属性会影响摄像机的运动速度。
Soft Zone Height:当目标处于此范围内时,会垂直移动相机,将目标移回到Dead Zone中。Damping属性会影响摄像机的运动速度。
Bias X:Soft Zone的中心与目标位置的水平偏移。
Bias Y:Soft Zone的中心与目标位置的竖直偏移。

Center On Active:选中时,虚拟相机激活时会将镜头中心对准物体。不选中时,虚拟相机会将目标物体放置在最近的dead zone边缘。

下面的属性仅当Follow属性设置为Target Group时显示。

Group Framing Mode:指定构图时要考虑的屏幕尺寸。

  • Horizontal 仅考虑水平尺寸。忽略垂直尺寸。
  • Vertical 仅考虑垂直尺寸。忽略水平尺寸。
  • Horizontal And Vertical 使用水平和垂直尺寸中较大的那个来获得最佳匹配。
  • None 不进行任何构图调整。

Adjustment Mode 如何调整相机以获得所需的取景。可以是缩放、拉近拉远或同时进行。

  • Zoom Only 不移动相机,仅调整FOV。
  • Dolly Only 移动相机,不修改FOV。
  • Dolly Then Zoom 将相机移动到范围允许的最大范围,然后根据需要调整FOV。

Group Framing Size:目标应占据的屏幕大小比例。使用1填充整个屏幕,使用0.5填充一半的屏幕,依此类推。

Max Dolly In:朝目标拉近相机的最大距离。
Max Dolly Out:远离目标拉远相机的最大距离。
Minimum Distance: 限制相机可以接近目标的最小距离。
Maximum Distance:限制相机可以远离目标的最大距离。
Minimum FOV:自动调节FOV时的最小值。
Maximum FOV:自动调节FOV时的最大值。
Minimum Ortho Size:自动调节正交尺寸时的最小值。
Maximum Ortho Size:自动调节正交尺寸时的最大值。

Cinemachine Target Group组件

Cinemachine Target Group组件可以让多个GameObjects作为一个组,设置为Look At的对象。在虚拟相机中使用Group Composer算法,可以设置Follow属性为这个TargetGroup。

如何创建一个Target Group呢?

1、菜单栏选择Cinemachine > Create Target Group Camera。Unity会在场景中添加一个虚拟相机和Target Group。Follow和Look At属性会自动设置为这个Group。
2、Hierarchy中选中这个Group
3、Inspector上可以点击加号+添加新的物体到这个组
4、点击加号后,设置GameObject、权重和半径。
5、可以重复多次3-4步来添加更多物体。

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

属性详解
Position Mode 如何计算Group的位置

  • Group Center 根据所有物体的包围盒计算一个包含它们的大包围盒,Group Center就是这个大包围盒的中心
  • Group Average 根据所有物体的位置加权重计算平均值

Rotation Mode 如何计算Target Group的旋转

  • Manual 使用TargetGroup根物体的旋转。推荐设置
  • Group Average 根据所有物体的旋转加权重计算

Update Method 更新Target Group的Transform的时机

Targets 组内包含的物体列表

  • Weight 每个对象的权重
  • Radius 每个物体的半径,用于计算包围盒。不可为负数。

Hard Lock To Target算法

Unity相机保持和目标位置一致,即位置同步。

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

Damping:相机追赶上目标位置的时间。如果为0,那就是保持同步,如果大于0,相当于经过多少秒相机和目标位置重合。

Orbital Transposer算法

这个算法支持相机和目标之间的可变相对位置关系。可以接受玩家的输入,动态的控制相机的位置。

Orbital Transposer引入了一个新的概念叫heading,代表了目标移动的方向或面朝的方向。Orbital Transposer会尝试移动相机,让镜头朝向heading的方向。默认情况下,相机的位置会在target的正后面。也可以通过Heading Bias属性设置。

如果给Orbital Transposer添加了输入控制器,玩家就可以控制相机围绕目标旋转。可以设置为Input Manager中的轴,也可以直接用脚本控制。

Recenter To Target Heading属性选中时,在没有输入时Orbital Transposer可以自动重新居中相机。

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

属性详解
Binding Mode绑定模式:从目标推断位置时使用的坐标空间。

  • Lock To Target On Assign:本地空间,相机被激活或target赋值时的相对位置。
  • Lock To Target With World Up:本地空间,保持相机y轴朝上,yaw和roll为0。
  • Lock To Target No Roll:本地空间,锁定到目标物体,roll为0。
  • Lock To Target:本地空间,锁定到目标物体
  • World Space:世界空间
  • Simple Follow With World Up:相对于目标的位置,使用相机的本地坐标系,保持相机y轴朝上

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

Follow Offset:跟随目标时的位置偏移
X Damping:相机在X轴上移动的阻力系数。较小的值会使相机反应更快。较大的值会使相机的反应速度变慢。每个轴使用不同的设置可以制造出各种类型相机的行为。 绑定模式为Simple Follow With World Up时不可用。
Y Damping:相机在Y轴上移动的阻力系数。较小的值会使相机反应更快。较大的值会使相机的反应速度变慢。
Z Damping:相机在Z轴上移动的阻力系数。较小的值会使相机反应更快。较大的值会使相机的反应速度变慢。

【下面3个属性参考上面的飞机图】
Yaw Damping:相机在y轴旋转的阻力系数。较小的数字会使相机反应更快。较大的数字会使相机的反应速度变慢。每个轴使用不同的设置可以制造出各种类型相机的行为。Binding Mode为Lock to Target With World Up、Lock to Target No Roll、Lock to Target时可用。
Pitch Damping:相机在x轴旋转的阻力系数。较小的数字会使相机反应更快。较大的数字会使相机的反应速度变慢。 Binding Mode为Lock to Target No Roll、Lock to Target时可用。
Roll Damping:相机在z轴旋转的阻力系数。较小的数字会使相机反应更快。较大的数字会使相机的反应速度变慢。 Binding Mode为Lock to Target时可用。

Heading:计算Follow朝向的方法
Definition:计算方法

  • Position Delta:基于当前帧和上一帧的目标位置之间的变化
  • Velocity:使用目标的刚体速度,如果目标没有Rigidbody组件,会使用Position Delta
  • Target Forward:使用目标的transform.forward作为heading的方向
  • World Forward:使用世界坐标系中的Vector3.forward作为heading方向

Bias:相机围绕旋转的偏移,单位是度数。

Recenter To Target Heading:接收不到用户输入时,自动居中。
Enable:是否启用
Wait Time:等待延迟时间,用户无输入后多长时间重新自动居中。
Recentering Time:重新自动居中的过程花费的时间

X Axis:通过玩家输入控制Heading方向。
Value:当前值
Value Range:输入范围
Speed:最大速度(Max Speed)或者最大增加速度(Input Value Gain)
Accel Time:加速到最高速度所需要的时间
Decel Time:减速到0所需的时间
Input Axis Name:接收输入的Input Manager中的轴名称,空字符串代表不接收输入。
Input Axis Value:玩家输入的值。可以直接通过自定义脚本控制。
Invert:是否反转输入的值(取相反数)

Tracked Dolly

这个算法可以让相机沿预定路径移动。使用Path Position属性来指定将虚拟相机放置在路径上的位置。

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

使用Auto-Dolly模式将虚拟相机移动到路径上最接近Follow目标的位置。启用后,Auto-Dolly会自动将虚拟相机的位置移动到最接近目标的路径上的位置。

提示:使用Auto-Dolly模式时,一定要谨慎选择路径形状。在围绕某个点形成弧形的路径上可能会有问题。举一个极端的例子,考虑一条以Follow目标为中心的完美圆形路径。路径上最接近目标的点变得不稳定,因为圆形路径上的所有点都同样接近目标。在这种情况下,将Follow目标移动很小的距离会导致相机在轨道上移动很大的距离。

属性详解
Path 相机移动的路径。此属性必须引用CinemachinePath或Cinemachine Smooth Path对象。
Path Position 沿路径放置相机的位置。直接给这个属性作动画或启用Auto-Dolly。这个值以Position Units指定的单位为单位。
Position Units 路径位置的度量单位。

  • Path Units 沿路径使用路径点。0表示路径上的第一个路径点,1表示第二个路径点,依此类推。
  • Distance 沿路径使用距离。根据路径的Resolution属性对路径进行采样。Cinemachine创建一个距离查找表,并将其存储在内部缓存中。
  • Normalized 使用路径的开头和结尾。值0表示路径的起点,值1表示路径的终点。
    Path Offset 相机相对于路径的位置。X垂直于路径,Y向上,而Z平行于路径。使用此属性可使相机偏离路径本身。

X Damping 设置相机如何在垂直于路径的方向上保持其位置。较小的数字会使相机反应更快。较大的数字会使相机的响应速度变慢。每个轴使用不同的设置可以产生多种相机表现。
Y Damping 设置相机如何在路径局部坐标向上方向上保持其位置。较小的数字会使相机反应更快。较大的数字会使相机的响应速度变慢。
Z Damping 设置相机如何在平行于路径的方向上保持其位置。较小的数字会使相机反应更快。较大的数字会使相机的响应速度变慢。

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

Camera Up 如何为虚拟相机设置向上的方向。这会影响屏幕的组成,因为相机的Aim算法会尝试遵循向上方向。

  • Default 不修改虚拟相机的向上方向,而是使用Cinemachine Brain中的World Up Override属性。
  • Path 在当前点使用路径的向上方向。
  • Path No Roll 在当前点使用路径的向上方向,但Roll设置为零。
  • Follow Target 使用Follow目标的向上向量。
  • Follow Target No Roll 使用Follow目标的变换中的向上向量,但Roll为零。

Pitch Damping 相机如何跟踪目标旋转的x角。较小的数字会使相机反应更快。较大的数字会使相机的响应速度变慢。
Yaw Damping 相机如何跟踪目标旋转的y角。较小的数字会使相机反应更快。较大的数字会使相机的响应速度变慢。
Roll Damping 相机如何跟踪目标旋转的z角。较小的数字会使相机反应更快。较大的数字会使相机的响应速度变慢。

Auto Dolly 控制自动轨道位置选择方式。要使用此功能,必须设置Follow目标。

  • Enabled 选中以启用。注意:这可能会影响性能,具体取决于search resolution。
  • Position Offset 以position units为单位从路径上的最近点到跟随目标的偏移量。
  • Search Radius 当前段两侧的段数。如果只有一个路径使用0。当路径相对于目标位置的形状导致路径上最近的点变得不稳定时,请使用较小的数字。
  • Search Resolution Cinemachine通过将片段分成许多直片段来搜索片段。数字越高,结果越准确。但是,对于更大的数字,性能成比例地变慢。

Transposer

这个算法将使用固定的相对位置将虚拟相机跟随目标,也可以使用Damping属性。

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

属性详解
Binding Mode绑定模式:从目标推断位置时使用的坐标空间。

  • Lock To Target On Assign:本地空间,相机被激活或target赋值时的相对位置。
  • Lock To Target With World Up:本地空间,保持相机y轴朝上,yaw和roll为0。
  • Lock To Target No Roll:本地空间,锁定到目标物体,roll为0。
  • Lock To Target:本地空间,锁定到目标物体
  • World Space:世界空间
  • Simple Follow With World Up:相对于目标的位置,使用相机的本地坐标系

【Cinemachine智能相机教程】VirtualCamera(二):Body属性

Follow Offset:跟随目标时的位置偏移
X Damping:相机在X轴上移动的阻力系数。较小的值会使相机反应更快。较大的值会使相机的反应速度变慢。每个轴使用不同的设置可以制造出各种类型相机的行为。 绑定模式为Simple Follow With World Up时不可用。
Y Damping:相机在Y轴上移动的阻力系数。较小的值会使相机反应更快。较大的值会使相机的反应速度变慢。
Z Damping:相机在Z轴上移动的阻力系数。较小的值会使相机反应更快。较大的值会使相机的反应速度变慢。

【下面3个属性参考上面的飞机图】
Yaw Damping:相机在y轴旋转的阻力系数。较小的数字会使相机反应更快。较大的数字会使相机的反应速度变慢。每个轴使用不同的设置可以制造出各种类型相机的行为。Binding Mode为Lock to Target With World Up、Lock to Target No Roll、Lock to Target时可用。
Pitch Damping:相机在x轴旋转的阻力系数。较小的数字会使相机反应更快。较大的数字会使相机的反应速度变慢。 Binding Mode为Lock to Target No Roll、Lock to Target时可用。
Roll Damping:相机在z轴旋转的阻力系数。较小的数字会使相机反应更快。较大的数字会使相机的反应速度变慢。 Binding Mode为Lock to Target时可用。


扩展阅读

【Cinemachine】VirtualCamera虚拟相机详解(一)
5分钟入门Cinemachine智能相机系统
Unity编辑器录屏神器:Unity Recorder
5分钟制作过场动画
 【建议收藏】找不到免费的角色动画?来试试mixamo

【扩展学习】洪流学堂公众号回复timeline可以下载Timeline&Cinemachine系列教程全文带目录PDF


呼~ 今天小新絮絮叨叨的真是够够的了。没讲清楚的地方欢迎评论,咱们一起探索。

我是大智,你的技术探路者,下次见!

别走!点赞收藏哦!

好,你可以走了。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140484.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

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