【Cinemachine智能相机教程】VirtualCamera(四):Noise属性

摘要:【长文预警,先收藏后品尝】如何让Unity中的相机模拟现实世界手持拍摄的晃动效果呢?Cinemachine的Noise属性可以让你在5分钟内解决这个问题。

洪流学堂,让你快人几步。你好,我是郑洪智,你可以叫我大智。我正在记录带小新学Unity的经历。

自从咱们一起5分钟入门Cinemachine之后,我和你一起学习了Cinemachine中的VirtualCamera的基本用法VirtualCamera的Body属性Aim属性,今天咱们来学习一下它的Noise属性。
**【长文预警,先收藏后品尝】**如何让Unity中的相机模拟现实世界手持拍摄的晃动效果呢?Cinemachine的Noise属性可以让你在5分钟内解决这个问题。

Noise属性

使用Noise属性可以模拟相机的晃动。Cinemachine中自带了一个Basic Multi Channel Perlin算法,可以给虚拟相机的运动添加柏林噪声。柏林噪声是一种随机算法技术,可以给相机添加比较自然的随机运动。

Basic Multi Channel Perlin需要设置一个Noise Profile属性。Noise Profile是一个配置文件资产,里面有噪声的相关配置。Cinemachine中自带了几种profile配置,你也可以自己创建profile。

Amplitude Gain 振幅增益。相机最终的噪声振幅会是profile中的振幅乘以这个增益系数。设置为1时使用噪声配置文件中定义的振幅。将此设置为0时禁用噪声。提示:给这个属性添加动画可以通过动画控制噪波增强、减弱的效果。

Frequency Gain:频率增益。相机最终的噪声频率会是profile中的频率乘以这个增益系数。设置为1时使用噪声配置文件中定义的频率。使用较大的值可以更快地晃动相机。提示:给这个属性添加动画可以通过动画控制噪波变快、变慢的效果。

如何创建或修改Noise Profile

Noise profile是定义程序化生成噪声曲线相关属性的资产。Basic Multi Channel Perlin算法使用这个profile来控制相机的运动。Cinemachine在计算相机的位置后会添加噪声造成的偏移。这样,相机噪声不会影响将来相机运动的计算。

Cinemachine包含一些预定义的profile资产。你还可以在CinemachineVirtualCamera组件的Noise Profile属性上来修改、克隆、定位位置、新建。

我先Clone出来一个6D Shake的Profile。

选中这个Noise Profile后,Inspector中可以直观地显示噪声曲线。x,y和z轴有位置和旋转的属性。每个轴可以具有多个层。

如果想创建逼真的程序化噪声,需要搞懂并选择合适的频率和振幅,以确保产生的噪声质量,噪声不会出现重复的情况。最有说服力的相机晃动还得使用Rotation噪点,这会影响相机的瞄准。手持摄像机通常情况会有更多的旋转晃动,而不是位置移动。一般先添加Rotation旋转噪声,再添加Position位置噪声。

令人信服的噪声曲线通常将低频,中频和高频混合在一起。创建新的noise profile时,可以从每个轴的这三层噪声开始。

对于振幅(Amplitude),较大的值相机晃动越明显。对于远景,使用较小的振幅值,因为较小的FOV会放大晃动效果。

对于频率(Frequency),典型的低频范围为0.1-0.5 Hz,中频范围为0.8-1.5,高频范围为3-4。最高可用频率取决于游戏的帧频。游戏通常以30或60Hz运行。高于游戏帧速率的噪声频率可能会出现采样出现跳跃的情况。

例如,如果你的游戏以60帧/秒的速度运行,并且将噪声频率设置为100,则相机会发出断断续续的噪声。这是因为你的游戏渲染帧率无法比噪声频率更快。

属性详解
Preview Time 在Inspector中的图形预览的时长。仅用于可视化预览,不会影响你编辑的噪声配置文件资产的内容。
Preview Height Inspector中噪声曲线图的垂直高度。仅用于可视化预览,不会影响你编辑的噪声配置文件资产的内容。
Animated 勾选后,Inspector中的噪声曲线会水平移动。示仅用于可视化预览,不会影响你编辑的噪声配置文件资产的内容。

Position Noise 位置噪波图层。
Position X, Position Y, Position Z 每个轴都可以设置多层的噪波。每个轴有一个图形展示。可以设置多层,点击下面的+或-可以添加或删除一层。

  • Frequency频率 噪声层中的频率,以Hz为单位。
  • Amplitude振幅 噪声层中波的振幅(高度),以距离为单位。
  • Non-random 选中时不给波形添加柏林噪声。在没有Perlin噪声的情况下,Cinemachine使用规则的正弦波。取消选中可将Perlin噪声应用于该层,从而使频率和振幅随机化,同时保持在所选值的附近。

Rotation Noise 所有轴的所有旋转噪波图层。
Rotation X, Rotation Y, Rotation Z 每个轴都可以设置多层的噪波。每个轴有一个图形展示。可以设置多层,点击下面的+或-可以添加或删除一层。

  • Frequency频率 噪声层中的频率,以Hz为单位。
  • Amplitude振幅 噪声层中波的振幅(高度),以度数为单位。
  • Non-random 选中时不给波形添加柏林噪声。在没有Perlin噪声的情况下,Cinemachine使用规则的正弦波。取消选中可将Perlin噪声应用于该层,从而使频率和振幅随机化,同时保持在所选值的附近。

扩展阅读

【扩展学习】洪流学堂公众号回复timeline可以下载Timeline&Cinemachine系列教程全文带目录PDF哦,更有视频教程等着你!


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

我是大智(欢迎加我微信:zhz11235),你的技术探路者,下次见!

别走!点赞收藏哦!

好,你可以走了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章