Ripple Node

john's Avatar

john

07 May, 2025 03:57 AM

This is a cool one.

Ripple randomly undulates the boundary of a path or shape using 4-dimensional noise. It's great for creating amoebae with oozing pseudopods or a jellyfish with gently wafting tentacles or refracted reflections on a pond. And because it uses our new noise_loop node, these undulations are cyclical - so you can use them to create seamless loops of animation.

This also means that it does require the SIMPLEX_NOISE_4D.PY external code module (included in the demo).

The ripple node takes seven parameters:

  • Shape. An open path or closed shape.
  • T. The time value from 0 to 100. The random undulations will return to their starting point when T=100.
  • Sample length. The resampling distance along the path that determines where the undulations will take place. A shorter length will yield more undulations; a longer length will yield fewer undulations.
  • Scale. The noise scale. A small value will yield fine-grained undulations that move more sharply over time; a larger value will yield vague undulations that move more gently over time.
  • Multiplier. The amount by which the undulations poke in or out. A small value will yield subtle undulations; a larger value will yield more dramatic undulations.
  • Speed. The relative speed of animation over the course of each cycle. A small value will ooze; a larger value will ripple.
  • Seed A random seed. If you don't like your amoeba, just change the seed to try another.

It's a little hard to really understand the effect these settings have without trying them out. Fortunately I have attached a demo which will help you do this (see screenshot).

The demo shows two creatures, a jellyfish and an amoeba. The jellyfish is composed of open paths (quad curves) and the amoeba is based on an ordinary circle. I recently used a version of this jellyfish for one of my art pieces on Instagram:

https://www.instagram.com/p/DJOudpgRmyI/

Both of these creatures are designed to loop every 10 seconds (every 250 frames). To do this I simply feed a frame node into a convert_range node to convert 1 to 250 frames into .4 to 100 T and feed that into both ripple nodes.

You can use File/Export Movie to export a movie and see these two creatures in action if you like. The jellyfish moves at speed 80 (which looks fairly natural to my eyes) while the amoeba oozes four times slower at speed 20. Adjust these values to speed or slow this motion without needing to change the overall pace of the movie itself.

Even as a still rendering you can see how the other parameters affect the shapes by randomly dialing the values up and down. This may be easier to see on the amoeba. I have placed a half-sized version of the circle inside the amoeba and added my draw_points node so that you can see exactly where the inflection points are.

I fed a number node (SAMP_LENGTH) into both the sample length of the amoeba's ripple node and (proportionally) to the resample length of the circle. This allows you see a rough correlation between the inflection points on the circle and the corresponding inflection points on the amoeba. Adjust SAMP_LENGTH up and down to see what happens.

Now zoom into the amoeba and change the scale value on ripple2 from 50 to, say, 10 and then hit play or drag the frame counter in the lower left to advance the animation. Now try a larger scale, say 300, and repeat the experiment. The effect of the scale parameter is somewhat hard to describe and will depend on the shape and the other settings. But in general low scale noise is more varied and high scale noise is more gentle. In practice you will simply have to try adjusting this value with your creature to get the effect you want.

The multiplier is easier to understand. If you set this to zero on ripple2 there will be no changes to the inflection points and your amoeba will look like the circle that defines it. Now hit play and gradually increase the multiplier. As the multiplier increases, the amoeba's pseudopods get bigger and the overall motion becomes more dramatic.

The seed parameter is very simple. Just step through various seed values to see one very different amoeba after another.

The ripple node is great for creating a refraction effect of a reflection rippling in water. I used this for another recent art piece on Instagram:

https://www.instagram.com/p/DJAEDhozTap/

You can also feed ordinary textpaths into ripple to produce wavy characters. To see this, add a textpath node (with default string "hello") and feed it into another copy of the ripple node. For best results increase the font size to, say, 200 and then adjust the parameters on the ripple node to your taste. For characters with multiple contours (e.g. lower case a) you may want to add my contours node before feeding the textpath into your ripple node to get a cleaner look.

By combining ripple with different fonts you can create some wild titles or labels that look great on a poster. Then, if you want, you can animate those titles and make them ripple!

Thanks again to Floris (and Claude) for helping create the noise_loop node that makes ripple possible. Have fun with this one and please consider sharing what you make with it!

Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:

»

Already uploaded files

  • ripple_screenshot.png 1.14 MB
  • ripple_node.zip 172 KB

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac

Recent Discussions

17 May, 2025 10:24 PM
17 May, 2025 12:17 AM
14 May, 2025 08:41 AM
09 May, 2025 01:15 PM
07 May, 2025 03:57 AM

 

06 May, 2025 06:46 AM
06 May, 2025 02:15 AM
21 Apr, 2025 10:47 AM
21 Apr, 2025 10:41 AM
21 Apr, 2025 05:56 AM
19 Apr, 2025 07:17 PM