Geometry Nodes


100% procedural floor plan + number of floors

next up is randomly rounding corners (any word on a bevel node?)

3 Likes

Ultra cool. Maybe you could have some blocks that are larger than 1 square. Like 2 squares. To have some variation to the ground level.

:fire:

1 Like

Done!

I can also randomly replace a island with a circle and scale itā€™s radius to fix the size of the face that itā€™s ā€˜poppedā€™ from (to add round buildings)

the ā€˜roofā€™ mesh section is pretty easy to isolate to do something fancier for that too

added bevel

did some work on the road network

4 Likes

Ultra Nice!

Figured out roofs - next I can repeat 1 more time to fill in the ā€˜square holesā€™ I bet

5 Likes

Oh yeah, pretty nice. Iā€™m interested to know how you would fill it.
Waht I tried for my roof is converting as a curve the top edges of the extrude. But the face is not complete nor positioned as the same hight (basically it seems that doing that donā€™t take into account the position offset.

What I did before was extrude on more time and merge by distance to get on center point and level it with the top edge of the extruded roof to have a flat one.
Note so clean.

I noticed that the grid node size and vertices input are unique for the whole node system (you canā€™t have different size based on attributes for instance)
Is there a workaround this ? Iā€™d like to instantiate multiple grids with different size and subdivisions base on attributes.

What exactly do you mean? That the grid do not have field inputs? That would count for every geometry primitive node, because geometry fields do not exists.

What would be the strategy then to instanciate a grid that has different subdivision depending on the face it is intantiated on.
Basically I want to distribute points on a grid every X units on every faces of my mesh.

Unfortunately, as mentioned, you canā€™t rely on geometry primitives for what youā€™re describing.
Curves, point-instances, realize and copy object node (Blender 3.2beta+)ā€¦ thatā€™s pretty much what you have to work withā€¦ the resample curve has a field input and points are agnostic about dimension so you can generate as many of those as you want.
So, some hopping around between mesh, curve and point context you can do what you describe.

2 Likes

Ok thank you ! I just started looking into geonodes last week so Iā€™m pretty green. Iā€™ll check this out.

Iā€™d have another question but : is it possible to filter a collection based on certain parameters ? Iā€™d like to dinamically instantiate only the collection items that have a certain bounding box aspect ratio, I could do it statically by making multiple collection, and multiple instantiate on points, but In the end Iā€™d like to have an arbitrary numbers of collections and aspect ratio.

2 Likes

Hi!

I am trying to create rain droplets splashing off a surface.

So Iā€™ve instanced a curve around a circle to create the trajectories of the droplets.

Then Iā€™ve instanced those trajectories onto points scattered over a surface

then to animate the droplets I am trimming the end of the curve and instancing a point onto the end point of the same curve.
This way animating the end trimming of the curve, the point will travel along the curve.

Then I use the scene time input with some math to loop a number within 0 and 1 that will drive the animation and the scale of the droplets.
Things work quite well, but I would like to add some randomization to the animation, so that the droplets donā€™t splash all at the same time. My problem is that the randomization happens on each single curve, and I would like it to happen only on each ā€œclumpā€ of curves. See the last screenshot

I hope I managed to explain my problem clearly :slight_smile: I think itā€™s an ID problem, basically I have to ā€œgroupā€ the IDs per clump, but now each curve seems to be having a separate IDā€¦ How can I fix this?

Thatā€™s tricky with current capabilitiesā€¦ e.g. the ā€œbounding boxā€ produces a non-field output, so you would need realize the collection to use an accumulator per-island to figure out aspect ratios and then you would need to transfer the results from that to ā€œmaskā€ indices that match on the Instance on Points nodeā€¦
Yeah, I would advise just keeping them as separate collections for nowā€¦ :wink:

3 Likes

I think itā€™s not straightforward, and that would be awesome to be able to do that in a simpler way.
You can look at this and see if that would fit your needs :

5 Likes

Thank both you and @zeroskilz Iā€™ll investigate this afternoon

My goal would be to be able to have a basemesh on which i could instantiate modules/a grid of modules based on the aspect ratio of the face. The face would split automatically in subfaces if itā€™s too big for the modules, etc etc

1 Like

You have to capture the point indices that you spawn the curves from and feed that into the random valueā€™s ID - that will remain consistent per clump.

Good luck

2 Likes

like so?

Doing so the randomness is completely gone, is as if I didnā€™t plug the random value in the math ADD node. I am attaching the blend file in case anyone would like to check it out :slight_smile: Itā€™s supposed to be generating rain droplets on a surface, feel free to use it as you want in case we manage to solve this issue :slight_smile:

Surface_Rain_GN_001.blend (1.1 MB)

I tried to connect to the capture attribute geo input pretty much every node :smiley: but the result is the sameā€¦ the randmness is completely gone :frowning:

I also tried using the index instead of the ID, nothing changes

It has to in-between the Instance on Points and the Realize Instances nodes.

Capture Attributes node only works when it follows the geometry ā€œflowā€.

1 Like

still no luck, unfortunately I only get either per spline randomness or no randomness at all