Anuncios Google

[Problema] Leyendo vertices

Hola, resulta que, para intentar renderizar un modelo .OBJ en la ,
tengo este codigo, el cual obtiene la información numérica de los
vértices, que coje del buffer, y lo transforma a float con atof();

Este es el modelo OBJ que quiero sacarle información:

http://pastebin.com/RX7cqSu0

Lo que quiero hacer es que, al principio en algunas lineas pone una v, pues quiero sacarle los 3 valores que tiene a continuación, lo hago con este code:

Code:
http://pastebin.com/bHLn0GYM

El archivo OBJ está cargado en su buffer, MODELO.obj_buffer[lineas][numero_de_letras_de_cada_linea];

Pues en un for intento obtener los valores con las variables que están descritas en el code.

¿El resultado? Es capaz de leer sólo el vértice X, los vértices Y y Z dan un valor de 0.000000

---------------------------------------------------------------------------------------------------------

Siento haber soltado ese rollo, espero que puedan ayudarme, si no entienden algo de lo que he dicho diganmelo

Salu2!


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de joserc87

Un par de cosas

Para empezar, ten en cuenta que si los valores están separados por más de un espacio, o por un tabulador en lugar de un espacio, no te va a funcionar. Es posible que sea por esto por lo que no te funciona

Además, te faltaría poner el caracter '\0' al final de temp para que se sepa donde acaba la cadena

Si estás usando C++, hay una forma mucho más cómoda de hacer esto: usando istringstream. Si defines un istringstream ss (OBJ_MODELO.obj_buffer[i]); Puedes hacer cosas como ss>>c; if (c=='v'){ss>>x>>y>>z} donde x, y, z serían floats, por lo que no tendrías que usar atof.

Sino, si solo programas en C, también hay funciones para separar las palabras, como strtok, pero no es tán simple como en C++.

Saludos.


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de Andresmargar

Funciona!

Gracias! He seguido tus consejos y ahora funciona!

No me ha hecho falta poner el \0 al final de la cadena, el error era que al parecer pasaba algo raro en los bucles y no leía el valor donde tocaba...


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.