general problems with matrix stack

while thinking about collada (and implementing an c# accessorframework) we had some serious problems with the matrixstack.

  • I see that the stack is very usefull for the exporter-projects, because they can project 1:1 special animation features of the different 3d modelling packages

  • for viewing/rendering applications the matrixstrack is not a problem because they can bake it to a single matrix for every timestep after the animations are applied

  • we see problems with applications that want to edit/change the content (specially animated objects (e.g. with multiple skew, rotate, translate, …)).
    Ask the Importer programmer of the 3dsmax and maya plugins. Its almost impossible to match an animated dynamic matrixstack to a static stack every modeling tool is using. So we suggest to limit the matrixstack in the COMMON Profile to the following or a similar stack:

rotate (-scaleroation)
rotate (+scaleroation)

(Maybe a 2nd representation as a matrix (16 float) can be allowed
Maybe for cameranodes an other fixed stack should be defined)

In my Eyes its worth to thing about this, because i do not see the anyone uses a skew animation nor a so exported file can be read in any other existing 3d modeling package correctly in the future.

You’re right, it’s not easy to match the transform stacks accross the DCC tools, but we’re constantly improving the support for custom transform stacks.

The idea that I had recently was that if you cannot match the transform stack in the COLLADA document with your own application’s transform stack, then maybe you should sample it on import (as we are allowing on export). That requires quite a bit of programming, but should work in most cases.

As for a fixed transform stack with shearing done using the scale-axis rotations, well, Maya uses pure shears, so I’m against that. The only parts of the transform stack that all DCC tools agree on are: [translate][rotate][scale]. If you restrict your animations to these channels, you should be fine is every case. Otherwise, you may have some surprises.

The <matrix> element is useful, especially until we resolve all these transform stack issues.

The <lookat> element, though, in my opinion, should be deprecated.

Guillaume Laforte
Feeling Software Inc.