Surfing Simulation
I'm waiting hopefully for future developments in 3D Rad to enable production of dynamic fluids!
DATE (7/1/10) : I've decided that if I do the above, I'll be here forever ! So I'm going to attempt to make do with what I have alresdy. (Hopefully, the new custom shaders will add a touch of realism)
For years I've been obsessed with making a surfing simulation........I've got a little along the way, then stopped. This has been partly due to the fact that a realistic breaking wave is one hell of a thing to produce realtime. Without a PhD in mathematics and a very fast processor, one cannot get very far! However, in recent years things have improved a little. Scouring the Net, I've picked up a number of articles on open ocean waves, but very few on the surfer's type wave.......those that break on the shoreline. However, one such article, with some promise, is the Surf's Up Course at Siggraph Although this article is aimed at producing movie animation (not realtime game animation) it does have some useful pointers for me to try.
So, the first thing I've done is to extract their set of wave profiles (Thank you, Siggraph!) as follows:
For years I've been obsessed with making a surfing simulation........I've got a little along the way, then stopped. This has been partly due to the fact that a realistic breaking wave is one hell of a thing to produce realtime. Without a PhD in mathematics and a very fast processor, one cannot get very far! However, in recent years things have improved a little. Scouring the Net, I've picked up a number of articles on open ocean waves, but very few on the surfer's type wave.......those that break on the shoreline. However, one such article, with some promise, is the Surf's Up Course at Siggraph Although this article is aimed at producing movie animation (not realtime game animation) it does have some useful pointers for me to try.
So, the first thing I've done is to extract their set of wave profiles (Thank you, Siggraph!) as follows:
I used a 3d modelling app to loft these 2D profiles into a 3D shape, and imported the result into 3DRad. So now I have one big untextured wave and little surfboardless me waiting for some action!
(4/7/10) : Using 3Impact and its mesh vertex manipulation functions, Ive been able to use my 2D profiles to get realtime wave movement on a plane grid. However, 3DRad does not allow mesh vertex manipulation, so I've had to go through a whole lot of trial-and-error to get a decent wave animation.

Using my basic set of 2D profiles, I put together a bit of software to interpolate between them and produce a set of 500 profiles from which I ended up with 250 "wavestrips", similar to the illustration opposite.
I thought that I would be able to use a 3DRad Script to iterate through all these "wavestrips" as Imposters, but it was just too much for a scripting language to handle, and every thing just ground to a halt.
Even using a DLL to remove some of the load was unsuccessful.
At the present time I'm having some success using 3DRad's FBF (frame-by_frame) animation. I now have a FBF Skinmesh containing 250 frames which animates at a decent rate. The challenge for me now, is to use this in the best manner to make a believable surfing simulation, using 3DRad.
Even using a DLL to remove some of the load was unsuccessful.
At the present time I'm having some success using 3DRad's FBF (frame-by_frame) animation. I now have a FBF Skinmesh containing 250 frames which animates at a decent rate. The challenge for me now, is to use this in the best manner to make a believable surfing simulation, using 3DRad.
13/7/10 :
By using 15 "wavestrips" arranged side-by-side, with each seperated by one animation frame, a fairly convincing breaking wave was achieved. See video here.
To get a fairly good speed in 3Drad, I had to resort to a bit of trickery. I used the 15 "wavestrips" like in a scrolling platformer game........taking a strip from one side of the screen and placing it on the other side as the surfer moved forward, all the time keeping the actual breaking wave animation going. A video of my first attempt can be found here.
By using 15 "wavestrips" arranged side-by-side, with each seperated by one animation frame, a fairly convincing breaking wave was achieved. See video here.
To get a fairly good speed in 3Drad, I had to resort to a bit of trickery. I used the 15 "wavestrips" like in a scrolling platformer game........taking a strip from one side of the screen and placing it on the other side as the surfer moved forward, all the time keeping the actual breaking wave animation going. A video of my first attempt can be found here.
12/8/11 :
Boy, one year later ! How time passes when your'e having fun!
I now have a super 3D engine by the name of Oddity, which I am using to continue with my projects. I have
scrapped all the above previous methods, now that I can alter the shape of my wave mesh in realtime. I am still using procedural methods to get the wave shape, which gives me far more flexibility in adjusting the wave by using parameters, such as wave height, direction and break point. Here is a little video of my progress to date:
LATEST (17/08/2011) : I moved the wave to my testbed to make some adjustments, and add some kind of "foam" representation. Not too bad, in my humble opinion. Here are a couple of videos taken from left and right viewpoints.
14/02/2012
The month of January I spent brushing up on shaders so that I could improve the appearance of my breaking waves. The latest update of the Oddity engine now has an Ocean object which I utilised to good effect.....I was able to superimpose and blend my waves in with the surrounding ocean water.
The month of January I spent brushing up on shaders so that I could improve the appearance of my breaking waves. The latest update of the Oddity engine now has an Ocean object which I utilised to good effect.....I was able to superimpose and blend my waves in with the surrounding ocean water.
Thank goodness that I took the time to conquer my fear of coding shaders.....they really are not too difficult.
They have certainly helped me to achieve the effects and graphic performance I was looking for. Also, the Oddity engine is extremely fast, which also helped matters.
Here is a short video of the breaking waves:
They have certainly helped me to achieve the effects and graphic performance I was looking for. Also, the Oddity engine is extremely fast, which also helped matters.
Here is a short video of the breaking waves:
19/03/2012
It's not much good to have nice breaking waves with nobody to ride them. So I volunteered for the job! But first I have to get prepared.....I had to build myself a surfboard, equip myself with some baggies (for warm water surfing) and a wetsuit (for cold water surfing), and, most important of all, an animatable skeleton to enable me to perform those tricky maneuvers. (Methinks this is going to take one hell of a lot of practising!)
Preparing to hit the surf!
14/04/2012
I've had to brush up on character animation techniques (something that I've avoided for a loooong looong time). After much discarding and repeating, I've finally come up with an animation pipeline that suits me. I've always used 3dsMax for modelling meshes, but hardly ever used the bones and biped sections. This little project has given me the opportunity to try out both. So with the help of some animation tutorials, I now have an animated character who is able to paddle a surfboard!
I've put together a little video of my initial animation tests.
I've had to brush up on character animation techniques (something that I've avoided for a loooong looong time). After much discarding and repeating, I've finally come up with an animation pipeline that suits me. I've always used 3dsMax for modelling meshes, but hardly ever used the bones and biped sections. This little project has given me the opportunity to try out both. So with the help of some animation tutorials, I now have an animated character who is able to paddle a surfboard!
I've put together a little video of my initial animation tests.
10/05/2012
This has been a rewarding exercise in frustration for me......but in the end I'm glad to say that my patience has finally paid off. I am now able to actually ride a wave with some degree of confidence. I have learned a great deal with this little project, and, who knows, this might be the beginnings of "My First Real Game" !!
Here are some pics and a video (with some background Surf Music )
This has been a rewarding exercise in frustration for me......but in the end I'm glad to say that my patience has finally paid off. I am now able to actually ride a wave with some degree of confidence. I have learned a great deal with this little project, and, who knows, this might be the beginnings of "My First Real Game" !!
Here are some pics and a video (with some background Surf Music )
LATEST : 23/03/2013
Here's a little video that I couldn't resist putting together whilst using 3DRad for some "quick and dirty" surf prototyping for my "First Real Game"
Here's a little video that I couldn't resist putting together whilst using 3DRad for some "quick and dirty" surf prototyping for my "First Real Game"
LATEST : 02/05/2014
I've had to mothball this project over the last year as I was sidetracked with other projects. However, I've decided to pick it up again over the last couple of months, as I had developed a new technique for building different wave types. I've put together a video showing these different wave types. The waves shown in the video are pretty plain visual-wise, and still have to be polished up.
I've had to mothball this project over the last year as I was sidetracked with other projects. However, I've decided to pick it up again over the last couple of months, as I had developed a new technique for building different wave types. I've put together a video showing these different wave types. The waves shown in the video are pretty plain visual-wise, and still have to be polished up.
Back to My Projects