[Bf-funboard] Track constraint proposal
Konrad Haenel
public at konrad-haenel.de
Thu Oct 12 09:25:04 CEST 2006
I can find nothing wrong with this proposal. I faced the problem myself
from time to time and your solution seems to really solve it.
Matthew H. Plough wrote:
> I propose an extension to the Track constraint that would allow the
> "up" direction to be specified intuitively, while also allowing it to
> be animated.
>
> The Track constraint is not affine invariant. It needs to be; there
> is a unique "up" direction.
>
> One common use for tracking is to create a target camera -- instead
> of directly specifying the camera rotation, the user specifies it
> indirectly by placing an empty where the camera should look and
> causing the camera to track the empty.
>
> Right now, this has two parts:
> 1) The camera looks at the empty. The camera is rotated so that its
> y axis (for example) points toward the empty.
> 2) A global "up" axis, generally the global z axis, then constrains
> the rotation about the camera's local y axis, providing a steady camera.
>
> Consider the implementation of part 2:
>
> Let the line through the camera's location and the empty's location
> be called line L. Let a plane normal to L be called P. Let the
> projection of the global z axis onto P be called U, for "up".
>
> The camera is rotated about its y axis until U is parallel to the
> camera's local z axis. This works fine until L is nearly parallel to
> the global z axis. When this happens, U is nearly zero length, and
> the camera rotates wildly.
>
>
> For scenes shot indoors, or outdoor scenes without a lot of motion,
> this implementation works fine. It's really bad, though, when the
> camera does a lot of maneuvering -- what if I want my shot to fly in
> a half-circle, and then straight down a hole? The camera will rotate
> like crazy unless I painstakingly align things manually, which is
> time consuming and inefficient.
>
> A simple extension to the current implementation would work great.
> Instead of using a global "up" axis, use a local "up" axis; allow the
> tracked empty's z axis to supply the "up" direction.
>
> Now, instead of projecting the global z axis onto P, the empty's
> local z axis would be projected onto P. This way, when I fly the
> camera down a hole, all I have to do is rotate the empty through 90
> degrees, thereby keeping U nondegenerate, and making the necessary
> rotation about the camera's y axis unambiguous and stable. Also, as
> I'm flying the camera around, I can bank it by rotating the empty
> left to right.
>
>
> Any crits?
>
>
> Cheers,
> Matt
> _______________________________________________
> Bf-funboard mailing list
> Bf-funboard at projects.blender.org
> http://projects.blender.org/mailman/listinfo/bf-funboard
More information about the Bf-funboard
mailing list