Cartoon style sea motion.

Hi folks.

I’m trying to animate a very simple cartoon sea. I have 2 planes subdivided many times with the verts slightly randomized. The effect I’m trying to get is the two planes rising and falling into each other, like two offset sin waves.

I’ve tried creating a circular path, but when parented the plane rotates around the path rather than oscillating. Then I thought I’d put a noise modifier on each plane, so in the Dope Sheet I setup the noise on each plane on the Z location only, this is the exact effect I want, however it’s a pseudo random and it doesn’t have a seed value, so both planes move up and down on the exact same curve. I’ve found the perfect scale and strength settings so I don’t really want to differ these between the planes.

Does anyone have any ideas how I might achieve this?

And one for the wish list, could the noise modifier please have a seed value?


PS. What I’d really like is all the verts running on independent noise curves, but I can’t find a way to do this without a crazy amount of work.

I would use two sound files - bake the sound files to the Z value of two empties - then use these two empties to drive the Z value of your two planes, by using Drivers, you can vary the amount of plane Z movement to the amount of sound-baked movement. You can then vary the sound files used, like the same one, but out of sequence or two different files to get your effect. I am away for two days, but if you would like to pursue this option and cannot work out what I am saying, I can do a little mockup next week. Baked sound files are very good at giving sudo random effects, particularly if your choose the sound file wisely.

Cheers, Clock.


Just noticed your PS - why not use more than two empties, or even bones and use these to drive vertex groups in the sea meshes?

I very much like the idea of baking a sound for a random movement, you’re right, I wouldn’t have a clue where to begin, if you could put something together that would be brilliant. In the mean time I will google this.

I’m not sure what you mean about using empties to ‘seemingly’ move individual verts. The bone idea is an interesting one and I think that would work well with smooth mesh’s. In this case I want the angularity of a relatively simple mesh to show.

For now, just for storyboard and test run purposes I decided to use multiple rough planes, all rotated to differing angles and cycled a keyed waveform. Of course it’s not random at all, but with all planes on different cycles lengths it gives quite a pleasing effect. When the first rough build is complete I’ll post a clip.

OK here is a simple example:

baked-sound.blend (565 KB) Just press Play to see it working (make sure you check “Autorun Python Scripts” in User Prefs first.)

The empty moves according to the sound wave I have baked to its Z movement. I just keyframed the Z location at frame 1, then went to the Graph editor => F-curves mode, then clicked “Channel” => “Bake Sound to F curve”, chose the bass line from “Whiter Shade of Pale” and got this animation for the Empty. I then added a single driver to the Block mesh with the empty’s Z location in Transform space as the variable. The scripted expression is 1 + (var * 4), so the block starts at Z = 1 and then moves in Z, 4 times the amount the empty moves. You must check “Autorun Python Scripts” in User Preferences for this driver to work.

What I would then do is to modify a copy of the sound wave, like cut the first few second off so its not in phase with the first version, then bake this to a second empty, repeat this for each sea mesh you have and then use these animated empties to move your various sea meshes. :spin:

You can also modify the driver so it does the opposite to the mesh by putting a minus sign somewhere, like 1 - (var * 4) and it will go 180 degrees out of phase to the empty.

Have a play and see what you get!

Cheers, Clock. :eyebrowlift:

… then I had another idea!

I made a new sound file using Reason sequencer (just Internet search that) to make a sound file of a bass guitar. I then used Audacity to slow the timings down so the movements where spread over a longer period. Then I baked this sound file to the empty, and repeated the operation for various different speed settings. You will need a music sequencer package, such as Reason or LMMS for Linux or Cakewalk/Fruity Loops for Wind’ohs and a sound processing package such as Audacity to modify the sound files. You can always use any sound file and then play with the frequencies and thresholds when you bake the sound file to get different effects. If you can make your own sound files, you get the chance to really play with the motions. I even tried using my own bass guitar to produce the sound file by recording the sound directly onto my Mac - this also works well, particularly if you then slow it down to get more gentle movements. You have to use these techniques to modify the sound file as you cannot edit the F-curve, like scaling it in X to slow it down, after you have baked the sound to it.

Enjoy playing with this method - I certainly did!

Cheers, Clock.