I would like to generate camera shake in either a render or in BGE. How can I accomplish this?
-
1$\begingroup$ Well, the extremely lame way to do this would be to just move the camera; in an animation you could just take the graph editor, insert some keys, then just move the values ever so slightly around so that it jitters. $\endgroup$– Kyle WilleyCommented Jun 3, 2013 at 5:04
-
$\begingroup$ Related: creativeshrimp.com/handheld-camera-tutorial.html $\endgroup$– SamothCommented Apr 24, 2016 at 21:10
-
$\begingroup$ this plugin blendermarket.com/products/quake-motion-camera does the magic and its not an affiliate link its just a suggestion for you if you want to try it out, adds camera shake with one click of a button $\endgroup$– Raisy ClutchCommented Dec 18, 2020 at 23:24
3 Answers
You could insert a single keyframe for the location on the camera (if you dont have any movement) and then, in the the graph editor, add a noise modifier to the curves in the properties panel (N key). Adjust the values of the modifier so you can get the intensity and movement that you like.
-
$\begingroup$ Remember to add one noise modifier to each channel. $\endgroup$– wcharginCommented Aug 10, 2013 at 16:21
Recorded hand held shake
- Select | Select Camera and (optionally) View | Camera or numpad 0.
- In the Timeline window:
- Enable Frame | Auto-Keyframing Mode | Add & Replace or simply use the button.
- Hit play (Alt+A) and enter trackball rotation RR or grab G mode.
- Move your pointing device around to generate the shake.
Note: You can get a more controlled (or violent) effect with different frame rate during recording.
As has been mentioned - fcurves modified with noise can do this.
For the game engine you can use an action with noise too (access action through the action actuator).
Note that while noise modified fcurves on camera are a start, you may want to have a very basic camera rig, I've seen this done before where an empty parent controls the camera, and there are 2 children, one the camera, another empty object with noise applied. The camera constrains to the noise empty using Copy Transforms
constraint.
This has the advantage you can do regular (non-noisy) animation to the parent, and the constraint can be animated so you can adjust the noise level over time. - Of course if you wanted to go further you could blend different types of noise easily by adding more empties+constraints and blending those in too (to simulate different terrain).
Since the game engine wont do constraints, something more complex like this would need to use python scripting.