[ODE] TriMesh Data woes

Rodrigo Hernandez kwizatz at aeongames.com
Tue Aug 7 16:06:25 MST 2007


How about making it take a pointer to a float and an offset in bytes 
between a vertex and the next (like VBO do)

In Example:

/* Data for a mesh, inlcuding UVs, one vertex per line, format x,y,z,u,v: */
float triangle[] =
{
0.0,0.0,0.0,0.0,0.0,
1.0,0.0,1.0,0.2,0.5,
1.0,2.0,0.0,0.2,1.0,
};

dTriMeshDataBuildSimple(triangle,sizeof(float)*5);


I think I wrote something like this for the convex code.

Cheers!

Jon Watte (ODE) wrote:
> dTriMeshDataBuildSimple() is documented as taking a dVector3*, which 
> actually is a 4-element vector, which I know (after all, I explain it 
> often enough :-) but it still bit me the other day. Geometry that comes 
> from externally is unlikely to actually be in ODE format; it's likely to 
> be in packed 3-float format if it's not interleaved such that Simple 
> can't be used.
>
> I propose we change TriMeshDataBuildSimple() to take an array of real 
> three-vectors. To make it clear we're changing the API, let it take a 
> struct ExternalVertexPosition {} which can contain three floats. Pretty 
> much everyone using the function uses type-casts anyway.
>
> Also, here is a patch I think is necessary (also in the patch tracker). 
> It makes sure that swapping trimesh data (without changing the geom in 
> other ways) actually re-calculates the AABB correctly. I believe I saw 
> this not happening when debugging the above problem.
>
>
> Index: collision_trimesh_opcode.cpp
> ===================================================================
> --- collision_trimesh_opcode.cpp        (revision 1199)
> +++ collision_trimesh_opcode.cpp        (working copy)
> @@ -698,6 +698,8 @@
>  {
>         dUASSERT(g && g->type == dTriMeshClass, "argument not a trimesh");
>         ((dxTriMesh*)g)->Data = Data;
> +       //  I changed my data -- I know nothing about my own AABB anymore.
> +       ((dxTriMesh*)g)->gflags |= (GEOM_DIRTY|GEOM_AABB_BAD);
>  }
>
>  dTriMeshDataID dGeomTriMeshGetData(dGeomID g)
> _______________________________________________
> ODE mailing list
> ODE at ode.org
> http://ode.org/mailman/listinfo/ode
>
>
>   




More information about the ODE mailing list