I've watched several tutorials and very often they applied the location, rotation or scale to the object when they transformed it in Object Mode. They always said it is important, but why?
-
1$\begingroup$ Could you link to the tutorial(s) in question? The answer depends on what the object will be doing later on (e.g. a physics sim). $\endgroup$– gandalf3Commented Feb 24, 2014 at 19:43
-
$\begingroup$ This is one of the tutorials: youtube.com/watch?v=zu6zbf7tdoU; for example at 01:30 and 12:10 $\endgroup$– CodeyCommented Feb 24, 2014 at 19:53
-
$\begingroup$ related: blender.stackexchange.com/questions/47318/… $\endgroup$– user1853Commented Feb 25, 2016 at 18:23
5 Answers
For a rigid body physics simulation extreme unapplied scale transforms can cause very noticeable strange results, such as unnaturally fast or slow rotations depending on if the object is scaled up or down:
From the wiki:
If dynamic scaling is not needed, rigid body objects should have the scale applied by using the "Apply Scale" operator.
Unapplied rotation tends to make the simulation more unstable:
-
$\begingroup$ Ok thanks. So it is only needed for Physics? $\endgroup$– CodeyCommented Feb 24, 2014 at 20:34
-
$\begingroup$ @BlenderShark No, there are other cases too, e.g. exporting. Though most exporter scripts should have an option to do this for you. $\endgroup$– gandalf3Commented Feb 24, 2014 at 20:38
-
$\begingroup$ @gandalf3 How do you apply scale and rotation? As far as I see in these simulations, the objects seem to have the same rotation and scale. I think I'm not sure what scale and rotation means in this context. $\endgroup$– AmirCommented Sep 11, 2018 at 20:24
-
$\begingroup$ @Amir
Ctrl+A
. Each object has a scale, rotation, and position by which the underlying mesh data is transformed before being displayed. Applying a given component permanently transforms the mesh data and resets the object transformation to 0. $\endgroup$– gandalf3Commented Sep 11, 2018 at 20:45 -
1$\begingroup$ @gandalf3 I see. Thank you. Here's how people can do it via Python: 1) select your object so that
bpy.context.scene.objects.active
points to it 2)bpy.ops.object.transform_apply(location = False, scale = True, rotation = True)
$\endgroup$– AmirCommented Sep 12, 2018 at 1:36
Short answer: it depends.
Applying transformation can be important but it mostly comes down to what you do intend to do with the objects.
Looking at this from a simplistic viewpoint, ideally it wouldn't matter and everything would work just fine even when scaled/rotated.
A good rule of thumb is:
Apply rotation and scale to your models unless you have a reason not to.
Transformation is split up into translation/rotation/scale, generalizing on Blender's support:
- rotated objects (well supported)
- translated objects (well supported)
- scaled objects (well supported)
- non-uniform scaled objects
- negative scaled objects
The last 2 can cause issues with modifiers, constraints and some tools. Even though for basic operations it works fine, there's rarely a good reason to have negative scale.
Considerations:
- Most modifiers are applied before scale. So the effect of a bevel or solidify could be squashed with non-uniform scale. Armature and hook modifiers are an exception to this rule.
- Negative scale will flip the object's normals (when an odd number of axes is flipped).
- Most edit mode tools such as smooth-subdivide won't take non-uniform scale into account.
- Rotation and scale can cause problems with armatures, especially when exporting to different formats.
- Rigid body physics doesn't support scaled objects well (this could be seen as a bug, nevertheless as it stands it's not working well).
- Scale applied after parenting will be applied to children, if you have complex parent/child setups - it's less trouble if you only scale objects when necessary.
- Extreme scale values
>1000.0
or<0.0001
(a large object scaled down or a small object scaled up) can cause floating point math precision issues when in edit mode, also for other calculations.
Areas scaled/transformed objects are fine:
- Static scenery (maybe you want to have different sized rocks). Objects which don't move or interact with other objects via modifiers, constraints etc.
- When it's intentional - an object stretches (animate scale with a bouncing ball).
-
$\begingroup$ I wouldn't recommend applying rotation as a general rule. Often it is useful to ALT+D (link duplicate) an object, clear it's rotation with ALT+R and modify it in it's original state. $\endgroup$– itmuckelCommented Apr 2, 2019 at 20:03
-
$\begingroup$ @itmuckel the statement has the qualifier - "Unless you have a good reason not to" - if your using linked duplicates that are rotated, then that's a good reason. $\endgroup$ Commented Jan 4 at 6:54
It is also important to apply scale when doing UV unwrapping. When you scale an object in object mode the UV unwrap does not see the scale, it will unwrap the mesh as if you had not scaled it.
Scale not applied
Scale applied
-
3$\begingroup$ This is very helpful. If you use the checker pattern to check your uv unwrap and see bad results it can sometimes be that you need to apply the transform. I'm not sure but I would guess you should do it to everything you uv unwrap $\endgroup$– luigiCommented Mar 7, 2015 at 2:31
I guess, my issue about the Array modifier of a rotated object is a helpful example. Here are the pictures of what I had, what I needed to get by adding an Array modifier and what I actually got:
Duane Dibbley provided a nice explanation: if the scaling/rotating is not applied, the Array doesn't only applies rotation with respect to the pivot (Empty), but also applies previous non-applied scaling and rotating!
I also found that if you are far into your project and don't want everything to go crazy when you apply your transforms, applying transforms to delta works well.
I was nearly done my character and forgot to apply transforms, but every time I applied them something broke, my shader, my eyelids rotations, etc. Applying to delta applied the transforms, but kept most things from breaking.
You can do so by pressing Ctrl + A > All Transforms to Deltas
Applying transforms to delta is also an alternative solution and keeps things from breaking!