2
$\begingroup$

This is a little hard to put into words, so please bear with me.

I'm building a camera rig. I need the camera to be able to orbit around an object, as if it were on a circular track, then move away from that object and then pan. Here is an example of the kind of motion I'm after:

Camera Motion Animation

The problem with the motion in the example is that the camera is initially rotating around an empty to which it is parented (the black circle) but then when it rotates around its own axis, it leaves the empty behind, and so will never be able to orbit again. Essentially I want to be able to choose whether the camera rotates around the empty or the empty rotates around the camera at any given time and then animate back and forth between these two possibilities.

The final rig will be using bones and constraints to allow for crane shots and the like, so a solution doesn't need to just rely on the relationship between camera and empty.

$\endgroup$
6
$\begingroup$

You need to be able to orbit at different distances and that means you need dynamic parenting. The way to achieve this is through Child Of Constraints. To animate this, you need to do the following in this specific order:

  • animate the camera into the start position of orbiting, till now the camera has no parent, it is free
  • place Child Of Constraint onto the camera, target is the orbit control empty, press Set Inverse button - now the camera is parented to empty
  • animate the orbiting motion by rotating the empty and any local motion of the camera (panning while orbiting etc..)
  • on the last keyframe of orbiting, insert a keyframe for the camera (LocRot) and a keyframe for the influence of the Child Of Constraint (100%).
  • move 1 frame forward
  • select camera and choose Object > Apply > Visual Transform, do not move the timeline
  • keyframe the Child Of Constraint to 0%
  • keyframe the camera (LocRot)
  • you can move the timeline now
  • the camera is now free again, without any parent
  • repeat and profit, camera will have as many parent constraints as there are orbiting motions

    enter image description here

This is a bit tedious, if you are up for the rigging job you can put this into a script that can be run with a custom button in UI to dynamically parent and un-parent.

There is this addon which for simple use cases will work fine, but it is limited. This is very tricky to setup inside the hierarchy of an armature (for example dynamically parenting hand to thigh) when all is also parented to the Root (the trick is to avoid double transforms with some clever drivers).

And if you are trying to do this on a linked armature, it is yet again even bigger challenge, because after file reload all drivers on constraints that are not present in the original rig, but are present in the animation where the rig is linked are discarded.

For completeness and best result I am also plugging this in:

How to smooth camera animation to have fluid feel?

$\endgroup$
  • $\begingroup$ That seems to be exactly it. Thanks. Fantastic answer. $\endgroup$ – snailsnail Jul 25 '17 at 22:49
  • $\begingroup$ The answer is still a fantastic one, but there does seem to be a problem (maybe a bug?) with it if using motion blur - the frame in which the influence is animated to 0% is always blurred, I presume because the renderer detects movement here. I solved the problem by keyframing the Motion Blur Position from "End on Frame" to "Start on Frame" along with the Influence and that seems to have solved it, my eyes can't see the change. $\endgroup$ – snailsnail Aug 3 '17 at 15:03

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.