ulysses opened this issue on May 25, 2008 · 19 posts
kuroyume0161 posted Sun, 25 May 2008 at 5:03 PM
Yes. Some (Euler) rotation systems use a fixed axis system (usually a parent system) to avoid gimbal lock. Cinema 4D does something like this. The problem with most Euler rotation systems, including Poser's, is that they use a rotating axis system. That is, the first rotation not only rotates 'the object' but it rotates the coordinate system attached to it.
Here is how the Cinema 4D HPB system is explained in the Cinema 4D documenation:
Some people do not understand why rotations around the Zaxis (the bank angle) are performed in the object system whereas rotations around Y and X axes (heading and pitch) are always made in the world system. With animation, even switching to XYZ rotations doesn’t help since CINEMA 4D is using the HPB system internally.
The HPB system is a so-called Euler system where the HPB angles do not refer in principle to the axes of the object itself.
Consider this example
Take an object whose angle system is initially 0/0/0.
First make a rotation of 30° around heading, so that the X and Z axes of the object system are now rotated compared to the X and Z axes of the world system. Call these new axes X and Z (Y is identical to Y).
A pitch of 20° now causes the object system to be rotated upward around the object system’s X axis. Z becomes Z and Y becomes Y (now X and X are identical).
Lastly, we rotate around a bank angle of -45°. This rotation causes the rotated object system to be tilted around the Z axis. X becomes X and Y becomes Y (this time Z and Z are identical).
The object has now achieved an angle system of 30/20/-45 by consecutive rotations around H, P and B on a system in each case already rotated. Thus, HPB rotates neither around object nor around world axes. That bank is identical to a rotation around an object axis is purely coincidental. There are several different Euler systems, each one with a particular rotation order.
While this all seems rather impractical, the Euler system has a major advantage: Rotations of objects are decoupled from one another as much as possible, which is not the case with rotations around object axes. Heading does not affect bank, bank does not affect pitch. Imagine if the X position of an object always affected the Y and Z positions ...
Now that you are as confused as I am... ;)
C makes it easy to shoot yourself in the
foot. C++ makes it harder, but when you do, you blow your whole leg
off.
-- Bjarne
Stroustrup
Contact Me | Kuroyume's DevelopmentZone