30 #include <yarp/os/LogStream.h>
33 #pragma warning(disable:4996 4244 4305)
53 if ((in = fopen(FileName,
"r")) == NULL) {
54 yError (
"Can't open the file '%s'\n", FileName);
58 yDebug(
"Loading mesh data from '%s' ", FileName);
60 while((symbol = fgets(buff, 256, in)) != (
char*) NULL) {
62 while (
word[0]==
' ' ||
word[0]==
'\t')
64 if (strcmp(
word,
"template") == 0) {
65 ret=fscanf(in,
"%s",
word);
66 ret=fscanf(in,
"%s",
word);
68 if (strncmp(
word,
"Mesh ", 5) == 0){
69 if (strcmp(
word,
"{") != 0 )
73 ret=fscanf(in,
"%s",
word);
75 if (fgets(
word, 256, in)==0)
80 if (fgets(
word, 256, in)==0)
84 p = strtok(
word,
",;");
87 ret = sscanf(
p,
"%lf", &dblval);
92 p = strtok(NULL,
",;");
97 ret=fscanf(in,
"%d", &indexCount);
101 if (fgets(
word, 256, in)==0)
104 for (i = 0; i < indexCount; i++) {
105 if (fgets(
word, 256, in)==0)
108 p = strtok(
word,
",;");
109 ret = sscanf(
p,
"%d", &intval);
111 yError(
"Only triangular polygons supported! Convert your model!\n");
114 for(j = 0; j < 3; j++) {
115 p = strtok(NULL,
",;");
116 ret = sscanf(
p,
"%d", &intval);
117 tmpTriMesh->
Indices[i*3 + j] = intval;
126 if ((in = fopen(FileName,
"r")) == NULL) {
127 yError (
"Can't open the file '%s'\n", FileName);
131 yDebug(
"Loading texture coordinate from '%s' ", FileName);
133 while((symbol = fgets(buff, 256, in)) != (
char*) NULL) {
135 while (
word[0]==
' ' ||
word[0]==
'\t')
137 if (strncmp(
word,
"MeshTextureCoords", 17) == 0){
139 if (fgets(
word, 256, in)==NULL)
145 if (fgets(
word, 256, in)==0)
148 p = strtok(
word,
",;");
150 ret = sscanf(
p,
"%lf", &dblval);
155 p = strtok(NULL,
",;");
160 }yDebug(
"... OK!\n");
165 if ((in = fopen(FileName,
"r")) == NULL) {
166 yError (
"Can't open the file '%s'\n", FileName);
170 yDebug(
"Loading normals from '%s' ", FileName);
172 while((symbol = fgets(buff, 256, in)) != (
char*) NULL) {
174 while (
word[0]==
' ' ||
word[0]==
'\t')
176 if (strncmp(
word,
"MeshNormals", 11) == 0){
177 ret=fscanf(in,
"%d", &(tmpTriMesh->
NormCount));
178 if (fgets(
word, 256, in)==NULL)
183 for (i = 0; i < tmpTriMesh->
NormCount; i++) {
184 if (fgets(
word, 256, in)==0)
187 p = strtok(
word,
",;");
189 ret = sscanf(
p,
"%lf", &dblval);
194 p = strtok(NULL,
",;");
199 }yDebug(
"... OK!\n");
dxTriMeshX * dLoadMeshFromX(const char *FileName)
void dTriMeshXDestroy(dTriMeshX TriMesh)
Header for the 3D x loader.