Add ability to transform parent nodes without affecting global transform of its children#109680
Conversation
|
This makes sense to have when working with certain setups that rely on a certain parent-child structure, e.g. CSG nodes. I've wanted this multiple times when prototyping with CSG.
Note that the discussion requested the feature in the 2D editor, but this proposal only implements it in 3D currently. |
Good point out, updated the post. |
Note that "Partially closes #xxxx" would still close the issue when the PR is merged, as GitHub sees "closes #xxxx" only, so you have to use another word like "addresses" instead. I went ahead and edited OP for this. |
b43efbc to
e209d51
Compare
|
This works with inspector now. 2026-03-03.21-12-10.mp4 |
|
I haven’t had time to test or review but the design proposal is something I’ve always wanted |
Calinou
left a comment
There was a problem hiding this comment.
Tested locally (rebased on top of master c53c5a1), it mostly works as expected. This will be a nice usability boost for CSG in particular 🙂
csg_relative_root_node.mp4
Some feedback:
- When using relative positioning, CSG gizmos don't update until you move your mouse over one of the handles:
csg_relative_root_node_gizmos.mp4
e209d51 to
ebc6da0
Compare
|
Should be fixed: 2026-03-04.20-14-05.mp4 |
ebc6da0 to
67e39db
Compare
There was a problem hiding this comment.
Works great now 🙂 Code looks good to me.
I think the Pin icon is a better choice for now. Ideally, we'll want a custom design but I am not sure what would convey the idea of "parent is transformed without affecting children" well.
PS: As an aside, modifying position/rotation/scale properties in the inspector while this mode is enabled does affect the properties in the same way as if you were using the gizmos. This is probably not a bug and can be useful for manual entry, but it can be a little surprising. Maybe it should be denoted in the tooltip.
@Jesusemora While testing this PR, I noticed CSG autosmooth is affected by non-uniform scaling:
csg_autosmooth_non_uniform_scale.mp4
Notice how the house (which is a child of the Ground node I'm editing) has its wall being autosmoothed, even though it shouldn't at the default angle of 50°.
I'm not sure if this can be fixed, but I thought I'd report it just in case. The issue doesn't seem to occur with uniform scaling. To test this, use the MRP I posted in #116749, move the ground away from the house and scale it non-uniformly with parent transforms enabled using this PR.
My best guess is something to do with CSG operations (pack/unpack?)? It probably uses the transform of the Node when doing the operations.
|
67e39db to
5b2a543
Compare
|
Tested, found a bug where if you cancel transform operation by pressing right mouse button it moves the children |
…orm of its children Revert
5b2a543 to
e8e3cf1
Compare
Fixed. 2026-03-07.09-27-00.mp4 |
|
@Jesusemora I've opened a separate issue to track CSG: #117190 |
|
Thanks! |


Partially addresses: godotengine/godot-proposals#9930 (for 3D)
2025-08-16.23-28-02.mp4
TODO: