NECESITO AYUDA para conversor de archivos
Hola a todos , y gracias por todas vuestras ayudas que publicais .
El asunto trata de crear un programa que lea un archivo en formato texto y lo convierta en otro documento tambien de texto pero cogiendo ciertos valores del primero . Yo lo estoy intentando pero me está siendo muy dificil y no consigo realizarlo . El conversor es para utilizarlo para convertir un archivo en formato WRL de un objeto en 3D estando en formato texto su código y convertirlo al formato B3D tambien en formato texto .
La estructura de un ejemplo de WRL que dibuja una cara de un cuadrado es la siguiente :
#VRML V2.0 utf8
#EXTERNPROTO rect [] "C:/PROYECTO.wrl#cuadrado"
#Group { children [ rect {} ]}
PROTO rect [] {
# Object "cuadrado"
Shape {
appearance Appearance {
texture ImageTexture { url "TEXTURA.BMP" }
textureTransform TextureTransform {
}
material Material {
diffuseColor 1 1 1
specularColor 0.5 0.5 0.5
emissiveColor 0 0 0
shininess 10.000000
transparency 0.000000
}
}
geometry IndexedFaceSet {
solid FALSE
creaseAngle 0.785398
coord Coordinate {
point [
0 0.01 0,
1 0.01 0,
1 1 0,
0 1 0]
}
coordIndex [
3, 2, 1, 0, -1]
texCoord TextureCoordinate {
point [
0 0, 1 0, 1 1, 0 1
]
}
texCoordIndex [ 0, 1, 2, 3, -1]
}
}
}
de estos valores solo interesan las variables de las coordenadas de POINT , NOMBRE DEL OBJETO, y NOMBRE DE LA TEXTURA . Para asi convertirlo a otro formato B3D que adopta la siguiente forma :
[MeshBuilder] ;CUADRADO ("este es el nombre del objeto")
VERTEX 0,0.01,0, ("aqui estan las variables
VERTEX 1,0.01,0, de las coordenadas separadas
VERTEX 1,1,0, por ",")
VERTEX 0,1,0
Face 0,1,2,3
Face 3,2,1,0
[Texture]
Load TEXTURA.bmp ("nombre de la textura")
Coordinates 0, 0, 0
Coordinates 1, 1, 0
Coordinates 2, 1, 1
Coordinates 3, 0, 1
El conversor solo debe dibujar objetos con cuatro cada uno vertices , pero que pueda tener varios objetos en un mismo archivo .
El programa es para utilizarlo en la creación de objetos de un conocido simulador de trenes llamado BVE . Siendo los objetos previamente diseñados con el AC3D y exportados al formato WRL . Si alguien me pudiera ayudar o estuviera interesado lo agradeceria enormemente .
La pagina que cree del simulador de trenes al cual iria destinado el programa es la siguiente .
Http://es.geocities.com/bvespanish
Aquella persona que ayude en su creación , el programa será colgado en la WEB con los créditos de los creadores .
Gracias a todos por leer este mensaje y espero alguien pueda ayudar .
Un saludo
El asunto trata de crear un programa que lea un archivo en formato texto y lo convierta en otro documento tambien de texto pero cogiendo ciertos valores del primero . Yo lo estoy intentando pero me está siendo muy dificil y no consigo realizarlo . El conversor es para utilizarlo para convertir un archivo en formato WRL de un objeto en 3D estando en formato texto su código y convertirlo al formato B3D tambien en formato texto .
La estructura de un ejemplo de WRL que dibuja una cara de un cuadrado es la siguiente :
#VRML V2.0 utf8
#EXTERNPROTO rect [] "C:/PROYECTO.wrl#cuadrado"
#Group { children [ rect {} ]}
PROTO rect [] {
# Object "cuadrado"
Shape {
appearance Appearance {
texture ImageTexture { url "TEXTURA.BMP" }
textureTransform TextureTransform {
}
material Material {
diffuseColor 1 1 1
specularColor 0.5 0.5 0.5
emissiveColor 0 0 0
shininess 10.000000
transparency 0.000000
}
}
geometry IndexedFaceSet {
solid FALSE
creaseAngle 0.785398
coord Coordinate {
point [
0 0.01 0,
1 0.01 0,
1 1 0,
0 1 0]
}
coordIndex [
3, 2, 1, 0, -1]
texCoord TextureCoordinate {
point [
0 0, 1 0, 1 1, 0 1
]
}
texCoordIndex [ 0, 1, 2, 3, -1]
}
}
}
de estos valores solo interesan las variables de las coordenadas de POINT , NOMBRE DEL OBJETO, y NOMBRE DE LA TEXTURA . Para asi convertirlo a otro formato B3D que adopta la siguiente forma :
[MeshBuilder] ;CUADRADO ("este es el nombre del objeto")
VERTEX 0,0.01,0, ("aqui estan las variables
VERTEX 1,0.01,0, de las coordenadas separadas
VERTEX 1,1,0, por ",")
VERTEX 0,1,0
Face 0,1,2,3
Face 3,2,1,0
[Texture]
Load TEXTURA.bmp ("nombre de la textura")
Coordinates 0, 0, 0
Coordinates 1, 1, 0
Coordinates 2, 1, 1
Coordinates 3, 0, 1
El conversor solo debe dibujar objetos con cuatro cada uno vertices , pero que pueda tener varios objetos en un mismo archivo .
El programa es para utilizarlo en la creación de objetos de un conocido simulador de trenes llamado BVE . Siendo los objetos previamente diseñados con el AC3D y exportados al formato WRL . Si alguien me pudiera ayudar o estuviera interesado lo agradeceria enormemente .
La pagina que cree del simulador de trenes al cual iria destinado el programa es la siguiente .
Http://es.geocities.com/bvespanish
Aquella persona que ayude en su creación , el programa será colgado en la WEB con los créditos de los creadores .
Gracias a todos por leer este mensaje y espero alguien pueda ayudar .
Un saludo
Hola suncand
No conozco estos tipos de archivos pero es igual, lo que tienes que hacer es abrir el fichero a convertir en modo lectura:
fopen("archivoWRL", "r");
y leerlo linea a linea y guardarlas en arrays (porque si utilizas fscanf sólo leerá hasta que encuentre un espacio). Una vez tengas la información en arrays cojes lo que quieras y escribes en otro fichero abierto en modo escritura.
Espero haberte sido de ayuda.
Un saludo
No conozco estos tipos de archivos pero es igual, lo que tienes que hacer es abrir el fichero a convertir en modo lectura:
fopen("archivoWRL", "r");
y leerlo linea a linea y guardarlas en arrays (porque si utilizas fscanf sólo leerá hasta que encuentre un espacio). Una vez tengas la información en arrays cojes lo que quieras y escribes en otro fichero abierto en modo escritura.
Espero haberte sido de ayuda.
Un saludo
se me olvidó decirte que para leer lineas enteras, puedes utilizar fgets().
