Sign in to follow this  

Using Gerstner Wave Formula on Grid Mesh?

This topic is 1445 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I need aid. If you had a 3d Grid. (Image) And you had control over the separate vertices. (Intersections, or Points). How would you implement the Gerstner Wave method to return a Vector(x,y,z) for EACH vertex along the grid?
 
I have created a grid mesh. This grid mesh, as all meshes do consists of several vertices. I have created a java programm that allows me to edit and animate the position of each seperate vertex. using their respective (x,y,z) vector positions. So if i add a random number to the y position of each vector during each iteration of the for loop in which the waves should be animated it will result in random spikes pulsating up and down. (Not the desired effect, but it does the trick). Now what i want to do, is implement the Gerstner Wave formula to create realistic waves using the grid system i have created.
 
see attachment for Image of Grid.
 
Link to Gerstner (Info):
 
MAIN QUESTION:
Is it possible to return a Position(x,y,z) out of the Gerstner Method and apply it into my wave method?
 
public void update() {
        //Update Water
        int index = 0;
        int intDex = 0;
        vertexBuffer.rewind();
        for (int y = 0; y < sizeY; y++) {
            for (int x = 0; x < sizeX; x++) {
                //For Each Vertex do Something
                //Vertices do not maintain their position
                //They need to be set anew
                //VERTEX
                //DO NOT CHANGE THESE VALUES:
                float xPos = x;
                float yPos = 0;
                float zPos = y;
 
                //MAKE ADJUSTEMENTS BELOW:
                // This is where the values are changed
                xPos += 0;
                yPos += 0; //If made random, spikes pulsate up and down
                zPos += 0;
 
                waterVertexPos.set(xPos, yPos, zPos); //y is where z is
                //use Floats for accuracy on Waves
                vertBufArray[index++] = waterVertexPos.getX();
                vertBufArray[index++] = waterVertexPos.getY();
                vertBufArray[index++] = waterVertexPos.getZ();
 
            }
        }
        vertexBuffer.put(vertBufArray);
        getBuffer(VertexBuffer.Type.Position).updateData(vertexBuffer);
        updateBound();
 
See comments for more information on specific sections of teh code snippet. 
The main reason for me to incist to use this method, is because it is very ressource efficient.
 
If you have any more questions regarding my question, or need another segment of my code. Feel free to ask smile.png
Thank you for your time. It is very much appreciated.
 
If you can give me any alternatives to this wave creation method, it would also be appreciated :)
 
Sidney de Vries

Share this post


Link to post
Share on other sites

This topic is 1445 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this