ronstuff opened this issue on Dec 02, 2002 ยท 34 posts
williamsheil posted Tue, 03 December 2002 at 2:42 PM
stewer: Just like probably any 3d application on this planet, Poser is internally using 4x4 matrices for rotations. The question is what values do you present to the user - and since most people think in 3 axis rotations rather than fourdimensional complex numbers, Euler angles are what the parm dials use. Actually (even acknowledging that you have access to the source code) its not just a matter of what is presented to the user, but is also dictated by the need for to define scalar values for animation interpolation purposes. Both quaterions and matrix rotational forms contain an inherent normalisaton factor, which would be invalidated by applying a simple spline interpolation curve to individual parameters, resulting in scaling inconsistencies as objects were rotated. Alternative mechanisms for interpolation such as the interpolation path defined in three dimensions (plus twist) around the surface of a sphere centred on the object origin, which is essentially normalised quarterion interpolation, could be implemented. However these would still create representation problems. While Quaterions and homogenous matrices are both superior representations, and rotational axis (Eular angles) can be translated directly into these forms, the reverse translation can result in undefined (rotation) values, specifically at the point when the axial rotations demonstrate gimbal lock. The presentation of the axial rotation values in an animation graph would have to accomodate undefined values and direct manipulation of keyframe values (after translation into another form and back again) would give some fairly difficult to predict results. In fact Poser, I suspect (as indicated by the keyframe parameter channel data in the files) stores and interpolates only axial rotations, but (as with all applications) translates the rotations into a matrix format for 'on-the-fly' when needed for geometry calculations. As such the matrix values are only an intermediate step in world space transformations. This, unfortunately, prevents them from being used to overcome the problem, as the actual matrix coefficients are, in all circumstances, dictated by axial rotation angles, with all the problems inherent in that representation. Bill