How to let a ship Obj float

Hi guys,

I finally got my ship with the right texture. Now i want to fake the movement of going up and down with the waves in the simpleUpdate.

      int max = -300;
      if (start){
         for( i = 0 ; i > max ; i--){
            r.setLocalTranslation(new Vector3f(-1300, i, -500));   

And do something to get it down again.

Is this a nice way to simulate the ship going up and down with the waves?

Has anyone got suggestions?

Thanks in advance.


also I created my own HeightGenerator(), so I can get the actual height of the wave.

projectedGrid = new ProjectedGrid( "ProjectedGrid", cam, 50, 50, 0.01f, new HeightGenerator() {
         public float getHeight( float x, float z, float time ) {
      return hoehe;
      } );

and then rotate the shipmodel with the height value in the update method:

modelship.getLocalRotation().fromAngles(-1.55f, 1.6f, hoehe/20f);


modelship.getLocalRotation().fromAngles(-1.55f+(hoehe/16), 0.0f, 0.0f);

hope this will help.

but my ship model is a spatial…

Is that a problem?

I did it your way.

But now i can't see my ship model any more when i do this.

r1.getLocalRotation().fromAngles(-1.55f, 1.6f, hoehe/20f);

How come?

i got my ship to float!! Awesome!

Can I aswel let the camera rotate with the waves as if i was on that ship?

You don't need to roll your own HeightGenerator to get at the height value. You could do it like this:

heightGen= new WaterHeightGenerator();

projectedGrid = new ProjectedGrid( "ProjectedGrid", cam, 50, 50, 0.01f, heightGen);

You can then get the height value with

float height = heightGen.getHeight(



                Timer.getTimer().getTimeInSeconds() );

a more universal wave which you could use would be the sine wave. just a thought