The Power of Goo

On my endless list of “things I always wanted to try” there’s no shortage of the weird and wonderful and in an odd way I’ve always been fascinated with those gooey strands you see in science fiction or horror movies. Those random glibber strands have a certain weird beauty when they form their patterns, sometimes looking beautiful like liquids in slo-mo, other times a bit icky like muscles and ligaments without skin cover. Anyway, the problem with this kind of stuff is that there never seems to be a good way to simulate it due to the specifics – they are somewhere inbetween a liquid and a softbody simulation. They need to be deformable, but also retain the volume while at the same time reasonably responding to the surface they are stuck to and also external forces. Possibly they would even need to change their shape and break or split into multiple strands. This opens up a whole can of worms.

I quickly ruled out particles. They would be ideal to get correct forces, but once you enter the world of fluid simulation to also get the volume retention, things would become inevitably slow. In addition there would have been a lot potential flicker issues once you created the surface with metaballs due to uneven particle density and in fact setting up the emitters alone to spit out particles from the correct parts of objects could turn into an exercise. I also wanted to control surface detail by adding textures, which also would be problematic on an inconsistent implicit surface, so what ended I up with? Yepp, good old geometry using Cinema 4D‘s NURBS objects with splines, lots of MoGraph and equally large doses of XPresso. While this may sound simple and obvious, it is far from it. There’s a lot of detours and thinking around the corner going on.

While this is just a quick test, there are a few key benefits already:

I could easily rig hundreds of these strands already.

I can attach them to exactly the surface area I want them to.

I can control the stretching and thinning as well as the surface curvature.

Using additional texturing I could add secondary effects.

It’s not just good for goo and chewing gum but could also simulate ropes, rubber bands, muscles, tendons etc..

There are of course a few things to work out still also, those being:

Slight rotation issues require a more stable vector calculation.

The stretching needs to be clamped to the actual values used so it doesn’t whack out.

There’s some odd self-intersection problems.

I need to tie it in with forces like Wind and Gravity, possibly also proper Hair/ Spline dynamics.

I need to clean it up and automate it even further.

If I get around to all of that you might perhaps see it ready for download here one of those days. In the process of putting this together I also discovered some interesting techniques that could be used for some other ideas I have. That will, however, have to wait until after I’m back from my rehab.

This also extends to playing around with the latest version of X-Particles. I watched the preview videos the other day and it’s just amazing how many useful new features they cram in in such short time. This is really coming into its own and at that rate will quickly make Thinking Particles obsolete…