I noticed the delta transform in the object panel, and I didn’t find any instruction about how to use it and what it is for… but it looks like we can use it to create a freeze transformation like maya. And since I could find a way to use it, I created this python script.
I’m really new to python scripting, I come from maya and mel, so I’m sure we can make it a lot more simple.
Anyway, I just wanted to share it.
#using delta transform...
#looks like a freeze transformation to me
import bpy
import math
#location
bpy.context.active_object.delta_location+=bpy.context.active_object.location
bpy.context.active_object.location=[0,0,0]
#rotation X
rotX=(math.degrees(bpy.context.active_object.rotation_euler.x))
rotDeltaX=(math.degrees(bpy.context.active_object.delta_rotation_euler.x))
bpy.context.active_object.rotation_euler.x=0
bpy.context.active_object.delta_rotation_euler.x=math.radians(rotX)+math.radians(rotDeltaX)
#rotation Y
rotY=(math.degrees(bpy.context.active_object.rotation_euler.y))
rotDeltaY=(math.degrees(bpy.context.active_object.delta_rotation_euler.y))
bpy.context.active_object.rotation_euler.y=0
bpy.context.active_object.delta_rotation_euler.y=math.radians(rotY)+math.radians(rotDeltaY)
#rotation Z
rotZ=(math.degrees(bpy.context.active_object.rotation_euler.z))
rotDeltaZ=(math.degrees(bpy.context.active_object.delta_rotation_euler.z))
bpy.context.active_object.rotation_euler.z=0
bpy.context.active_object.delta_rotation_euler.z=math.radians(rotZ)+math.radians(rotDeltaZ)
#scale
bpy.context.active_object.delta_scale+=bpy.context.active_object.scale
bpy.context.active_object.delta_scale.x-=1
bpy.context.active_object.delta_scale.y-=1
bpy.context.active_object.delta_scale.z-=1
bpy.context.active_object.scale=[1,1,1]