【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


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

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

别走!点赞收藏哦!

好,你可以走了。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 海思hi3518ev300说明书_海思3516dv300方案开发

    海思hi3518ev300说明书_海思3516dv300方案开发1.硬件内置AudioCodec/外置FM1288,hi3516dv300为内置audiocodec,硬件上外接FM1288,通过MIC单端/差分输入音频.2.重要概念2.1.I2S相关概念(1)LRCLK(帧时钟,也称为WS) 当LRCLK为低电平时表示左声道,高电平时表示右声道, LRCLK的频率=采样频率(2)SCLK(串行时钟),也叫BCLK(位时钟);方波形式存在 对应数字音频的每一位数据,SCLK都有一个脉冲. SCLK的频率=2*采样频率*采样位数

    2022年9月23日
    0
  • goland 2022.01.13 激活码(注册激活)

    (goland 2022.01.13 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html40…

    2022年4月2日
    200
  • iframe跨域调用js_ajax跨域访问

    iframe跨域调用js_ajax跨域访问概述本地同一浏览器访问本地HTML文件和访问服务器端HTML文件,本地Iframe没有自适应高度,而服务器端的Ifrane自适应了高度。1.问题重现:Chrome版本41.0.2272.101(64-bit)OS:Win8.1Chrome访问服务器端HTML文件呈现的结果Chrome访问本地HTML文件呈现的结果本地访问的HTML文件Iframe没有根据Iframe里面的页面类容自适应高度2…

    2022年9月28日
    0
  • 计算机高配表要表格,为何高配电脑还会卡? 因为你没选择FreeSync套装

    计算机高配表要表格,为何高配电脑还会卡? 因为你没选择FreeSync套装可能有很多玩家在网络对战游戏中都遇到如此状况:电脑配置并不低,但游戏画面依然不够顺滑,不但经常卡顿,而且明明先瞄准敌人开枪,敌人没死而自己被秒掉。其实,这并不是因为玩家枪法太菜,问题在很大程度上出在玩家选择的显卡与显示器上。那到底玩家的显卡和显示器上到底有什么问题?让我们为大家分析一下吧。高配电脑可以提供高帧速,但并不一定无卡顿高配置的电脑当然能提供强劲的性能,在游戏中自然可以提供很高的帧速。但为…

    2022年6月1日
    32
  • Ubuntu LVS配置[通俗易懂]

    Ubuntu LVS配置[通俗易懂]UbuntuLVS配置1.      拓扑结构图1.拓扑图2.      角色描述LVS-DR-Master:LVS-DR负载均衡主服务器;LVS-DR-Slave0:从服务器0;LVS-DR-Slave1:从服务器1; 3.      配置3.1  LVS-DR-Master配置配置虚拟IP:#ifconfigeth0:1192

    2022年7月23日
    6
  • navicat注册码怎么获得_navicat永久激活码最新

    navicat注册码怎么获得_navicat永久激活码最新产品适用:Navcat产品+中文版+64位注册机百度网盘链接:https://pan.baidu.com/s/1H49nNga9h0WHWKGWAGy18g提取码:ri5d1、cmd进入注册机目录执行命令navicat-patcher.exe”D:\ProgramFiles\PremiumSoft\NavicatPremium12″(navicate的目录)2、执行…

    2022年10月13日
    0

发表回复

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

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