3
$\begingroup$

How do I apply the delta transforms of a couple hundred objects (in a collection, if it helps) to normal transform? I can't even find an option to clear delta transforms.

There's the Object -> Apply -> Location to Deltas, option, but no equivalent to go in reverse!?

$\endgroup$
1
  • $\begingroup$ I struggled to find a solution as well, what worked for me was joining with some other object that has 0 deltas and separating it back. But I am still trying to figure out something more usable, especially for multiple objects. $\endgroup$ Jul 19, 2019 at 22:44

3 Answers 3

4
$\begingroup$

I ran into the same issue and used Bintang Senja solution. I also used for rotation and scale, maybe the code can help someone else:

import bpy
for obj in bpy.context.selected_objects:
    # Store delta location, Eurler rotation and scale of selected objects
    obj_deltaL = obj.delta_location
    obj_deltaR = obj.delta_rotation_euler
    obj_deltaS = obj.delta_scale

    # Assign selected objects location, Euler rotation and scale as delta location, Eurler rotation and scale, Reset delta location and Euler rotation to 0 and scale to 1
    obj.location = obj_deltaL
    obj.delta_location = (0,0,0)
    obj.rotation_euler = obj_deltaR
    obj.delta_rotation_euler = (0,0,0)
    obj.scale = obj_deltaS
    obj.delta_scale = (1,1,1)

Please don't juge the code, I know it's crappy. I just wanted a quick and easy solution. It works fine :)

$\endgroup$
1
$\begingroup$

Whilst it seems crazy to me there is no button or even function in the searchable toolbox, creating a script in my file called "Apply Delta to Transform" has worked reasonably for me.

In my case I was happy with the current total transform of the objects, and just wanted to apply the delta transform to the base transform. A script for this is below:

import bpy
for obj in bpy.context.selected_objects:
    obj.location += obj.delta_location
    obj.delta_location = (0, 0, 0)
    obj.rotation_euler.rotate(obj.delta_rotation_euler)
    obj.delta_rotation_euler = (0, 0, 0)
    obj.scale *= obj.delta_scale
    obj.delta_scale = (1, 1, 1)

Open a text editor panel, enter the above script, and click the "Run" button (with the play icon) once you've selected the objects whose transform you want to apply.

$\endgroup$
0
$\begingroup$

I don't know if there is a button for it, but you can try to use python from script editor. If you have object selected and want to transfer delta location to normal location and also reset the delta you can try this :

import bpy

for obj in bpy.context.selected_objects:
    # Store delta location of object
    obj_delta = obj.delta_location

    # Assign object location as delta location and Reset delta location to 0
    obj.location = obj_delta
    obj.delta_location = (0,0,0)
$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .