2
$\begingroup$

So a few simple questions around an area that keeps tripping me up in two areas that are related. I guess I need a good tutorial on these very specific areas...The bottom line is that if I can understand the behaviors better, I will have better control because most of the time I try to distribute objects with GNs I have trouble! What I am trying to accomplish is creating a bunch of trees/rocks and nature resources that I can distribute over a landscape. However I don't want them created all in one spot (world origin) as they will all overlap and make it harder to edit. Ideally I can create them off to the side and get them randomly distributed by understanding distribution and origins better. The questions up front are:

  1. Why does apply location reset the object origin and why do I want that? I usually want to keep my object origin at the center of geometry
  2. What do the GN ObjectInfo/CollectionInfo 'Separate Children' and 'Reset Children' do? When do I know when to use them?
  3. What do the GN ObjectInfo/CollectionInfo 'Original' and 'Relative' do? When do I know when to use them?
  4. If I move my Suzanne up on the Z axis, the distributed Suzanne's also move up the Z EVEN AFTER I APPLY THE LOCATION WHICH MOVES THE OBJECT ORIGIN BACK TO WORLD ORIGIN. WHY?
  5. How do I distribute ObjectInfo or CollectionInfo objects more randomly or more specifically question 5
  6. How do I easily create objects out of my camera view with different not at world origin and distribute them across another object

First please note that I normally apply rotation and scale but sometimes I apply location. It's taken me a long time to realize that when I apply location the Object origin changes from the object's geometry to the world origin (or cursor location (they are often the same))

So first question, why does the origin point change when location is applied? I would expect that object origin should not be affected by saying "this object is at it's desired/home spot" which is what I think applying object location is doing.

WRT Geometry Nodes and distributing collections of objects, all of this gets more confusing. I don't need a specific fix for my project, I need a better understanding of behaviors and expectations.

For instance given this simple setup, with a gray plane, orange Suzanne and a green Torus, all objects have scale and rotation applied.

enter image description here

Now I want to distribute both objects randomly over the plane and make them purple. enter image description here

All good, They seem to have the same scale, they are randomly distributed. I notice that the two options on the Collection info node do not seem to do anything when selected separately, but if both are checked, the distributed object move just a bit lower on the Z and I have no idea why enter image description here

Now if I change the Collection Info from Original to Relative and try the Separate and Reset Children options on the CollectionInfo node I get similar results. I have no idea why!! What are these options doing?

Now I want to distribute both the torus and Suzanne separately, so I guess I need to put them in two different collectionInfo (or ObjectInfo) and Join them back to the geometry. Since they both are at world origin and with scale and rotation applied, they occupy the same space so I have to separate them. However this does not put the distributed object at separate locations. I guess I need to add some randomness to the points that are distributed on the plane.

enter image description here

Suzanne moved up on the Z and location Applied, so Suzanne's origin is at world origin - so why are the distributed instances not on the Z that is the same as Suzanne's location? Again, Separate and Reset Children and Original/Relative seem to have no impact. To get them back to the plane I need to add a Translate Instances node to readjust the 'Z', yuck. Is there a more straightforward way? enter image description here

$\endgroup$

1 Answer 1

4
$\begingroup$
  1. Why does apply location reset the object origin and why do I want that? I usually want to keep my object origin at the center of geometry.

It's a little bit like asking why would your want to park in the back of your house if you usually want to park in the front. There might be some convenience in parking in the back. In case of Blender objects, imagine that you rotate an object: you don't necessarily want to rotate the door around its center of geometry, perhaps you want to position the origin near one side of the door:

It's similar with scaling, perhaps you don't want something to grow from / shrink towards its center of geometry but have another "pivot point".

Also imagine that you have geometry involving a sphere plus something else. It may be convenient to use PositionVector Math: Length to find out the distance to the center of the sphere. But this won't work if you move the origin away from sphere center to the center of geometry of sphere + the other thing.

  1. What do the GN ObjectInfo/CollectionInfo 'Separate Children' and 'Reset Children' do? When do I know when to use them?

Object Info node doesn't have those options. Separate Children loads each object in the collection as a separate instance, useful together with Instance on Points and Pick Instances option, here's a simple example of that:

Geometry Nodes - Create a random row of books which I have created previously

Reset Children will reset the instances Location, Rotation and Scale to default values (ones for scale and zeroes for the rest). This is especially useful to be able to position source objects in a way they don't overlap each-other, while not making that positioning affect the positioning inside the instances:

  1. What do the GN ObjectInfo/CollectionInfo 'Original' and 'Relative' do? When do I know when to use them?

Original coordinate space will give you the same Location, Rotation and Scale as those you see in the Numbers Panel when you select imported object in the outliner. Also when you investigate the positions of vertices (edges, faces) in the spreadsheet, they will remain constant as you move, rotate and scale the object that is importing (the object with the geometry nodes modifier).

Relative translates all mentioned properties into the parent (object that is importing) object's coordinate space.

  1. If I move my Suzanne up on the Z axis, the distributed Suzanne's also move up the Z EVEN AFTER I APPLY THE LOCATION WHICH MOVES THE OBJECT ORIGIN BACK TO WORLD ORIGIN. WHY?

"Applying Location" means: "Set the Location to default $<0, 0, 0>$ without changing how the object appears visually. It may be confusing if you observe the object through geometry nodes of another object, but if you just look at the original object as you apply the location, you see nothing changes except the origin moves to the world origin. That's exactly the purpose of applying location.

  1. How do I distribute ObjectInfo or CollectionInfo objects more randomly or more specifically question 5

However this does not put the distributed object at separate locations. I guess I need to add some randomness to the points that are distributed on the plane.

You need to change the seed of one of the "Distribute Points" nodes. Or rather you would need, if you couldn't use the "Pick Instances" option instead.

  1. How do I easily create objects out of my camera view with different not at world origin and distribute them across another object

I don't understand this question.

I notice that the two options on the Collection info node do not seem to do anything when selected separately,

When separated, each object is represented by a separate instance. I already explained you're supposed to use it together with "Pick Instances". Otherwise the difference is extremely subtle: If "Instance on Points" node doesn't get a single instance, but gets e.g. multiple instances, it will wrap these instances in another instance. When you import a collection not separated, it's just a joined mesh data, that will be directly wrapped (by "Instance on Points" node) in a single instance. I can prove it by using the depth limit of instance-in-instance:

but if both are checked, the distributed object move just a bit lower on the Z and I have no idea why

Perhaps the objects don't have their origins at the same Z.

Suzanne moved up on the Z and location Applied, so Suzanne's origin is at world origin - so why are the distributed instances not on the Z that is the same as Suzanne's location?

Because that's exactly what you're supposed to do in order to make the Suzanne appear higher - you either ⭾ Tab and move it up in Edit Mode, or you move it up in Object Mode and apply location - I think the most common use of applying location/rotation/scale is when people forgot to make the change in Edit Mode and want to fix this error.

$\endgroup$
3
  • $\begingroup$ That's a lot of questions (which is why the question should actually be closed), but all the more wonderful answers. Thanks for this great explanation! $\endgroup$
    – quellenform
    Commented May 30, 2023 at 17:26
  • $\begingroup$ @quellenform yes, though I think the question could perhaps be rephrased as "how options of collection info node affect its output?" or something like that. $\endgroup$ Commented May 30, 2023 at 17:35
  • 1
    $\begingroup$ Absolutely right, thank you! No sooner said than done. $\endgroup$
    – quellenform
    Commented May 30, 2023 at 17:49

You must log in to answer this question.

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