Notifications
Clear all

[Closed] retrieving rotation values > 360

well in the future it will be good to know that Autodesk as of max and maya 2010 has normalized the price point and subscruption cost. Maya complete was cheaper but they raised the price and included all the fetures of unlimited with it, and lowered the subscription fee for renewal. As of the annoucement a license holder for Maya or Max can change their license between applications once per renew cycle. At least that is the way it was brought across.

Awesome!! Did not know that.

 PEN

Part of the problem with Max and rotations comes from the list controllers. Because Max can have unlimited number of nested layers of animation on any given track it is hard to track it all. That being said it is also way better then Maya for this reason as any track of animation can have this sort of layering of animation since Max 1. The one big thing that I really miss when working in Maya are list controllers.

The assertion that maya’s rotation representation is better than max’s one sounds pretty strange and unfounded for me. Maya uses only Euler type of rotation controller and there is no any difference between “max” or “maya” Euler angles. Any transform calculation based (for both max and maya) on quaternions. And quaternions are used for rotation interpolation.

There is no way to get the number of revolutions around an abstract axis at abstract time. And it doesn’t make any sense. There are 9 (maybe i’m wrong but i’m too lazy to count) different Euler angles combinations to represent the same rotation. So, to get the number of revolutions you have to know at least initial node’s rotation and way how this node came to current state.

If your are using Euler controller in max (same as maya) it is not a problem to get a value for any axis over 360 degrees. Right?

If you a using your own scripted controller it’s better to make a property to count the number of revolutions or to handle a rotation angle about some axis (aka spin).

If you want to know how many times some object spinned around on time interval, and the only thing that you know about this node is its transform matrix at any time –
you have to get this value for every tick (frame, millisecond, whatever…) using animation range.

Maya does not use just Euler type rotations. You can set to use Euler or Quaterion Rotations. And regardless it still only has one listed rotation.

The individual problem that I am wrestling against is that Max has a problem with reset back to a world zero rotation once an object has been frozen. It appears to lose all that rotation information. Max writes the value as a Quaterion Rotation Matrix. Now I am still new to Max and MaxScripting. So I am willing to bet there is someplace this value is stored somewhere in Max that I have not unearthed just yet.

However what I have have learned from the Max Docs is that Max’s Euler Rotation only works within the bounds of +/- 180 so it has to be keyed every 179.9 degrees otherwise there is no rotation.

@ Pen you can add any number of additional controls to any object in Maya. It just a matter of what you want it to do specifically. Also I do quite admire the tools you wrote.

Hi

This rotation > 360 issue just matters, if you blend keys. To prevent this, just check each previous key of the controller if it is in reach of 360, if not, just – / + 180.

I made some time ago a function to extract all keyed controllers from nodes which are keyed.
It just recursivly goes through all controllers and checks the keys and returns the controller with their properties, without caring about the type of controller or property.

At the end, you just go through the key array and do this check

Btw. you can access the properties of each key (MAXKey) with GetProperty <key> <propertyName>

and you can get all of the available properties by using GetPropNames on the key itself.
With SetProperty you can instantly change the keys values (works quite well for tangent stuff too).
This way it is much faster to update rotations for an animation, as the system does not need to update by time at all, you basically overwrite stuff directly on the key.

Cheers,
maT-Star

Page 2 / 2