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?
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