Jump to content

Differential curve growth


Recommended Posts

Hey guys this thread is awesome! I have been collecting research on topics like this every now and then for a while but never had the full set of skills to implement. Your scene files are a great help.


If anyone is feeling suitably adventurous you should check out this journal article on modelling coral growth under the influence of hydrodynamics:




Thanks to PLOS the full-text article and PDF are free to read and download.


This forum is the greatest!

Link to comment
Share on other sites

Good stuff Ian, thanks for the .hip file as well!


Here's a cleaned-up .hip of the veiny coral growth setup, pretty simple. Probably some bits in there that could be more elegant, I'm open to suggestions!!







Thanks for the file as well. It's great!  The first popnet in your file (the main object underneat) is about where I had gotten (but using a sop solver instead of pops). The only thing I was basing mine off of differently was the curvature and adding in some age attributes to 'freeze' it over time as well. (again, more like the floraform video).

Link to comment
Share on other sites

Just saw this thread - very cool stuff here!

The laplacian growth mentioned earlier is actually pretty simple. Find the laplacian of a sdf (which emphasises high curvature 'pointy bits'), and advect along the volume gradient direction where the laplacian is higher. You can even get away with just adding a constant value to the sdf to push it out rather than doing a proper fancy advection. The trick is in fiddling around with processing fields to keep them smooth, and also adding in some fun custom stuff - eg. also multiply that displacement also by the dot product of the gradient and another vector field.

  • Like 3
Link to comment
Share on other sites

Hey there, 

I was asked to add my solution to this awesome thread so here it is. 

It's rather simple, check the hip file if you like. Theres a vector "self" (pointing away from the spline itself) added to all points, and a vector "surf" pointing towards points densely scattered on the collision geo but only added to points that got pushed outside of the volume. Finally another vector "straight" is added pointing to the center between the previous and the next point, effectively damping the bending. 

Finally I should note that the very last step of the solver is a wrangle that has an animated lerp between the previous' and current frame's shape to safely control the speed of the whole thing in one parameter. Without that it would fill the whole thing in a max of 40 frames and then slow down harshly, but it was too late to tweak the forces and I wanted to render it :)




  • Like 9
Link to comment
Share on other sites

Yeah, I read Jan's post earlier and I thought that setting it up in POPs would do that as easily - and I was correct, thanks Guu for testing it so I didn't have too. :D

And it's really nice being able to set this effect up in POPs, so fast, so simple. 

Edited by Farmfield
Link to comment
Share on other sites

  • 4 weeks later...

This thread has prompted me to actually do this as a project in my graduate Houdini class.  Here is the result I have so far, but I am actually going to use it for my final to make a music video.  I am getting an interesting behavior though, which it would be great if someone could take a look at and help me track down the cause.  I have been looking at the code for most of the night and for whatever reason, I am just not seeing what is doing it.  I am doing the solver method and am working on building an HDA out of it to leave with my professor so future students may be able to use it.  The behavior I can't seem to figure out is the contraction.  This is the exact file that I rendered from, and I am only moving the points in one line of code in the solver, so it shouldn't be moving that when my force scale approaches 0, but it is and I am confounded as to where it is getting the instruction from.  Honestly, I like the look and the behavior, I just want to know where it is coming from so I can control it.  Also, has anyone figured out how to control the spacing?



  • Like 8
Link to comment
Share on other sites

  • 3 weeks later...
  • Marc changed the title to Differential curve growth

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...