Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Overview

One of the problems that many animations have is that they are too clean. Too smooth. Too perfect. In real life, things are very rarely, if ever, perfect. There's always 'noise'. Noise is that 'thing' that breaks up what should be perfect. Whether it's the dust on a counter top, skips on a CD, the slight shake of a camera, the variation in the gate of someone's walk, basically just the slight bit of randomness that is in everything around us.

If your scene has a moving camera, it's very rarely as steady as a stationary camera. There's always some degree of shake. Sometimes a lot, sometimes just a very small amount, but it's almost always there. CRYENGINE provides a solution for adding noise to your camera to give your dynamic cinematic scenes a more realistic effect. You can add a Camera Shake track to your Camera entity in Track View.

Image Modified

However, to get the desired effect, you cannot just turn on and turn off the shake in Track View. You need to tweak the exposed values below to get a realistic result:

Image Modified

Shake > AmplitudeA, AmplitudeB, FrequencyA, FrequencyB

Note
Shake only effects rotation, it does nothing with the position of the camera.

Amplitude Explained

AmplitudeA (ampA), and AmplitudeB (ampB) are just multipliers that multiply the camera's AmpA and AmpB parameters!

Note
A common mistake is to assume that the amplitude values are Yaw, Pitch or Roll. The Shake track is different than the ViewShakeEx flowgraph node.

They are separate overlapping and accumulating multipliers of the amplitude camera parameters that generate the final camera orientation!

The following non-animatable parameters exist on the camera entity:

Image Modified

So here above is the Yaw, Pitch, Roll or in CRYENGINE: Z,X,Y. These are in the parameters of the Camera Entity and are not exposed in trackview. In Track View AmpA track is a multiplier that multiplies the Amplitude A camera parameter.

Above the AmpA is 0,0,0, so no matter how much one cranks the Amplitude A in Trackview, it will still be multiplying 0,0,0 and the camera will not shake.

Here is a video that better explains the relation between the amplitude camera parameters and the track multiplier in trackview. This camera motion is playing directly from trackview, the track AmpA multiplier is always 100, but the x,y,z camera parameters are changing:

Widget Connector
height360
width640
urlhttps://www.youtube.com/watch?v=bnIOFvbwIjc

Limitation: You cannot change camera parameters on the fly to significantly alter camera shake/movement.

Frequency Explained

Frequency is sort of what it means, how frequently the camera changes orientations. Here's a video cycling through frequency multipliers of 1,5,10:

Widget Connector
height360
width640
urlhttps://www.youtube.com/watch?v=5gN8S8c72mc

Tweaking the values

First let's take a look at something that looks good:

Widget Connector
height360
width640
urlhttps://www.youtube.com/watch?v=_FDB9ivIoIU

Why does this look different than most other times you see something heavy fall in the game? Because the curves were tweaked to achieve the result.

Curve Editing

To achieve really good camera shake, it is important to edit the fCurves. When you add a shake keyframe in Track View, the default fcurves have wide tangents which causes extreme easing in and out.

Notice that the value takes a really long time to get to the desired peak. Most of the time the intention is to have a quick impacting shake (like a punch in the face); with many explosions, shakes or jolts, we want the effect to be immediate!

Image Modified

So how do we get this more immediate jolt? Compare the two curves below:

Image Modified

So now we have a 'punchy' hit. In order to get a visually linear falloff of shake, the curves are tweaked until they looked like this:

Image Modified

Useful Tips

  • Don't just turn on shake and leave it for a few seconds and turn it off. Spice things up! Shake is only interesting when it stands out. A whole cutscene of shake has no contrast of the effect to give any actual impact on a scene.
    • In most scenes things are happening, something heavy falls over, something explodes.. Edit your curves and keys to reflect this!
  • For rumbling, maybe a small earthquake or so, key the frequency in and out.
  • Don't go shake crazy! Try to keep your amplitudes & frequencies between 1 and 8 (if your params are 1.0 of course).
  • Keep in mind that some people are playing in Stereo 3D.

...

综述

...

很多动画都存在的一个问题是它们太干净、太平滑、太完美了。

在现实生活中,很少有事情是完美的,总是会有“噪音”。“噪音”是打破应该是完美的事情的“东西”。不论是柜台面上的灰尘、CD 光盘中内容的遗漏、摄像机稍微的振动还是某人进入大门步伐的变化,这些基本上都是我们身边会随时发生的事情。

如果场景中有正在移动的摄像机,它不会像固定式摄像机那样稳定,总是会有某种程度的振动,有时候会有很大的振动,有时候很小,但总是存在的。

CryENGINE 3 为添加一个噪音到摄像机解决方案,此方案给动态过场动画场景创造了一种更真实的效果。可以将“摄像机振动”轨迹添加到“轨迹视图”中的“摄像机”实体中。

 

但是,若要获得所需效果,不可以仅仅在“轨迹视图”中_打开关闭_振动,您需要微调下面的曝光值以取得更真实的结果:

 

Shake > AmplitudeA, AmplitudeB, FrequencyA, FrequencyB

注:振动只会影响旋转,不会影响摄像机的位置。

...

振幅 A (ampA),和 振幅 B (ampB) 仅仅是 增加摄像机振幅 A 和振幅 B 参数的加乘器! 注: 一个普遍的错误是将振幅值假定为 Yaw, Pitch 或 Roll。“振动”轨迹不同于 ViewShakeEx 流程图节点

这些是振幅摄像机参数的单独的重叠和累计加乘器,这些参数生成摄像机的最终方位。

摄像机实体上存在以下非动画参数:

 

此处的上方是 Yaw、Pitch、Roll 或在 CRYENGINE 中是:Z、X、Y。这些都在“摄像机实体”的参数中且不暴露在“轨迹视图”中。在“轨迹视图”中,*振幅 A 轨迹*是增加*振幅 A 摄像机参数*的加乘器。

振幅 A 是 0,0,0,所以不论在“轨迹视图”中怎么调整振幅 A ,振幅 A 始终是乘以 0,0,0 并且摄像机不会振动。

此处有一个视频可以更好地解释振幅摄像机参数和轨迹视图中轨迹加乘器之间的关系。此摄像机的运动是从“轨迹视图”直接播放的,而且轨迹振幅 A 加乘器总是 100,但是 x,y,z 摄像机参数是不断变化的:

shake_amp_params.mov 限制 不可以更改运行中的摄像机参数以显著地改变摄像机的振动/移动。

...

频率顾名思义是指摄像机改变方位的频率。此处有一个循环使用 1、5、10 频率加乘器的视频:

shake_freq.mov

...

首先,让我们看一些看起来不错的事情:

shake_teapot_fall.good.mov 为什么这和您通常在游戏中所看到的不同呢?这是因为进行了曲线调整才达到了这种结果。

...

若要达到好的摄像机振动效果,则编辑 fCurves 是很重要的。当您在“轨迹视图”中添加振动关键帧时,默认的 fCurves 会有宽的切线,导致出现极端的加减速度。

请注意,需要花费很长时间才能使数值达到想要的最高值。大多时候都是想达到迅速的冲击振动效果(像一拳击中脸部),使用很多的爆炸、振动或摇动,可以使效果_更迅速!_

 

所以,怎样才能得到更迅速的摇动?请比较以下两条曲线:

 

所以,现在我们有了“强有力”的冲击。为了在视觉上获得振动的线性衰减,需要调整曲线直至达到此效果:

 

...

  • 不要仅仅打开振动保持几秒然后就关闭。请增添一些趣味性! Shake is only interesting when it stands out. A whole cutscene of shake has no contrast of the effect to give any actual impact on a scene.
    • In most scenes things are happening, something heavy falls over, something explodes.. Edit your curves and keys to reflect this!
  • 对于隆隆声,也许是很小的地震,调整输入输出的频率。
  • 振动不要太疯狂!试着将振幅和频率保持在 1 和 8 之间(当然,参数是 1.0)。* 记住有些人是用 3D 立体声玩游戏。