diff --git a/wrap/io_trimesh/how_to_write_an_io_filter.txt b/wrap/io_trimesh/how_to_write_an_io_filter.txt new file mode 100644 index 00000000..1b444d59 --- /dev/null +++ b/wrap/io_trimesh/how_to_write_an_io_filter.txt @@ -0,0 +1,54 @@ +---- How to write an IMPORT filter ---- + +For writing an import filter for a XXX 3D mesh file type you must: + +create a class templated on the mesh type and named: + +vcg::tri::io::ImporterXXX<MeshType> + +The class must have at least the following methods + +static int Open(MESH_TYPE &mesh, const char *filename, CallBackPos *cb=0) +static int Open(MESH_TYPE &mesh, const char *filename, int & loadmask, CallBackPos *cb =0) +static const char *ErrorMsg(int error) + +where loadmask is an writeonly bitmask that, after the successful +loading, will contain what kind of data have been found inside the +loaded file (per vert color, tex coords etc). + +Please note that you can NOT use loadmask to selectively loading attribute from files. +Note also that the returned mask should always match with the capability mask of your mesh, +so if your mesh has no texture coords, that bit will be always zero even if the original file +has texture coords. + +To know the original content of a given file use the LoadMask function. + +The last function is used to translate the numerical error code in a more meaningful message. + +The callback function should be used to back communicate the loading status in a 1..100 range. +It should be called approximatively no more than some hundreds of time, +so do not call it for every loaded face. Typical callback line +in a j-based loop during vertex loading: + +if(cb && (j%1000)==0) cb(j*50/vertex_number,"Vertex Loading"); + + +---- How to write an EXPORT filter ---- + +create a class templated on the mesh type and named: + +vcg::tri::io::ExporterDOH<MeshType> + +The class must have at least the following methods + +static int Save(MESH_TYPE &mesh, const char *filename, CallBackPos *cb=0) +static int Save(MESH_TYPE &mesh, const char *filename, int & savemask, CallBackPos *cb =0) +static const char *ErrorMsg(int error) +static int GetExportMaskCapability() + +function return 0 in case of success and a code in any other case... + + + + +