- [Instructor] I want to demonstrate an issue
with hierarchies that may occur when objects
are non-uniformly scaled.
That means stretched in one axis differently
than in the other axis.
When you non-uniformly scale objects
and then link them together,
you may experience some very strange skewing artifacts
when you rotate a child.
I'm going to show you how this occurs, how to fix it,
how to avoid it and along the way,
hopefully illuminate some of the inner workings
of hierarchical transforms.
In this artist mannequin character,
I've got a version where the chest needs to be stretched.
And I can do that with non-uniform scaling in the z-axis.
I'll select the object and on the main toolbar,
choose the Scale tool.
The default form of scale is select and uniform,
but as we know, we're able to non-uniformly scale
using the Transform Gizmo.
I want to scale in the local coordinate system
and so I can analyze this,
I also want to open the Transform type-In dialog
for the Scale tool, right click on Select and Uniform scale.
And now I've got the absolute local scale value visible.
I'll click and drag on the z-axis and stretch that object,
bring it up.
And it looks like I need a Z scale value of about 200%.
I'll just type in a nice round number
of 200 for Z, press enter.
Now the chest has been scaled up to twice its original size,
but only in the z-axis.
Now let's see about this problem that can come about.
I'll create a link, grab the Select and Link tool,
and we'll link the head to the chest.
Click on the head and drag it over to the chest,
release the mouse and that link's been made.
Now we'll grab the Rotate tool and rotate the head,
and as soon as we do that, we see some major issue.
The head is actually changing shape as it rotates.
It's skewing in this very strange manner.
Okay, I'll undo that.
Ctrl + Z, do that a couple of times.
What's happening here is that the head is inheriting
the scale from its parent, which is the chest.
But the chest has a non-uniform scale in Z.
If we go back to our Scale tool,
select the chest and choose Scale,
remember it's got a 200% scale in Z.
It's been scaled up by a factor of two.
Okay, well, let's select the head.
It's got a scale value of 50%.
Here's what happened.
In order to maintain the shape of the head,
3ds Max applied an inverse scale to the head.
The head inherited a Z scale of 200% from the chest.
And if the head's Z scale were 100%,
if we type that in, we see that it's also scaled up
by a factor of two in the z-axis.
Okay, well, the 3ds Max developers assumed
that we want the child object to maintain its shape,
even if it's inheriting a non-uniform scale
from its new parent.
The head was automatically scaled down in Z
by the inverse factor, preserving its original shape.
200% times 50%,
we'll put that back in, equals 100%.
Well, that is fine unless we rotate the child.
We'll get that skewing artifact due to the internal order
of transform operations.
So that's similar to how we saw that the order
of rotation axis or rotational priority
has an influence on the end result.
Here we're seeing an artifact resulting
from the internal order of operations in which objects
are positioned, then rotated and then scaled,
all relative to their parent.
That's the key to what's happening here.
The scaling is being applied after the rotations.
The order of operations for transforms is hardwired
to position first,
then rotation and then scale.
The head is being rotated and then scaled
resulting in the skewing.
Well, of course, we don't want this.
We can go into our undo history,
right click on the undo button,
and we get a list of all the recent commands.
We want to go back to the state before we created the link.
Select the link command in the list and click undo.
And now we've got a 100% scale for the head
and it's not linked to the chest.
Okay, to fix this issue it's actually quite simple.
We can reset the scale on any selected object.
That will set all the scale values to 100%
while preserving the current shape.
With the chest selected,
let's go over to the Hierarchy panel,
and in the pivot sub panel, we want to scroll down
to the Adjust Transform rollout.
We have a button there, reset scale, just click on that
and now we see our absolute local scale in Z
has been reset to 100%.
There's no non-uniform scaling.
We can go ahead and create our link.
Click on Select a link and link the head to the chest,
grab the Rotate tool, rotate the head,
and we get no skewing.
Looks perfectly normal.
Alright, I'll undo that.
We can close the Transform Type-In dialog.
That's how to fix the problem when it occurs.
To avoid the issue in the first place,
you can simply scale sub-objects instead of objects.
Just never use the Scale tool at the object level.
If I select that chest, go into the Modify panel,
if an object is an editable object,
then we can simply go into its sub-object mode
such as polygon and we can you know,
maybe select all those polygons and scale them
or we can select by vertex or whatever.
But the key here is that if we scale
at the sub-object level,
we are not touching the object level scale.
So that's an illustration of the common issue
of rotational skewing,
resulting from a non-uniformly scaled parent.