MiikaHweb Blog -> Archive

iWave foam generation

Feb-17-2011    11 Comments

Wake and foam testingLately I have been tweaking and testing iWave simulator to achieve more realistic results. Sadly it seems like the more tests I do, more strange behavior I encounter. :)

But realistic or not. Results are at least very interesting, allowing yet another new way for Blender objects to interact. So of course I will finish this project and improve it as much as possible. One new thing is foam generation. When enabled, it automatically generates foam on wave highpoints and is very good for boat wake/trail foam.

Notice a "bug" how those small waves are moving in the wrong direction in the beginning. Let's consider it as engine turbulence. ;)

Basic water movement (ambient waves) are generated using Blender's new Ocean Simulator modifier, boat wakes using iWave.

Because adding new 2D-simulators to Dynamic Paint is quite easy it's likely that I will implement an alternative more accurate wave simulator sometime in the future.

Edit: An alternative wave algorithm (not iwave :x) has been added to Dynamic Paint instead.

Posted by MiikaH at 15:29

Category:Blender, Development
Tags: Blender, Dynamic Paint, Waves

(Comments, questions or discussion about this post.)

Feb-17-2011 17:24
Pure awesomeness...no really. As you said the results should be tweaked and improved in future versions but just the concept is already awesome & very promising. Thanks for your research (+coding) and brilliant ideas.
Feb-17-2011 18:46
Fantastic work, Do you have a new blender build? I want to try this with the particle texture update: http://jahkaparticles.blogspot.com/2011/02/particle-textures-reincarnated.html
Todd McIntosh
Feb-17-2011 18:48
Hi MiikaH, just wanted to say thanks for putting your efforts into this part of the ocean tools! The iWave feature was on our bucket-list for the OceanSim project, but unfortunately we weren't able to get to it. Obviously you've read the iWave paper by Tessendorf.

Looking forward to seeing the results after you've tweaked it more. For me the most important elements are the bow wake from the front of the ship, the side wave displacement and then the Kelvin wake from the back of the ship. The foam effect is coming along nicely as well, keep up the good work!

Sam Vila
Feb-17-2011 20:31
I think the main problem is how the old waves are fade off , should be faster, then you could re-create a more realistic simulation, but maybe the problem is with the iwave code it self wich cause a strange behaviour.
Lukas Tönne
Feb-17-2011 22:18
Really cool :)
ZanQdo and me noticed the same effect with the "reverse" waves when we made a proof-of-concept implementation in Python btw. We didn't put a lot of time in fixing this and i don't really know what causes it, but maybe it's related to the convolution kernel size? Could be some kind of weird aliasing at certain kernel size/wavelength ratios (pure speculation).
Another problem you may notice is that obstacles have to be larger than the kernel size, otherwise you will get "tunneling" effects, but that's part of the deal.
How do you handle boundary conditions? When we did this on a small scale grid (due to limited performance in py), i wasn't really able to avoid reflection of waves on the grid boundaries. With larger grids this may not be so much of a problem when waves fade out enough.
Anyway, awesome work so far, keep it up :D
Feb-17-2011 22:44
Looking cool! isn't the problem some kind of scale misuse? would make a bit of sense.. weird

talk to ya later!
Big Fan
Feb-19-2011 08:25
Pretty cool effect however boats dont make waves like that to my knowledge...
Feb-19-2011 12:09
Hello Miika, this is a wonderful development.

In case of the reverse waves, i think its not a problem with the code, more scale issue. A real boat with its own speed and weight/boundaries makes different tunnels in the water. Maybe the waves are doing it right with "this" settings and are falling back into this tunnel that cause this effect. It would be cool if you can make a much longer preview with more turns and random speeds to learn more about the behavior of the waves according to the world size.

In some real boat videos, it looks like there are two different waves. First wave comes from the boat itself and makes the "outer" waves. In your video you can see them after the turn. Then, there´s the second one, caused from the boat propellers. They are much smaller, more random and noisy.

little boat:




Feb-24-2011 19:21
Hi Miika,

your developments are great.. what an evolution since the first version !

The "reverse waves" can also come from an optical illusion, like when the wheels of a car seem to roll in reverse when filmed.

Cheers !
May-20-2011 13:27
I guess iWave algorithm is incorrect. I've checked finite differences and they are not correct. Why it is working is a good question. Tricks with the "strange operator" (square root from minus laplacian) may be uselless too. I emailed J. Tesendorf, but get no answer. May be i have wrong email.
May-20-2011 13:29
my realization in Houdini.
Sorry, i've made a mistake in surname Tessendorf, double "s".

Write a comment:
Name: *
Verification Code: *verification image (?)
Message: *

By: Miika HämäläinenLast update: Nov-07-2014 14:18 MiikaHweb | 2003-2020