16
\$\begingroup\$

I have some questions related to the non-smooth camera movement in cutscenes of quite a few games which appears to try and simulate the nervousness of a human operator holding it. This is opposed to camera shake in general gameplay when some event takes place, i.e. explosions, though they do also occur in the cutscenes I'm talking about.

Examples of this effect are in many games, but the best example I have seen of what I am trying to describe is the opening cutscene (and many cutscenes) of Metal Gear Solid V: Ground Zeroes. Be sure to choose 60 FPS to make the effect clearer.

Is there a name for this "simulated human operator" effect, and do you know how this may have been achieved?

My guess would be that the camera is being offset in both axes by some kind of random deviation function, which is always slightly elastically moving towards the origin to stop it wandering off wildly. Perhaps Brownian motion?

\$\endgroup\$
18
\$\begingroup\$

Quoting the Wikipedia article on "Shaky Camera":

Handheld camera, shaky cam, queasy cam, queasicam, run-and-gun or free camera is a cinematographic technique where stable-image techniques are purposely dispensed with.

The camera is held in the hand, or given the appearance of being hand-held, and in many cases shots are limited to what one photographer could have accomplished with one camera.

Shaky cam is often employed to give a film sequence an ad hoc, electronic news-gathering, or documentary film feel. It suggests unprepared, unrehearsed filming of reality, and can provide a sense of dynamics, immersion, instability or nervousness. The technique can be used to give a pseudo-documentary or cinéma vérité appearance to a film.

You can accomplish this in effectively the same way as camera shake in response to a catastrophic event, just at a lower amplitude. You track a nominal camera position and orientation, then displace the camera's actual position and orientation used for rendering using a pseudo-random function.

Generally this looks best if you use a continuous function, like a Perlin noise or even sine waves to emulate periodic vibration. This keeps the camera from jumping around too distractingly, and lets you play with a range of frequencies from slow sway at a medium amplitude to a rapid tremble at low amplitude. Mixing samples at multiple periods and amplitudes can give the motion a more complex, less mechanical-looking character.

You can also play with how you distribute the shake between translational & rotational offsets:

  • translational shake affects the foreground more strongly than the background, with up/down/left/right shake being the most noticeable, and shake forward/back usually looking more subtle.

  • rotational shake affects the whole image together, so it can reduce the appearance of the foreground vibrating but also has more risk of disorienting the viewer. Keep the amplitudes lower, especially for roll offsets, or you might make players seasick.

\$\endgroup\$
3
\$\begingroup\$

The term is "shakycam" and there are many ways of doing it. Googling for shaky cam tutorial gives many After Effects tutorials for simulating the effect in video editing software; the same principles apply to real time applications.

The basic idea is to simulate hand-held, non-stabilized camera. This is often applied after the fact to a perfectly stabilized footage in video editing for "authenticity" or to hide video editing tricks.

So the camera, as well as its target move randomly using low-frequency noise, meaning it doesn't jump in random directions frame by frame, but you could, for instance, interpolate random offsets every N frames, where N may also vary from one shake to the next.

\$\endgroup\$
  • 4
    \$\begingroup\$ This answer would be even better if it included a brief summary of the principles from the tutorial that you'd recommend applying to games — that way they're accessible even if the link becomes unavailable. \$\endgroup\$ – DMGregory May 23 '18 at 12:28
3
\$\begingroup\$

I disagree with the idea that you should be using Perlin noise only. I think the key to make it look good (and I don't think it looks good in the opening scene you linked), is to use an underdamped system. The system (aka the camera operator) wants to aim at a certain position, but he overshoots while moving to that angle. Combine this with random pushes on the camera (like random muscle contractions and tremble), but let the underdamped system work its magic. Combine this with applying some Perlin noise to the target, to prevent it from looking like a too-perfect aim.

So, a system like the one with the damping ratio set to 0.4 to 0.7: (Image from Wikipedia on the linked page)

\$\endgroup\$
  • \$\begingroup\$ I agree in principle; an underdamped system (especially as one component of a PID controller) will give you much better and more believable camera movements. However, the camera behaviour shown in the linked video is pretty clearly just random noise just applied to the camera orientation; nothing to do with the camera’s actual intended movement. Personally, I find that video pretty unpleasant to watch; feels like intentional jostling, rather than fallible-human-cameraman-doing-his-best, to me. \$\endgroup\$ – Trevor Powell May 25 '18 at 4:08
  • \$\begingroup\$ Yep, indeed. What I said as well: doesn't look good, but the OP is clearly asking for a human camera operator effect. \$\endgroup\$ – Martijn Courteaux May 25 '18 at 16:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.