【Cinemachine智能相机教程】VirtualCamera(二):Body属性
摘要:【长文预警,先收藏后品尝】Cinemachine中的虚拟相机如何跟随目标物体呢?这就需要搞明白Body属性的设置咯。
你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦。
自从咱们一起5分钟入门Cinemachine之后,上周我和你一起学习了Cinemachine中的VirtualCamera的基本用法,今天咱们来学习一下它的Body属性。
**【长文预警,先收藏后品尝】**Cinemachine中的虚拟相机如何跟随目标物体呢?这就需要搞明白Body属性的设置咯。
Body属性
CinemachineVitualCamera组件中的Body属性用于设置相机移动时使用什么算法。需要先设置好上面的Follow属性。
Cinemachine包含以下移动相机的算法:
- Do Nothing:不移动虚拟相机
- Framing Transposer:跟随目标移动,并在屏幕空间保持相机和跟随目标的相对位置。
- Hard Lock to Target:虚拟相机和跟随目标使用相同位置。
- Orbital Transposer:相机和跟随目标的相对位置是可变的,还能接收用户的输入。常见于玩家控制的相机。
- Tracked Dolly:相机沿着预先设置的轨道移动。
- Transposer:跟随目标移动,并在世界空间保持相机和跟随目标的相对位置固定。
Do Nothing算法
选中这个算法时,虚拟相机激活时,会控制Unity相机会固定在当前虚拟相机的位置,不会移动。用于固定位置的镜头,也可以通过自定义脚本来控制相机的位置。通常和Look At配合使用,模拟固定位置的跟随镜头。
Framing Transposer算法
选中这个算法时,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步来添加更多物体。
属性详解
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相机保持和目标位置一致,即位置同步。
Damping:相机追赶上目标位置的时间。如果为0,那就是保持同步,如果大于0,相当于经过多少秒相机和目标位置重合。
Orbital Transposer算法
这个算法支持相机和目标之间的可变相对位置关系。可以接受玩家的输入,动态的控制相机的位置。
Orbital Transposer引入了一个新的概念叫heading,代表了目标移动的方向或面朝的方向。Orbital Transposer会尝试移动相机,让镜头朝向heading的方向。默认情况下,相机的位置会在target的正后面。也可以通过Heading Bias属性设置。
如果给Orbital Transposer添加了输入控制器,玩家就可以控制相机围绕目标旋转。可以设置为Input Manager中的轴,也可以直接用脚本控制。
当Recenter To Target Heading属性选中时,在没有输入时Orbital Transposer可以自动重新居中相机。
属性详解
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轴朝上
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属性来指定将虚拟相机放置在路径上的位置。
使用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 设置相机如何在平行于路径的方向上保持其位置。较小的数字会使相机反应更快。较大的数字会使相机的响应速度变慢。
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属性。
属性详解
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:相对于目标的位置,使用相机的本地坐标系
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哦
呼~ 今天小新絮絮叨叨的真是够够的了。没讲清楚的地方欢迎评论,咱们一起探索。
我是大智,你的技术探路者,下次见!
别走!点赞,收藏哦!
好,你可以走了。
【Cinemachine智能相机教程】VirtualCamera(二):Body属性相关推荐
- 【Cinemachine智能相机教程】VirtualCamera(四):Noise属性
摘要:[长文预警,先收藏后品尝]如何让Unity中的相机模拟现实世界手持拍摄的晃动效果呢?Cinemachine的Noise属性可以让你在5分钟内解决这个问题. 洪流学堂,让你快人几步.你好,我是郑洪 ...
- 【Cinemachine智能相机教程】VirtualCamera(三):Aim属性
摘要:[长文预警,先收藏后品尝]Cinemachine中的虚拟相机如何旋转来让镜头锁定目标物体呢?这就需要搞明白Aim属性的设置咯. 洪流学堂,让你快人几步.你好,我是郑洪智,你可以叫我大智.我正在记 ...
- Unity Cinemachine智能相机教程(五):VirtualCamera的Extension扩展
摘要:[长文预警,先收藏后品尝]如何让相机更智能呢?Extension扩展可以给虚拟相机带来无限的可能. 洪流学堂,让你快人几步.你好,我是跟着大智(VX: zhz11235)学Unity的萌新,我叫 ...
- Unity Cinemachine之第三人称摄像机CinemachineFreeLook属性详解
演示 CinemachineFreeLook是一个第三人称视角相机插件,功能非常强大,内置了很多属性可以供开发者根据需求进行调整. 创建 首先是Cinemachine插件的导入,如果是2018以后 ...
- 5分钟入门Cinemachine智能相机系统
摘要:相机是Unity世界的眼睛,一个智能相机更是能帮咱们节省大把的时间和精力.Cinemachine现在已经大量应用到各种项目中,如果你还没有用过Cinemachine,墙裂建议你来体验一下. 你好 ...
- Python编程系列教程第12讲——属性和方法
视频地址:http://v.youku.com/v_show/id_XNTgyOTg4NjQ4.html 普及网络安全知识,推动信息技术发展. 为祖国的网络安全撑起一片蓝天,为网络安全爱好者构建一方家 ...
- NSIS 的 Modern UI 教程(二)
NSIS 的 Modern UI 教程(二) [ 2008-02-24 20:22:20 | 作者: 陈敏毅 ] http://chenmy.hanzify.org/article.asp?id=51 ...
- Quick-Cocos2d-x初学者游戏教程(二) -------------------- Quick内部的代码结构及相应的原理...
Quick-Cocos2d-x初学者游戏教程(二) 上一章我们已经了解了Quick的一些基础知识,所以本章我们将开始深入到Quick内部,了解它内部的代码结构,同时在解析的过程中学到相应的原理,并学会 ...
- [翻译]asp.net ajax xml-script教程(二)
原文地址:http://dotnetslackers.com/articles/atlas/xml_script_tutorial_part2.aspx asp.net ajax xml-script ...
最新文章
- 提高班第三周周记(中秋第二天)
- OpenStack环境搭建(二:Fuel Master的安装及配置)
- 平面设计师必备的十个技能
- python运行excel高级筛选怎么用_懂点EXCEL就行!教你利用Python做数据筛选(上)...
- C/C++ putchar函数 - C语言零基础入门教程
- java 跨类 调用 model_Model.java中的这两个方法,为什么不能在子类中调用,或者包内调用也行啊。...
- 即使对象属性显示在控制台日志中,也无法访问
- 升级tomcat遇到的坑
- oracle日期按时间点过滤,Oracle数据库日期过滤方法性能比较
- adb shell循环命令_Android adb 命令使用总结
- CAN通信协议(一)
- 图解傅里叶变换(时域频域)
- 移动端中的vMin和vMax
- Mongodb分片学习
- Edison编译时显示No such file or directory
- Facet Kernel详解、Random Walk随机游走算法详解
- 解决Win10更新后无法开启移动热点的问题
- debain系统安装nginx
- 卸载antivirus(AVG)教程
- 国内外17个学术论文网站推荐,记得收藏哦!
热门文章
- SQL 行转列,列分行,行合并列(转)
- springboot hibernate 缓存不更新_spring boot 整合 ehcache
- java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性
- socket io 不使用redis_为什么Redis单线程能够达到数十万、百万级的QPS?
- pci内存控制器是什么驱动_以微软的技术实力, win10还会出现硬盘100%占用的问题,为什么呢?...
- opencv读取usb摄像头_2020 款 11寸 iPad Pro 深度摄像头 RGBD 视频流可视化
- html文本框 控件,标签和文本框都用于显示文本
- 设计师必备的设计导航站,工作简单化
- 设计psd分层素材模板|家居海报设计思路!
- 电商移动促销页面设计素材PSD分层模板,轻松出稿稿