Geometry Nodes

Is there a way to get access to the first or last point and use only that point for Point Instance? Or is there a way to specify a point with vectors for point instance?

If there is no other way, I would like to suggest to add a Point mesh primitive.

Use case would be to use GN as an array for a collection for building floors, for example. I would like to have a unique bottom “cap” and top “cap” (a roof) as in the array modifier.

1 Like

I don’t know if I’m interpreting your question correctly, but regarding specifying a point with vector for point instance, you can use a line primitive with count 1.

1 Like

Nice! That’s it! I didn’t know the line tool is also a point tool :wink:

1 Like

Would it be possible to add some kind of highlighting in the spreadsheet of geometry selected in the viewport (in edit mode)? You can already use ‘selected only’ for this, but for quickly identifying what geometry corresponds to which line, highlighting the corresponding lines would be nice.

I Just made an instancing by rate system in geonode
Might be handy to some @dimitar

https://pasteall.org/blend/d98f55bce302490984bc6c335995d54f

Capture d’écran 2021-04-13 032543

I think it’s a bit slow? curious to see if there’s a faster/better method, I’m almost sure that i took a long detour as it is quite redundant. (the rate is basically calculated 10 times, with a generated random int attr from 0 to 100 which is then compared with user rate input, then with in some boolean maths we place a new idx on available spots of instance_idx attr)

Note that instancing by index can be really handy,
for example you can use a TextureSample node, remap the texture values as Integrer so they can be read as instance_idx then poof you have a multi instance texture cluster set up

8 Likes

I thought this was a fun idea, so I gave it a try. I think it can be a bit simpler than your setup.

I had way too much fun organizing the node links…

There’s just an accumulated sum of all the weights used as a max for the attribute randomize, an attribute compare, point separate, and point instance in the node groups. I think there’s some math in there to fix up but I believe the basic idea works.

Conclusions-- hopefully there’s a better way of addressing this use case, and I wish sockets lined up with the grid when you use snapping to place nodes.

12 Likes

Is it possible to create Geometry Nodes Instances exactly on the elements of a Vertex Group? Just one node for each Vertex Without randomization?

Thanks Rusculleda

1 Like

You don’t need a point distribute for that. You can use the vertex group as mask on a point separate node and connect that directly to a point instance node.

2 Likes

The drop down menu currently only displays attributes from the node on the left. Most of the time, it make sense, but sometimes in cases like this:

I am trying to instance little cubes on the vertices of the large cubes, and I want to input a rotation, but it is not there. If I use point distribute first, “rotation” would be there, but when I just simply want to instance on the vertex, it is not there.

I understand the logic, that the attribute needs to be created first, to be displayed on the drop down. But from a UX perspective, it also does not make sense why things like “rotation” and “scale” are not part of the point cloud’s built in attributes included in drop down, despite the “point instance” node clearly accepts a rotation attribute and scale attribute input. I hope I can soon see “rotation” and “scale” in the drop down without the need to manually create it.

A proper way to do per vertices point instancing would be to convert the mesh to a point cloud first,
it would avoid a lot of problems
unfortunately it’s not yet possible

3 Likes

Guys, I’m trying to push particles evenly from the sphere using normal data. Why it is not working?
Thanks!

Just a small oversight: You’re using the Attribute Math node instead of the Attribute Vector Math node :upside_down_face:

(The Attribute Math node creates a Float attribute that is automatically interpreted as a Vector by the Point Translate node by simply using the value of the float attribute for all three components of the vector. That’s why the points are translated along the diagonal.)

2 Likes

Oh, wow. I need to be carefull. Thanks a lot.
Was banging my head against the wall for the whole day.

2 Likes

Is there a way yet to get the vert index of a mesh yet? I’m thinking about using Rigify/Skinify to get a starting series of verts, which, being procedurally generated, would always be in the same order and place, then referencing that to instance a mesh between 0 and 7 for the spine, 8 and 13 for the nose, etc.

2 Likes

Yeah, displaying vertex indices should really be moved out of the developer category now that procedural modeling is becoming a thing. I heard that there were talks about how to access the indices of a mesh but it was decided that an attribute interface was not a good way to go about it and it needed its own design. So nothing for now as far as I am aware of.

2 Likes

That’s awesome, delete edges and you can make a connect the dots game!

image

1 Like

Is it normal to have 2 attribute with the same name ? this supposed to happen ?

After instancing an object, the z scale isn’t randomize, i need to change the attribute randomize from float to vector so it can work

It’s not the same name,
there’s a “scale” which is a Vector type (with XYZ componement) and a “scale Z” attribute which is a Float :slight_smile:

It’s just that the UI automatically add " X"/" Y"/" Z" column for vectors

1- im creating a vector attr named scale, its affecting the scale of the points,
2- i want to control the z axes, so i separate the vector to 3 floats
3- i want to randomize one of the floats

Is this wrong ? if so i still dont understand, we normally should have the ability to control 1 float from a vector

You can do something like this if you wanted to just randomise the Z for example

1 Like