Can we recreate Houdini's "Relax Points" node in Geometry Nodes?

Hey all,

I am trying to recreate this Houdini tutorial using Geometry Nodes - https://www.youtube.com/watch?v=SOk5qVXrFQA

I’ve figured out everything except for one algorithm - the idea of moving points closer together when they are far enough away, and further apart when they are too close. This is what Houdini’s “Point Relax” node achieves. I know there is a way to do this in Geo Nodes, I just can’t figure it out? Can anyone come up with a solution? TY!

There is a “face set relax” node being developed, maybe “point relax” comes after I don’t know https://developer.blender.org/D16133

Looks pretty cool! I’m almost sure this is already possible in Geo Nodes, but this is a nice algorithm! Wish it could help me make my sweet Houdini-like geo. :frowning:

1 Like

As for a “hack” way to do that, geonodes currently cannot do custom loops (like “iterate through all vertices and apply smoothing only to neighbors in the radius”). But the good thing about geonodes is that they are a modifier. So I guess you can make a geonode tree that does only single iteration of “subdivide and randomize” step, then put a vanilla Smooth modifier after it in the stack, then add same geonodes again, and repeat the process as many times as needed.

On the second thought, I am not sure how to do “prevent self intersection” part(

Hey DeckardX08,

Thanks for the response! Yes, I’m aware that Geonodes can’t do loops yet, so any solution will probably end up being a little unwieldly. However, I don’t believe that “smooth” and “relax” are the same algorithm. It is already possible to build a “smooth” node in GN - just take 2 point positions. add them together, and divide by 2, resulting vector to offset. The relax algorithm is a little trickier tho. Confident that we can figure this out! :muscle:

1 Like

edge vertices node has 2 vertex positions, averaging these 2 can lead somewhere, also edge angle node can help.

1 Like

I did kind of a hacky experiment, almost differential growth :slight_smile:

3 Likes

Yes, wrote without watching video fully. My bad

Couldn’t achieve entagma pscale stuff but i managed to create cartoon cloud generator :joy:

Very interesting possibilities for growing stuff though




2 Likes

blend file

https://drive.google.com/file/d/1tPbr8vrMp6qpbEV2l3nHKdunz6z6AOr-/view?usp=sharing

2 Likes

Hey Canerasln,

Just had a chance to check out the renders and .blend, WOW! You are a GN boss man, nice work! The meshes in particular really have that diff. growth vibe, looking like Houdini! Thanks for sharing, lots of cool stuff to learn from in here. :slight_smile:

Hey Thanks, no boss here, I don’t like them, they don’t like me :crazy_face:

I don’t have a great knowlege of math, the method is “mostly try again fail better”, so set up might be messy. There are a lot of GN wizards around here I wish they could give us a hand here.

Reflect math node and proximity node used might be totally unnecessary here, I was basicly trying to solve 2 d entagma thing.

But anyway a lot of possibilities for surprising growth patterns. A bit fiddly to find right note in parameters.

Adaptive subdivision would be great like dyntopo in sculpt node, so growing part gets subdivided. Don’t know how that can be done.

3 Likes

previous file was messy, this one is better with less nodes, better control.
volume-diff.blend (4.6 MB)


1 Like

Sry to crowd here, I can’t stop myself, vector rotate works nice here, adding tiny values, at each iteration it adds up

and random rotation creates interesting forms

4 Likes

@canerasln WOAH, some rad stuff here man, thanks so much for sharing! Can’t wait to dig in and see how you accomplished this sorcery!

Re: adaptive subdivision-like behavior, I’ve been able to acheive something like this with the edge length node.

  1. Separate geometry node, selection by edge length (using edge vertices → distance → compare)
  2. Feed selected edges into subdivide node, feed both selected and inverted into a join geometry node.
  3. Merge by distance.

I’m sure the same thing would work for faces using “face area”, can’t wait to see the rad stuff stuff you come up with!

Talk soon,

Michael

1 Like

Please do experiment and modify, curious where else this can go.

Will look into your method for adaptice sub, usually it creates holes in the mesh, I have never managed to fix it.

Even if this doesn’t answer the original question, I think it at least makes sense to link to an actual Differential Growth add-on for Blender: https://boris.okunskiy.name/posts/blender-differential-growth

people are smart, someone figured it out.

2 Likes

Hey! Yes, I saw this on Twitter, so rad! Stoked that we have a way of working with loops in GN, the future is now! :smiley:

1 Like