Character automatically looks at active camera?

Is there a way to make a rigged character automatically face whichever camera is the active one? Without me having to give a look-at-this-bone a keyframe?

E.g. at frame 1, Camera A is the active camera.
At frame 200, Camera B becomes the active camera which gets rendered.
If the character is always looking at a look-at-this-bone bone, this bone automatically moves to Camera A at frame 1, and then it automatically moves to Camera B at frame 200.

Use a range of Copy Location constraints for the target object (bone) for the eyes, you can then keyframe their Influence to make them active, or inactive. So at frame 200 you set the Influence of the first camera constraint to 0, it becomes inactive and set the second one to 100, you could do this over a few frames to stop any sudden jerky movement.

Is there a way to write a script or something that does all this automatically? Like make Blender detect which camera is active at any given moment? Like, i can do this manually, but if there’s an easier way to do this, then that could make the long process of animation easier.

Have a look at the Drivers for Multiple Cameras section of this tutorial :

You can basically create an empty that jumps to the location of the active camera automatically, and then male your character rig face that.


Wow thanks so much! I sometimes wonder if I could use python or something but was always intimidated. But this makes it seem a lot more doable for me! I’ll try this out!

So I can get this to work for normal cameras.
But if a camera has a copy_location constraint, what happens is…

The camera goes to its new location i.e. the location it is copying. That’s expected.
But the object with the driver won’t look at this new location.
Instead, the object with the driver looks at the camera’s original location.

Any idea how I can get the driver to look at the camera’s new, copied location?

Unfortunately no… for this trick to work, the cameras can’t even be children of other objects. I found this out after making the video.