摘要:【长文预警,先收藏后品尝】如何让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噪声应用于该层,从而使频率和振幅随机化,同时保持在所选值的附近。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net