[ODE] new ODE 0.8 heightfield seems working wrong

Bram Stolk bram at sara.nl
Wed Jan 31 12:35:21 MST 2007


This could be bad news.
This is in the history of heightfield.cpp:

r1145 | hidden_asbestos | 2007-01-11 14:54:15 +0100 (Thu, 11 Jan 2007) |
1 line

Added changes from patch #1583115 by Tuan Kuranes. Performance in
test_heightfield, especially for meshes is a superb improvement!


It could be that revision 1145 introduced a bug.
It looks like a optimization was added that could change behavior?

You may want to take a look at the patch 1583115 and see if it
can be easily disabled with an ifdef or something.

  Bram


On Wed, 2007-01-31 at 19:25 +0300, Dmitry Medvedev wrote:
>   Hello, everybody.
> 
>  Just change ODE from 0.7 to 0.8-rc1.
> 
>  I have a scrolling screen in XoY plane with a moving truck and use dHeightfield to represent a landscape. 
>   Truck's wheels are falling under the heightfiled now... but I didn't change anything in my code.
>  In a new heightfield source code all changes are only in private functions and data, all interface functions like dGeomHeightfieldDataBuildSingle() have the same code like in 0.7. So what could happened?
>  (If to build ODE 0.8 and copy to its sources heightfield.cpp, heightfield.h from 0.7 aeverything works)
> 
>   Here is a part of a creating heightfield code:
> 
>       mHeightMapDataID = dGeomHeightfieldDataCreate();
> 
>     // configure a heightfield
>     dGeomHeightfieldDataBuildSingle(mHeightMapDataID,
>         mHeightMapSampleData, 0, // based on this instance of data, no duplication
>         worldCorner2[0]-worldCorner1[0], // total x dimension
>         worldCorner2[2]-worldCorner1[2], // total z dimensions
>         mHeightMapSampleCount, 2, // cell count on x,z
>         REAL( 1.0 ), REAL( 0.0 ), // scale, offset
>         REAL( 0.1 ), 0); // // thickness, wrap
> 
>               // set finite AABB
>     dGeomHeightfieldDataSetBounds( mHeightMapDataID, worldCorner1[1], worldCorner2[1] );
> 
>     // the height field is movable, y is the height, we position it around z=0 axis
>     mHeightFieldGeom = dCreateHeightfield( mGroundSpace, mHeightMapDataID, 1);
> 
>     My system has Y axis increasing from top to bottom, so rotate heightfield geometry 180 degrees about Z axis:
> 
>     dMatrix3 R;
>     dRSetIdentity( R );
>     dRFromAxisAndAngle( R, 0, 0, 1, DEGTORAD * 180 );
>     dGeomSetRotation( mHeightFieldGeom, R );
> 
>     Place geometry in the center of world's X axis and at the bottom of it. 
>     dVector3 posHeightMap;
>     posHeightMap[0]= (worldCorner1[0]+worldCorner2[0])/2.0f;
>     posHeightMap[1]= worldCorner2[1]; // bottom of world
>     posHeightMap[2]= 0.0f;
>     dGeomSetPosition( mHeightFieldGeom, posHeightMap[0], posHeightMap[1], posHeightMap[2] );
> 
> 
>  So why mu truck begun to fall in a heightfield?
>   
> _______________________________________________
> ODE mailing list
> ODE at ode.org
> http://mooshika.org/mailman/listinfo/ode



More information about the ODE mailing list