1
$\begingroup$

I don't get Blender's parenting system. I have a cube at location 1, 1, 1, create a new sphere at 0, 0, 0 and use the Make Parent command with Keep Transform enabled, so that the sphere is the child of the cube. But the sphere's coordinates show still 0, 0, 0 instead of -1, -1, -1 relative to it's parent. It is different to other 3D programs like Maya, isn't it?

The command Make parent without inverse does what I need except for that it always moves the child-to-be to a new position or changes it scale. Is there a way to parent it so it shows me the local coordinates to it's parent without moving, scaling or rotating the object?

$\endgroup$

2 Answers 2

2
$\begingroup$

By default Blender always shows local coordinates, but you can do it with a little workaround:

Select the sphere, press Shift S "cursor to selected", use "Make parent without inverse", press Shift S "Selection to cursor".

In order to work, you have to apply (Ctrl A) rot and scale of your parent object.

$\endgroup$
2
  • $\begingroup$ I could make it work with 'All Transforms to Delta', it makes the current objects position the new zero, zero, zero location without moving it's origin point $\endgroup$
    – Lala_Ghost
    Nov 9, 2021 at 7:41
  • 3
    $\begingroup$ "By default Blender always shows local coordinates" Not true. It shows local coordinates in edit mode, but for a parented object in object mode it only shows global coordinates, and that's what this question is about. $\endgroup$ Jun 20, 2023 at 14:00
1
$\begingroup$

There's a hidden inverse matrix that encodes the transformation of children. Its values are not displayed anywhere. In your examples, that inverse matrix contains the translation from 1 to 0.

If you don't want this-- if you want an identity inverse-- it's a bit of trouble to set up. First, mark the transformation of your child-to-be by creating an empty, giving it a copy transforms constraint (world->world) targeting the child-to-be, and apply visual transform then delete the constraint. Then, acquire the transformation of your parent-to-be by giving your child-to-be a copy transforms constraint (world->world) targeting the parent-to-be, applying as visual transform, and deleting the constraint.

There may be easier ways of acquiring the transform of the parent-to-be; I believe that if you enter a parent directly into the parent field in properties/object/relations, on an untransformed object, it will just acquire the transform of the parent you enter. But I haven't tested that recently.

Now parent your child object to your parent object to create a parenting relationship with an identity inverse, then, again, re-acquire the world transform of your empty marker by applying a copy transforms constraint targeting that empty.

Note that in certain cases-- skew: inherited non-uniform scale in the presence of local rotation-- the copy transforms targeting the parent-to-be won't work without unparenting the parent first.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .