[Closed] What does "reset scale" actually do?
If you create a box with dimensions of 10 on all sides, scale the box up to 200%, and then in the heiarchy tab of the command panel hit the “Reset Scale” button, the scale of the node is reset to 100%, but parameters for the box still say each side is 10 units, when in reality they are 20. So what exactly does “reset scale” actually do?
It copies the node transform into the objectTransform matrix.
$.objecttransform –> (matrix3 [2,0,0] [0,2,0] [0,0,2] [0,0,0])
$.objectoffsetscale –> [2,2,2]
You can return to normal by setting $.objectoffsetscale = [1,1,1]
You should NEVER scale an object at node level. There are not many reasons to ever use the Reset Scale button. Use ResetXForm when in trouble, and always scale the mesh in the Stack using an XForm. Anything else is like asking for trouble, esp. in animated hierarchies, boolean operations, etc. (Same applies to using the Mirror tool on meshes which applies NU scale to the node transform).
If you have anything but [1,1,1] as scale in the node transform, you have a disaster waiting to happen…
Bobo,
Thanks for your input. I have your Matrix DVD on order, so I’ll hold off asking any questions about the matrices until I’vd tried to digest them properly.
So if it’s bad to use the mirror tool… how would one go about duplicating a robot’s right arm heiarchy to make a left arm (or any such example)? I know about the handy “mirror” tool in the Bone Tools palette, but that doesn’t help in duplicating the geometry, or if point objects were used instead of bones.
Thanks.
The mirror bones has been rewritten to actually create new bones that look mirrored instead of setting the scaling to negative values.
Unfortunately, the Mirror tool will add the negative scaling to any geometry. This can cause really strange effects later on because the object is inverted in itself.
The one way to fix an already mirrored object is to use the Reset XForm Utility first, then flip the normals. This is mostly for disaster recovery
You can also use the mirror modifier which mirrors the mesh at modifier stack level without messing with the transformation matrices.
I hope people who do actual character modeling will post their workflows…
we deal with bad node scale all the time in game pipelines, and game artists get used to resetting their Xform regularly, mostly since they like to use the mirror utility which so nicely hides the fact that the normals should be flipped.
i just recently saw that there is a difference between $.objectoffsettransform and $.transform as well… i don’t understand why they implemented it this way since the pivot location will actually lie to you about where your local coordinate system is if you move it. am i not understanding that properly? is there a good reason for that separation?
-b
Please read this post first:
http://forums.cgsociety.org/showpost.php?p=3607916&postcount=2
So the reason for having the objectoffset is to be able to place the pivot anywhere relatively to the actual geometry of the object BEFORE the world space transformations of the node.
This is necessary for creating ANY kind of hierarchies without additional dummies to define offset pivots and has been possible since 3D Studio DOS days.
By default, the Sphere’s pivot point is aligned to the Sphere’s center (origin), but if you want the pivot point to be somewhere else in order to rotate about an excentric point for example, without the additional transformation matrix you wouldn’t be able to do so – you would have to create a Point helper at the desired new pivot location and link the sphere to it and rotate the helper instead of the sphere.
The one limitation that Max has which newer 3D programs do not have is the fact that this transformation matrix is not animatable, so you cannot keyframe the pivot over time to change the axis of rotation on different frames.
Unfortunately, the Mirror tool will add the negative scaling to any geometry. This can cause really strange effects later on because the object is inverted in itself.
had an annoying problem which was directly related to that recently – I have been baking Ambient Occlusion passes with max 8’s render to texture and noticed some objects would render as a completely black map, but only where the UVW map was laid out. I originally thought it was an ilegal face or unwelded vetex causing this. It was only when i realised that the objects were mirrored copies of the originals that i could fix it. The cure, you guessed it – Reseting the Xform and flipping the normals.