Deleting a parent, leaving children behind, transformations applied?

Is there a way to delete the root of a hierarchy, leaving the children, and optimally having the parent’s transforms Applied to the children such that there’s no change in their location, scale, or rotation?

So, all the first level children become root level objects, and all their descendents are still intact.

Additionally, can one eliminate a hierarchy and have ALL the descendents become zero level items, with all transforms Applied?

AFAIK, no builtin way (I mean, aside from a roundabout with manually unparenting and reparenting every gap with Keep Transform). This operation will soon be available in my Forgotten Tools add-on (not applied though, that’d be too harsh, but rather visual transform kept intact when removing things from hierarchy).

Aside from not deleting the initial root, isn’t this just what the clear parent operator does?

1 Like

We might need more details “Clear parent keep transform” in “object” menu or alt P.

Yeah, it is and that works for trivial cases. But generally what one wants is to just select some things and yank them from the hierarchy, without having to manually go through them, unparenting them and reparenting their soon-to-be-former children, i.e. like this in one go:

Not a great example because you’d just need Set Parent(keep transform) :stuck_out_tongue:
But yes, I guess it isn’t possible to maintain transforms while removing arbitrary hierarchy members.
Rather than parent setting and clearing, it would need a kind of ‘pop’ from hierarchy.

Note however that OP is talking specifically about removing the root object, not arbitrary tree members, in which case ‘clear parent’ fits the requirements for both questions

Emm, no. You’d need to first select the bottom children plus the new root and do that on them, then select what you actually wanted and unparent. Which gets more painful the more separated the hierarchy (spatially and topologically). It’s a classic case of Blender’s “do what you wanted, but three months later ©”.

And yes, I know what it’s about, removing the root is merely a particular case, which should be as simple as selecting the root and running the operation (as opposed to selecting all of its immediate children and unparenting them, which is what one has to do in vanilla Blender).

It’s only the second question where a mere “Clear parent and keep transforms” would suffice.

It’s the only case for which a solution was sought.

  1. Manually Select Root
  2. Select Grouped > Immediate Children OR Select Grouped > Children
  3. Clear Parent(Keep Transform)

Alternatively:

  1. Set New Root as active
  2. Set Parent(Keep Transform)

A one button solution would be nice. Maybe a hierarchically aware delete as OP is looking for, or just a simple hierarchical pop. But doing it manually is not the mountain you make it seem.

Like I said in my original reply, “aside from a roundabout with manually unparenting and reparenting every gap with Keep Transform”. :face_with_raised_eyebrow:

I’m not making it seem a mountain. I’m talking about general case. A more practical solution is needed. This question keeps popping up every now and then.

See, the logical extension of the original question is: if I can do it for one root, how would I do it for several? The answer then becomes either “do it peacemeal”, or “dance with carefully extending selection”. Even two roots is a handful: select one, select children, shift+select the second root, select children and tick Extend, unselect the second root (which, in a real scene with many objects closeby, may not be that fun of a task either, given how Blender’s object selection works). And after doing the unparenting, go back and select the roots again, which were what you needed in the first place. This process “smells”, so to speak. It should be as simple as “select what you need, hit a button (hotkey, menu, whatever)”. Which is, incidentally, Blender’s own design philosophy.