Making Ocean Waves with Breaking Effect

Hi,



I'm curious to know if it is possible to create an Ocean wave effect? I have a few ideas and could use some advice. I'm trying of course to make it look as real as possible. Taking a look at some of the threads here it seems that using the ClothPatch to create the water would be a good start. Any advice on creating such an effect would be helpful a list of Articles and/or Tutorials would also help!

I have one word for you "MrCoder"…now, I guess that's two words, but it's a nickname, so it counts as one.  Unless in a nickname there is some sort of "first name/last name" ideology, but I don't believe that's the case.  Even if it is the case I doubt that it was MrCoder's intent…however, just in case I'm wrong perhaps saying, "I have one nickname for you…" would be better.  What do you think?



Well, alas, welcome to the forum. :wink:



darkfrog

What darkfrog is trying to say is: "I recommend taking a look at Mr Coder's work". You're welcome, darkfrog.



And I'll add to his comment by saying that Mr Coder has not donated any code for the water back, however, he has listed all the links to the papers he used to create the water effect.



http://www.jmonkeyengine.com/jmeforum/index.php?topic=2857.0

Thanks mojo, you know I often need a translator to talk to people that are used to normal conversations. :stuck_out_tongue:



darkfrog

…i'm working my ass off to make it jme-compatible and writing a turorial, so be patient…



the cloth way could work though, give it a testshot :wink:

…and a tutorial…looks like Christmas is coming early this year. :slight_smile:



darkfrog

You been taking some pretty good hits over this Mr. Coder.  Glad to hear that you are able to bring it into jME.

that's awesome!!! thank you very much!

i read through the paper yesterday and it didn't help me at all… :frowning: math, my old enemy…

Hi and thanks for the replies,



I've started to create a test for it, though I'm not looking too much into the texturing side of things but more of a way to simulate wave movement.


MrCoder said:

...i'm working my ass off to make it jme-compatible and writing a turorial, so be patient...

the cloth way could work though, give it a testshot ;)


MrCoder:
If I can get it working then when your tutorial comes out I will be able to add that beautiful water effect that you have created.

A surfing game would be awesome!



Tommys, I'm a little concerned you might need some help though.  You seem a bit obsessed with water…do you live in the desert or something?



You realize this is not actual water, but virtual water, right?  If you're thirsty, it will not quench you (at least physically, but perhaps metaphysically), if you smell bad, it will not help to cleanse you.  Apart from my cautionary words for those that would think more of the water than they should, I'm extremely excited too. :wink:



darkfrog

feels the pressure

I also tried reading some of that paper…  And I guess I don't have the patience to deal with it.



Excuse my poor word useage:

It seems like it (the way its done in the paper) renders perlin noise in a certain way that ends up being a texture of how you would see the water, and then uses that as a hightmap to make the high and low points in the water.



Since it seems more hightmap based I'm not sure it will work with the cloth pieces.



The first time I made water in JME I did the cloth way and the movement it gave was nice for my purposes.



But I think the bigger thing with water is dealing with its light affecting properties.  How it reflects and bends light.  That is what makes a nice water scene.





But breaking waves… dunno have you thought about if you might want to use some particles?

Yes! I need help!  :smiley:

My surfing simulator will be like this: Two monitors is needed, one on the floor behind you, and one on the desk. The player starts lying flat on the floor with two mouses (!!?), one in each hand. Then, he/she will have to look back over the shoulder for random waves coming from behind. The tricky part is to paddle enough speed with the mouses, and at the right speed jump up and hit the space key on the keyboard… From now on, the player must turn right or left with the toes on the mousebuttons! If the wave hit you, it is recomended to take a trip in the nearby washing mashine, wool program for small waves, 1600 rpm sentrifuge for big waves  }:-@

Hmm. Anyway… Just wanted to motivate mrCoder for his work, and point to the endless posibilities with water  :smiley:

p.s: Water is essential for life.

as far as i understood, which isn't much anyway, breaking waves would require a different approach. you might be able to do it with a projected grid, but you must use something different to represent the water than a heightfield, since it only stores one heightvalue per point, making overlapping waves impossible.

one problem in making nice moving water is that a regular grid covering the world has way to little resolution. that's the main thing that the thesis handles, and that's why it's called "projected grid". the result of the algorithms is that you end up with a grid that is completely contained in the viewport, plus the grid has higher resolution close to the camera…it maximizes the usage of the grid

the way the heights in the grid are offset is compleletly up to the user, in my implementation i used sine waves + perlin noise…it all depends balancing performance against looks.

Yes mr. coder, I sure hope we'll get your code for projected grid water in jME one day (if Jadestone will let you). Still, like Pavel states… no amount of resolution will get you breaking waves.

very true…can imagine you could offset the vertices in x/z in the vertex shader based on height and some parameters though…