
OpenCTM est un format de fichier et une librarie pour les meshes 3D (CTM = Compressed 3D Triangle Meshes). La geométrie est compressée à une fraction de formats de fichiers comparable(3DS, STL, VRML...) et le format est facilement accessible via une API simple et portable.
Les grandes geométries supérieurs au milliard de triangles et arêtes peuvent être stockées (OpenCTM utilise des indices de face 32-bit). Le SDK OpenCTM est open source et est écris en C.
Voici comment charger un fichier ctm :
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include
CTMcontext context;
CTMuint vertCount, triCount, * indices;
CTMfloat * vertices;
// Create a new context
context = ctmNewContext(CTM_IMPORT);
// Load the OpenCTM file
ctmLoad(context, "mymesh.ctm");
if(ctmGetError(context) == CTM_NONE)
{
// Access the mesh data
vertCount = ctmGetInteger(context, CTM_VERTEX_COUNT);
vertices = ctmGetFloatArray(context, CTM_VERTICES);
triCount = ctmGetInteger(context, CTM_TRIANGLE_COUNT);
indices = ctmGetIntegerArray(context, CTM_INDICES);
// Deal with the mesh (e.g. transcode it to our
// internal representation)
// ...
}
// Free the context
ctmFreeContext(context); |
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include
CTMcontext context;
CTMuint vertCount, triCount, * indices;
CTMfloat * vertices;
// Create our mesh in memory
vertCount = 100;
triCount = 120;
vertices = (CTMfloat*)malloc(3*sizeof(CTMfloat)*vertCount);
indices = (CTMuint*)malloc(3*sizeof(CTMuint)*triCount);
// ...
// Create a new context
context = ctmNewContext(CTM_EXPORT);
// Define our mesh representation to OpenCTM (store
// references to it in the context)
ctmDefineMesh(context,
vertices,
vertCount,
indices,
triCount,
NULL);
// Save the OpenCTM file
ctmSave(context, "mymesh.ctm");
// Free the context
ctmFreeContext(context);
// Free our mesh
free(indices);
free(vertices); |
Pensez-vous qu'il soit necessaire de créer de nouveau format de compression pour les meshes 3D ?
Ces nouveaux formats de compression vont-il permettre aux graphistes 3D de mieux s'exprimer ?
Vous avez lu gratuitement 7 061 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.