PDA

View Full Version : Max bug? Anyone know a fix?


bschulte
02-15-2002, 09:48 AM
I have run into a problem, maybe some of you have had a similar experience. Maybe it's just a bug in Max.

I set up a heirarchy and have the rotations all EulerXYZ. Then I animate the heirarchy over a few frames using just one axis for each joint. Then when I animate another axis, on some of the objects in the heirarchy the rotation is translated over 2 axis or even all 3. But it's only on some objects which tells me I screwed up some where. I did initially move/rotate all the pivots, but I reset all the transforms/scales and only half the objects seem to be affected.

Note: It also seems to happen to objects that are not in any heirarchies.

Anyone have this same problem and find a fix? Feels like there is some type of hidden pivot for each object that is getting messed up.

I tried creating a new object (object A), selecting it, attaching the object in question (Object B), and then going to subobject to delete object A. My hope was that this "artificial makebelieve invisible pivot" information would be copied over by the new pivot informatin of Object A. No luck though.

Thanks,
Baaron

bschulte
02-15-2002, 10:23 AM
Here's an example file showing the problem if it helps.

http://www.derelictsands.com/rotationbug.zip

I'm trying to animate the local axis. The file has 3 identical objects. The first isn't animated. The second on only one axis, X-axis. The third on 2 axis, X-axis with Z-axis.

Baaron

subagio
02-15-2002, 12:57 PM
Could you repeat the question again? I got lost in there somewhere. My initial guess is that you're not working in the local axis mode, but I'm not sure.

Spell out your problem step by step, including what you're expecting to happen i.e.

1. Created hierarchy of objects with all local axis world aligned.
2. Linked them.
3. Rotated the root object 45 degrees in local x (expected the rest to follow the same)
4. Rotated the first child 45 degress in local y (expected local axis values for first root to show 0 45 0 and second child to follow)

etc...

That way we can tell exactly where you went wrong if you did, and whether it is a max fault.

--C

bschulte
02-15-2002, 06:20 PM
Reset Max

1. Make a box in the top viewport
2. Edit the pivot with "Affect Pivot only" and move it along +y until it's at the end (top) of the box.
3. Now, turn off "Affect Pivot Only" and go to 'Local' rotation.
4. Change the rotation controller to EulerXYZ
5. In the Perspective viewport, add some rotation keys along the timeline for X-Rotation only.
6. Open up Trackview selected.

You'll notice there are keys for all 3 axis, but curvers appear for the X-axis only.

7. In trackview, switch to the Y Rotation curves
8. Back in the perspective viewport, go to each keyframe and add a rotation for Z-axis. Watch how the curve of Y is adjusted even though you're only animating Z.

The transform type in says you're only animating one axis, but the curves in trackview say otherwise.

Baaron

subagio
02-15-2002, 09:28 PM
Ahh, I get you now. This is expected behavior.

The transformation you're applying is a rotation in the objects local y as an offset to it's _current_ rotation. Because you've applied this linear transformation to an arbitrary orientation, the actual result is a composite orientation that's made up of an x, y and z component from the object's 0 orientation. To see the difference:

- create 2 boxes in the top view port.
- rotate the first box 60 deg in local x
- rotate the first boc 60 deg in local y
- in the transform type in field, set the rotation of the second box to 60 60 0

This results in 2 different orientations all together. If you want to specifically set the orientation of an object, type in the value, or type in "rnum" to add num to the value. (e.g. "r30" adds 30 degrees, "r-30" subtracts 30 degrees)

If you want to animate each axis independently, the best way is to create a hierarchy of nulls, each will contain an axis of the rotation. So create nodeZ linked to nodeY linked to nodeX (for an axis order of xyz) and animate only the z, y, and x rotations of each respectively.

--C

bschulte
02-15-2002, 11:28 PM
Thanks, that clears up a few things.

But, is there any other way around this besides the Null Hierarchy? Some of my objects don't appear to be effected by this. I can rotate them along their local axis fine. I understand your example with the 2 boxes, but I still see why some objects aren't effected.

Seems like there should be some way to confine the null rotation fix to a single object.

Baaron

bschulte
02-15-2002, 11:30 PM
Correction:

I understand your example with the 2 boxes, but I still DON'T see why some objects aren't effected and some are.

bschulte
02-15-2002, 11:42 PM
I may have found the answer. Some guy posted this in the discreet forum.

"FYI, for the EulerXYZ (pronounced "Oiler") to operqate in Local space, change the axis-order to ZYX. "

Now when I do the same test, it works fine. Interesting.

baaron

CGTalk Moderation
01-13-2006, 01:00 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.