# [ODE] Trimesh creation problems

Sergey Beloshitsky sergey at rostok-games.com.ua
Thu Feb 10 12:39:20 MST 2005

```David Rogers wrote:

> Thank for all your help Sergey! I'm still working on it but you've
> helped me think through it.
>
> Now as a sequence, do you mean an array or a pointer(float [3] or
> float *)? Now that I think about it, does that even make a difference?

you may use whatever  you want, for example I use
Vector3* vBuffer = tw_new Vector3[num_nodes*num_nodes];
unsigned int* iBuffer = tw_new unsigned
int[(num_nodes-1)*(num_nodes-1)*2*3];

where Vector3 is a struct { float x; float y ; float z;}
Vector3 aso could be an array of 3 floats such as
typedef float Vector3[3]

in these cases vertex_stride would be sizeof(Vector3) or what is equal
sizeof(float)*3

here is some exaple code , perhaps it will help
numPoints = num_nodes*num_nodes;
Vector3* vBuffer = tw_new Vector3[numPoints];
// fill vBuffer
unsigned int* iBuffer = tw_new unsigned
int[(num_nodes-1)*(num_nodes-1)*2*3];
// fill iBuffer

Create( vBuffer, 3*sizeof(float), numPoints, iBuffer, sizeof(unsigned
int), (num_nodes-1)*(num_nodes-1)*2*3 )

Create(const void* vBuffer, const size_t vStride, const size_t vNum,
const void* iBuffer, const size_t iStride, const size_t iNum)
{
dTriMeshDataID TriMeshData = dGeomTriMeshDataCreate();
// as long as dReal == floats
dGeomTriMeshDataBuildSingle(TriMeshData,
// Vertices
vBuffer,
vStride, (int) vNum,
// Faces
iBuffer,
(int)iNum, iStride
/*nBuffer*/
);
dGeomTriMeshSetData(m_GeomID,TriMeshData);
//    dVector3 v0,v1,v2;
//    for(int i=0;i<iNum/3;i++)
//      dGeomTriMeshGetTriangle(m_GeomID,i,&v0,&v1,&v2);
}

>
> Dave
>
> On Feb 9, 2005, at 12:33 PM, Sergey Beloshitsky wrote:
>
>     I have looked at your code, think problem is in your data, look at
>     example source code that work with TriMesh
>     also you may look at ode-doc at trimesh geom class, there is some
>     example code.
>     make sure that Lib3dsPoint is sequence of 3 floats/doubles(for
>     Double), it may also contain data at the end
>     Lib3dsFace(object->Model->meshes->faces) must contain chunks of 3
>     indexes to data in Lib3dsPoint
>
>     David Rogers wrote:
>
>         I tried that still with no luck. Perhaps it's my data, I'll
>         check on that unless anyone has any other ideas. For
>         reference, with dGeomTriMeshDataBuildSingle, here is a
>         screenshot of the trace.
>
>
>
>
>         dave
>
>
>         On Feb 9, 2005, at 8:06 AM, Sergey Beloshitsky wrote:
>
>         maybe you should chage dGeomTriMeshDataBuildDouble on
>         dGeomTriMeshDataBuildSingle
>         David Rogers wrote:
>
>         Hi all,
>
>         I'm using some 3ds models in my project and just using ODE for
>         collisions. Lib3ds is getting all the info for the models for
>         me and doing a great job at it. But when I call
>         dGeomTriMeshDataBuildDouble to put the data from my models in,
>         I get a crash. I've traced it back and it's somewhere deep
>         within OPCODE. More specifically, line 133 of
>         OPC_MeshInterface.h. Here is my problem code:
>
>         dTriMeshDataID Data;
>         int VertexStride = sizeof(Lib3dsPoint);
>         int TriStride = sizeof(Lib3dsFace);
>         gfloat *PointList = model_Get3DSPointList(object);
>
>
>         if(object->Model) {
>         Data = dGeomTriMeshDataCreate();
>
>         /* Crashes in this call */
>         dGeomTriMeshDataBuildDouble(Data,
>         object->Model->meshes->pointL, VertexStride,
>         object->Model->meshes->points,
>         object->Model->meshes->faceL, object->Model->meshes->faces,
>         TriStride);
>
>         object->TriMesh = dCreateTriMesh(space, Data, 0, 0, 0);
>         }
>
>         Any help would be greatly appreciated. If any more code/info
>         is needed, I can get it out there later today, it's too late
>         and I'm sleepy.
>
>         Thanks again!
>
>         Dave Rogers
>
>
>         "Final Score: Freedom 27, Liberty 15. It was noble effort for
>         Liberty which as you know has been playing hurt since the
>         Patriot Act."
>
>
>         ------------------------------------------------------------------------
>
>
>
>         _______________________________________________
>         ODE mailing list
>         ODE at q12.org
>         http://q12.org/mailman/listinfo/ode
>
>
>
>
>         -- Шукай в телефоні мій слід...
>
>
>         "Final Score: Freedom 27, Liberty 15. It was noble effort for
>         Liberty which as you know has been playing hurt since the
>         Patriot Act."
>
>
>
>     --
>     Шукай в телефоні мій слід...
>
>
> "Final Score: Freedom 27, Liberty 15. It was noble effort for Liberty
> which as you know has been playing hurt since the Patriot Act."
>

--
Шукай в телефоні мій слід...

```