Object -> Apply -> All Transforms vs. All Transforms to Deltas?

What is the difference between Object → Apply → All Transforms and Object → Apply → All Transforms to Deltas?

Up until now I’ve been using the non-Deltas options, but I watched a tutorial that used the Deltas options. Blender’s manual isn’t clear on the difference, and I didn’t see any obvious difference when experimenting with Blender.

Under what circumstances would I want to use the Deltas options vs. the non-Deltas options?

Look it at this way. a Delta or when you apply a delta it means you are setting its transform values to 0 on all aspects.

what is commonly taught is that “Delta = Difference”

When you make a new object, it gives it all 0’s in transforms in the X,Y, and Z value.

What apply all transforms to deltas does, is if you have moved an item from the world origin, it will have a set of 3 different transform values. when you apply all transforms to delta it sets those xyz values back to zero regardless of where the world origin is

@Tom_Pleysier both options do that though.

The main difference I can find so far is that transforms to deltas doesn’t reset pivot points.

From the manual:

“Delta Transforms are simply transformations that are applied on top of the transforms described above. Delta Transforms are particularly useful in animations. For example, you can animate an object with the primary transforms then move them around with Delta Transforms.”

So they are basically additional transformations the are applied after the main ones, similar to an offset.

The use cases for deltas are not too common but there are some.
For example if you apply all transformations (or just rotation) you loose the possibility to rotate the object on its original local axis’s. But if you apply them as deltas you can still rotate it on the original local axis’s.

In general delta transforms can get confusing and it is best not to use them if you do not have a good reason for it.

1 Like

Thanks @DNorman, yes that aligns with what I’ve found. The background of my issues in searching on this topic is that I want a way to transfer models between Maya and Blender without losing anything. For anyone who may find it useful:

I’m using Alembics for transfer, which is fine, until you want to freeze/apply transforms, whilst keeping your pivots in place. In Blender, this can be done by “applying to deltas”. But when you export as Alembic, it wraps the deltas back into the main transforms, giving you what you started with before you applied to deltas.

In the case of Maya, when you freeze transforms, it actually keeps the pivot in the desired place by default (unless you additionally “reset transforms”). In Maya though, this is not done with deltas but with an extra XYZ value for the position of the pivot (which is the same thing that changes when you press insert, to move the pivot manually). When you Export to Alembic, this pivot information is actually written into the Abc file and so when you read it back into Maya, you get exactly what you exported back in. But this is still custom Maya data, which Blender (or any other DCC) wont read. So what you’ll get into Blender is zeroed transforms but the pivot point will be at the origin.

So anyway, without writing some custom Alembic reading/writing code, I’ve ended up by saying that if you want to pass models precisely between the DCCs in this way, it’s best not to freeze/apply transforms at all (or move pivots in Maya).

Maybe I am misunderstanding but could you not simply apply only rotation and scale, without applying location?
This would loose the original rotation and scale so maybe not what you are after.

1 Like

Hi @DNorman well actually this is a case where I want to apply/freeze transforms and so lose the original rotation and scale. It is true that I could only apply rot and scale and the pivots would stay in place. But then I would have to accept un-applied/frozen translations.

For context, this is pipeline code and so has to cover best practice for any models that may move between the DCCs. Traditionally we’d automatically freeze/apply transforms to keep the model as “clean” as possible when publishing it down the pipeline. But I think I’ll just have to accept that for jobs where we’re using both Blender and Maya in the modelling stage and we need to preserve pivot points and everything else, we’ll just have to configure our publish code to not freeze/apply transforms at all (and hope the artists don’t manually move the pivot points in Maya).

Again for context, we had modellers modelling in Maya, publishing, then bringing into Blender so it could be published out to .glb format, which was required. But the Glb files were coming out with different pivot points as what was configured in the original Maya model. Only easy way to resolve this was to stop the publisher from freezing transforms completely.

I do not use Maya or work in a group that uses models in different software, so my thoughts may not apply in your case.

If you apply rotation and scale the model should be clean in the sense that its rotation and scale is no longer a transformation and “becomes real”.

Location on the other hand is a different concept. In 3d space an objects location will always be relative to the worlds origin. So to “accept un-applied/frozen translations” to me sounds like what you are after. I presume that Maya also treats location as an un-applied offset from the worlds origin.

When selling assets made in Blender out of multiple objects, it is common practice to apply only rotation and scale leaving the locations un-appleid, respecting their location and pivot point in the 3d world space. These assets should import to other software as intended.

It is also possible to move the objects pivot point in Blender as well, either directly, in object mode N panel – tool – options – effect only – Origins or in the object menu-set origin.
Or indirectly by moving all verts, faces or edges in edit mode. So there is no fail-safe way to know that artists will not move pivots in Blender either.

I think that you could configure the publish code to only apply rotation and scale, maybe I am missing something.

Hi @DNorman, thanks I wasn’t aware of the “Affect Origins” option (still pretty new to Blender).

It may actually be fine to only apply rotations and scale in most cases. In fact, in most cases, not apply/freezing transforms at all is probably fine. But we have a very diverse type of job here and I want to find the best default as well as options to adjust.

Nevertheless, there is still a difference between Maya and Blender I think. When you move the origin in Blender, it’s actually moving the root transform of the object (the Location XYZ changes accordingly). At the same time though, it’s moving the points of the mesh in the opposite direction, to keep everything where it was. In Maya, when you move the pivot point (by pressing insert), it’s not moving the origin of the object or the points of the mesh. It just has this extra, separate piece of data, called “the pivot point” (in actual fact, just to complicate things, it has 2 of them “rotate pivot point” and “scale pivot point” but they both move together by default). Whilst this is powerful, it’s a non standard representation and so it doesn’t get written into Alembics in a way that means anything to anyone except Maya. And as such, if you’re moving pivots in Maya (or freezing transforms), then you export to Alembic (or OBJ) and import into another software, don’t expect the pivots to be where you left them.

1 Like

Yes that does sound like things could get confusing, now I understand your preoccupation for moving pivot points in Maya.

Yes in Blender an objects default pivot point and location is bound to its origin, although you can use other pivot points via the transform pivot options. I do not think it is moving the the points of the mash in the opposite direction, it is leaving them where they are respect to the worlds origin.

There is a new option in Blender 4.0 to select any point of geometry in the scene as pivot “on the fly” this will be very useful.
I would not recommend using 4.0 or other experimental builds for production though and this will not really help with your specific dilemma.

Cool, thanks for the dialog and learnings.

To clarify, the mesh does indeed stay where it was with respect to the world origin. But if you watch the object’s origin Location XYZ values as you move the origin, they (obviously) change. So (in memory), the local positions of the mesh’s points are moving the other way, to adjust. This is kind of the opposite of what “apply/freeze transforms” does.

I read this topic but still confusing and don’t understand the difference.