I noticed that when I use geometry nodes to scatter object instances they inherit the scaling of the parent object. I would like to compensate that by dividing the instances by the parent scale first, so initially they start with a unit scale. Now the problem is how to access the scale of the input geometry?

  • Geometry nodes offer the transform node, but that is an additive setter for position and rotation and a multiplicative setter for scaling. I did not find any getter for those values. There is none yet, right?

  • I tried using a driver on the transform node with self enabled, but self points to the socket in that case, e.g. NodeSocketFloat. Is there a way to access the processed geometry from within the driver using self? True, it works by copying the scale field of the object but that will work only on that particular object, I seek a general solution that would work for all objects with different scales using the same geometry nodes instance.

  • I also tried to create a new input parameter for the modifier where I would feed the scale again by a driver using the self variable, but that also relates to the modifier. Is there maybe a way to access the underlying object from there?

If there is any other way to reset the scale of the instanced object, will be glad to find out.


2 Answers 2


The scaling within the Geometry Nodes is always $1$ in relation to the current object.

You would therefore need a reference point.

In Blender 3.0+ you can solve this by using an unscaled object for your Geometry Nodes, and embedding the scaled object with Object Info.

This node will give you the scaling.

However, you don't need it at all if you activate the Relative option and realize the instance with Realize Instances, because then the geometry is immediately scaled accordingly and converted into a processable mesh:

enter image description here


In Blender 3.4 you can use Self Object node:


You must log in to answer this question.

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