How to access (view/change) parent inverse transforms?

I spent several hours today to achieve something simple (rotate a group of objects around a given axis of an empty), and found that Blender transforms and coordinates work in a very convoluted and hard-to-understand way.
At last I found the problem: Blender objects not only have transform coordinates (visible in N-panel) and delta transform coordinates (visible in a sub-panel under object properties), but also so-called inverse parent coordinates. These seem to be the location/rotation/scale of the child relative to its parent, exactly at the time of parenting.

Now, I canā€™t seem to find any place in the interface where I can see what these inverse parent coordinates are, or if an object even has these or not. How can I access/change these coordinates in Blender?

1 Like

I think you need to read THIS section in the manual, it best explains the parenting systemā€¦
Hope this helps.

Not really, but you prob come from a different software package - Use an armature bone instead of an empty - they can give you trouble if you donā€™t understand the pit falls of them.

This is true, but it is something you need not worry about unless you might be scripting ( inverse parent coordinates)

Not in the interface - for a reason, but you can access it and change it. You use the python console to do thatā€¦
If you select the object, you can type one of these into the python console ā€“

print(C.object.matrix_basis.decompose())
print(C.object.matrix_local.decompose())
print(C.object.matrix_world.decompose())
print(C.object.matrix_parent_inverse.decompose())

OR

print(D.objects[ā€œNameā€].matrix_basis.decompose())
_local.
_world.
_parent_inverse.

Return the location, rotation and scale components of this matrix.
:return: loc, rot, scale triple.
:rtype: (:class:Vector, :class:Quaternion, :class:Vector)

I donā€™t know what you want to change, so this is as much help as I can be, the take away is do not use emptys unless you really understand how blender works

Iā€™ve been using Blender for a long time now. Just this time I was not modelling in Blender, but trying to rebuild movements of parts of an imported CAD-model. I need to be able to input precise values for position/rotation (parts turning around a given rotation axis = the axis of a given coordinate system) and have the exact same result as in the CAD-program. Since the math is the same. Except I got different results.
I never thought of using armatures. Empties seem like the proper solution to define a coordinate system.
Anyways, the problem was, that there is no way to see that Blender applies a hidden transform (the parent inverse) on top of the transforms that you can change in the interface. At least there is a way to delete it.
On a related note, there is also no way to see the ā€œresultingā€ world coordinates of something. I always need to snap an object to it, and then see what its coordinates are.

I had hoped there is something hidden in the interface. If not, your script-solution is the next best thing. Thank you!

One question: with print(C.object.matrix_basis.decompose()), it gives the rotation in Quaternions. Is there a way to write it out in XYZ-Euler?

I do not think so - but now that you have explained your situation better, I think maybe ā€˜Animation Nodesā€™ might be better suited or as I said use an armature. But if you have any experience with AN then Clockmender has some good nodes he coded himself - I leave you links to his web page and his Github