[ODE] new ODE 0.8 heightfield seems working wrong
Dmitry Medvedev
pegasi at inbox.ru
Fri Feb 2 08:14:00 MST 2007
It seems that patch #1583115 has changed internal heightfield.cpp code completely. A new algorithm for a the hightfield is used. I think the best way is to negotiate with person who committed this patch - hidden_asbestos. Does anybody know his e-mail or is it possible to redirect this topic to him?
-----Original Message-----
From: Bram Stolk <bram at sara.nl>
To: Dmitry Medvedev <pegasi at inbox.ru>
Date: Wed, 31 Jan 2007 20:35:21 +0100
Subject: Re: [ODE] new ODE 0.8 heightfield seems working wrong
>
> 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