Parent offset in Blender is difficult to understand, because there are obscured values that determine the outcome of user operations. See this question.
Are there any tools/addons to help with this? For example, a replacement parenting/reparenting function, or even a tool to simply display the internal values, to aid in understanding what is going on?
Secondary question, is there a stated or obvious reason for this seemingly intentional operational obfuscation? Is it something worth my time in seeking to drive change or offer to help change?
If you've worked with it for a while, and it now makes perfect sense to you, let me remind you of where others might be coming from. Here's a sample .blend I'm currently looking at:
All of these are simple, visibly identical plain cube meshes with identical rotation, and the object origin at the mesh center of each.
For starters, note that both D and C report translations of 0, 0, 0, and yet are in different locations, both in world space AND relative to their parent. How odd, I think. However, the real confusion is when I try to actually make parenting changes.
We know that there are various operations to unparent, keep transform, clear parent inverse, and set parent. However despite my goal of transferring the child relationship of D from parent A to parent B, nothing results in a destination of H. Various operations result in G, F, and E.
That means that if, historically I've moved something, I might be building objects with defects that cannot be measured through the UI. I had just this scenario recently. Rotations and multiple duplicates were involved, and I had to redo lots of work to get things properly aligned.
For me it was a cautionary tale of "be very paranoid of where things were historically", but that doesn't seem like an ideal lesson for me to learn. Or, maybe I'm just doing something else wrong.