Jump to content

  • Log In with Google      Sign In   
  • Create Account


Using Gerstner Wave Formula on Grid Mesh?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
No replies to this topic

#1 TastyLemons   Members   -  Reputation: 104

Like
0Likes
Like

Posted 01 February 2014 - 01:34 AM

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

Attached Thumbnails

  • 2014-02-01 16_42_54-jMonkey Engine 3.0.png


Sponsor:



Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS