Jump to content

Differential curve growth


Recommended Posts

^ my thinking exactly, though using a POP network for the forces and a SOP solver in pops for creating the line, resampling, and piping the points back out into POPs.


Doing it manually in a solver with PC lookup makes it even more controllable, sounds like an awesome setup and will absolutely dissect this one! Much appreciated!


Oh, and please don't casually use terms like slerp like that, someone's gonna get an aneurism. :D

  • Like 1
Link to comment
Share on other sites

Hurray! That POP version is ace. I played with it for awhile, its alot more stable than my solver version, and there's so much flexibility with all the POP forces. I also failed to make it stick to a surface though. I feel there should be a pop node that just does this. I cant get POP attract to work well.


In my solver version, I was doing the resample wrong, and I switched to what you have in yours, re-sampling based on size of the line. I got a bunch of stability back from just that change.


Here it is again, with the resample fix and a bit of smoothing on the line. And some quick renders.








  • Like 8
Link to comment
Share on other sites

Awesome stuff guys, in order to constrain it to a surface, I used inverted surface normals as velocity field (advect by volume pop) and the same geometry as static collision object, it's not perfect as steep or sharp parts on the geometry (ears) makes the particles go wild. Still a lot of fun to play with :)


Edited by Yader
  • Like 3
Link to comment
Share on other sites

What I like best with this setup is I didn't even have to set it up myself, I just vaguely outlined the idea and some genius took it from there! :D


Edit: Wow, after looking through the scene file, I must admit I thought the POP approach would work but not that it would work this good. That's absolutely awesome!


About surface control, nothing gives control than converting your mesh to a volume, doing a volume lookup in VOP's, then just use the sample value in a displace along normal (or set it up manually) to shift the point position using the gradient as the normal value. The cool thing using this technique is you can pipe additional values into the displacement, like having lower number particles displace into the mesh while keeping higher numbers at the surface, you could basically fill an object with one of these setups that way like Raphael Gadot did in this setup!


Edited by Farmfield
  • Like 4
Link to comment
Share on other sites

Couldn't help myself, I dug into this a bit more tonight. Volumes were definitely the next step, and I've got them kinda working in my setup (this is my first bash at volumes). The thing I haven't cracked is that they loose the shape I love so much in the surface versions. I need to work on a way to get the surface tendrils to prefer to stick to the surface if possible. I have a few ideas, but nothing that I managed to hook up tonight.


Right now the volume versions are quite cool, but look too random to me. The volume version has another force called contain_force. It needs to be high-ish to do anything useful.




I also added a second set of points in the surface version that act as another repelling force. It looks really cool. The line tends to wrap around them creating a circular entrance point. This is the exclusion force. Should be easy to hook up for the volumes, but I haven't done it yet.




Anyway, i'll render an animated version soon. If the settings are all sensible, the wires tend to be pretty stable now.




  • Like 3
Link to comment
Share on other sites

A nice evolution of the concept.
There is a little bit of additional setup to prepare a shape other than the torus. Initially when I used the font the line did not "cling" to the shape. But after centering it on the world origin and adding more faces with the Divide node, in bricker mode, the line eventually took hold.



Because the resulting line is open we can measure the length and use that to drive the polywire radius, here the line is thinner at the start compared to the end.




And, of course, random sized Wire Radius.



Edited by Atom
  • Like 5
  • Thanks 1
Link to comment
Share on other sites

Nice results!


I made a few gifs of my system so far. You guys are all into doing this in POPs, so I might try to convert my forces over. Shouldn't be too hard. My solver version and the POP version have pretty different movement to them. Its so interesting to play with this!


surface growth




volume growth - you can see the trouble I'm having with the endpoints of the line in this one



Edited by rich_lord
  • Like 1
Link to comment
Share on other sites

I like solver approach since it SOP. It seems further points getting more repelling force.

zerotoone = fit01(distbetween, 0, maxdist)

Expression looks a bit strange for me. Equivalents are:

fit(distbetween, 0, 1, 0, maxdist)
clamp(distbetween, 0, 1) * maxdist

Is it intentional?

Edited by f1480187
  • Like 1
Link to comment
Share on other sites

Controlling the repelling force distances for the POP setup is dependent on three things, the force, the drag settings and - interestingly enough - the SOP solver resampling length. It took me a while to get a hang over how they were acting in relation to each other, but once I realized what tweaks gave what result, the setup became very controllable.


And I'm doing something really fun with it right now and I'll post the finished result on Vimeo and link it here when it's done. :D

Link to comment
Share on other sites

Nice catch f1480187! 


You are right, I misunderstood the fit01 function. Next time i'm in this file I'll find out if correcting this makes my effect stop working!


Also - Super cool mestela! I'm also working on a surface based version of this effect, but am coming up well short so far. The geo keeps freaking out! The remesh node is so sensitive.


The original posted thread has a few nice surface implementations, and of course, there are these guys for some mega inspiration! - 

Love their work.

  • Like 7
  • Thanks 1
Link to comment
Share on other sites

  • 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...