< Previous | Contents | Manuals Home | Boris FX | Next >

Rotation Angles, Gimbal Lock and Motion Blur

Typically SynthEyes sends camera and moving-object orientation information to downstream applications using three rotation angles, as applications commonly expose

those three angles individually to the animator for manipulation. These may be RX, RY, RZ values, Pan, Tilt, Roll values, etc.

This form of angle specification is prone to well-known pitfalls, however, when the downstream application interpolates the individual angles, rather than the overall orientation:

1) angles repeat every 360 degrees, ie 10 and 370 degrees refer to the same orientation;

2) there are generally two different solutions which correspond to the same physical position (where one angle is the negative, and the other two are 180 degrees different);

3) at some orientations, there may only be two fundamental degrees of freedom (typically referred to as "gimbal lock").

Internally, SynthEyes uses a representation that does not suffer from this problem, but specific angles must be produced to interface with most other applications, and problems can arise as a result. SynthEyes produces angles that stay in the range - 180 to +180 degrees. When combined together, they produce the correct overall orientation.

Normally, this topic is not an issue, good things happen automatically, and this entire section of the manual might be ignored. In particular shots, or combinations of settings, problems may arise. The trick is to know enough to recognize when this occurs, so that you can address it (which is not hard).

Consider a camera that spins continuously by more than 360 degrees (problem #1). At some point, it might transition from +179.5 degrees to -179.5, for example, a net motion of 1 degree. When you look at each frame, the camera is fine.

The problem arises when you turn on motion blur. The rendering application interpolates the camera position, and if it does so naively, it will conclude that the camera spins not from 179.6, 179.7, 179.8, 179.9, (+/-)180, -179.9 .. -179.5, but from

179.5 to 140, 120, 100, ... 0 ... -100, -120... -179.5. This will produce a disastrous

image for a frame or two of the sequence.

Similar issues are with problem #2 when a camera looks up past vertical. Instead of tilting up 100 degrees, it tilts up only 80 degrees, and the pan and roll are 180 different than they would be for a 110 degrees tilt. If the camera move from horizontal to this extreme tilt back, there will be a large discontinuity, and a similarly blurred-out image.

Problem #3 arises when the camera looks exactly straight up or down (or in some other specific direction depending on the exact form of angles required by the application). In this case, the pan and roll angles line up exactly, and you can pick a value for either arbitrarily as long as you correct the other (ie pan=30, tilt=50 and pan=95,tilt= -15 both refer to the same orientation). Motion blur problems occur with the transition to the immediately preceding or following frame, which have different specific required pan and tilt angles.

Some SynthEyes exporters include special code to correct or minimize these situations (#3 is correctible only in a few specific cases). Current exporters including this code: After Effects, Blender, Filmbox, Lightwave(enable/disabled checkbox), Maya. It is not needed for 3dsmax.

When motion blur issues arise for exporters without this code (submit a feature request as needed), or when no correction is feasible, you have a few options:

try a different exporter, such as filmbox,

switch to a different rotation angle ordering (either directly in the exporter settings or on the preferences panel),

change the overall scene coordinate system setup to a configuration that avoids that specific problem,

in SynthEyes, slightly tweak the orientation of the camera/object on a gimbal-lock frame to move it away from the degenerate orientation,

hand-edit the rotation angle curves in the downstream application.

Switching to a different coordinate system setup is not unusual for moving-object setups: a moving object may often be set up to be exactly aligned to coordinate axes, and thus subject to a precise problem #2 gimbal lock. Switching to a differently oriented object null addresses this easily.

IMPORTANT WARNING : There is a problem #3 degenerate condition in Z- Up coordinates when the camera is looking exactly along +Y with no roll and ZXY rotation angle ordering is in use. This orientation is the default orientation at the start of a camera track, if no coordinate system has been set up (tripod shots!). Under these specific conditions, there will be a motion blur glitch on the first frame. If this occurs, fix any of the preconditions listed in this warning, for example by setting up a coordinate system or switching to XYZ axis ordering.

On a related note, you should always use linear interpolation between keys in your 3-D application (SynthEyes sets this as the default where possible). If you use a spline-based interpolation, small amounts of jitter on the frames can amplify to much larger excursions between the frames, and excessive motion blur: this should be avoided.

©2024 Boris FX, Inc. — UNOFFICIAL — Converted from original PDF.