Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Informacion Sobre Instruciones

Iniciado por er_willy, 04 de Octubre de 2005, 06:45:01 PM

« anterior - próximo »

er_willy

 bueno pos voy a sacar tiempo para aprender c++ y crear un exportador para gamestudio.
Y necesito de nuevo hacer unas preguntas

El maya puede ser salvado en  asciii, asi que:

Lo que quiero a aprender es a:

1 / Hago un programa que habra el fichero....ok

2 / Busco la informacion que me interesa....¿?

3 / la muestro en pantalla pa decirme a mi mismo lo Güeno que soy....ok

el punto 1 y 3 son faciles y no creo que necesite ayuda.


pero me gustaria que me comentarias el punto 2
¿que instruciones se usan?
¿Algun prototipo de funcionaminto?

Gracias. :)



shash

 Si usas maya, por dios, no intentes hacerte tu propio parser del formato. Usa la maya API, hacerte un exportador del formato no es dificil, en RobTheBloke tienes una referencia excelente. Sobre el gamestudio no tengo ni idea de lo que es.

_Grey

 Tu no sabes C++? verdad... ?

Bueno, suponiendo que solo necesites ayuda en la 2/ , quiza lo mejor seria cargar el texto en memoria y usar las funciones str*(strcmp, y demas....) para ir "leyendo" el texto e interpretarlo, y las ato* (atoi,atol,atof) para pasar los numeros de texto a una variable adecuada para ellos.

La 3/ es mas dificil de lo que parece, nunca sacaras suficiente informacion que te diga lo bueno que eres.

Saludos, y suerte con el programilla.

er_willy

 
:) no, se programar y todo lo que tiene que ver con gramatica (if´s, variables y demas), pero no se lexico de c++.
los pasos 1 y 3 me refiero a que seguro que lo puedo encontar en cualquier libro o tutorarial.
gracias por los datos.



gracias shash
Estuve googleando y encontre la pagina pero para hacer eso necesito saber mucho mas de lo que se.

Este objetivo es mas sencillo para mi nivel.

Warchief

 Si usas std::string en vez de char*.


size_type find (const string& str, size_type pos=0) const;
size_type find (char ch, size_type pos=0) const;
size_type rfind (const string& str, size_type pos=npos) const;
size_type rfind (char ch, size_type pos=npos) const;
size_type find_first_of (const string& str, size_type pos=0) const;
size_type find_first_not_of (const string& str, size_type pos=0) const;
size_type find_last_of (const string& str, size_type pos=npos) const;
size_type find_last_not_of (const string& str, size_type pos=npos) const;
string substr (size_type pos, size_type n) const;

suelen ser útiles para buscar en cadenas (como los strcmp). [ http://www.msoe.edu/eecs/cese/resources/stl/string.htm ]


En realidad no entiendo qué tipo de fichero ascii genera el exportador, pero si son numéricos entonces usaría algo como:

int  sscanf ( char * buffer, const char * format [ , argument , ...] );


de stdio, y que suele ser harto útil. [ http://www.cplusplus.com/ref/cstdio/sscanf.html ]


En definitiva:

http://www.cplusplus.com/ref/cstdio/
http://www.cplusplus.com/ref/cstring/index.html
http://www.msoe.edu/eecs/cese/resources/stl/string.htm

senior wapo

 Pega tu código y te comentamos donde y como tocar y añadir o acabaremos confundiendote más aun. Aunque solo tengas un esqueleto que no hace mucho.

De lo contrario te mezclaremos comentarios sobre FILE * con iostreams, strtoks con clases C++, std:string con char * y demás pijadas. En serio, pega lo que tengas :)

BeRSeRKeR

 No estoy nada puesto en Maya, pero me imagino que con MEL también podrás hacer exporters. Lo digo porque si es tan flexible como MAXScript, te resultará más sencillo que C++.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

er_willy

 @Warchief
gracias por la info

@BeRSeRKeR
bueno ceo que me explique mal, lo que quiero crear es un importador, coger el fichero de maya y pasarlo a gamestudio mdl7, sin pasos intermedios y sin tener que abriri el maya e incluso poder importar en lotes. Como maya puede manejar sus ficheros en ascii sin perder ningun dato lo que pretendo en integralo

@wappo
pues esta es la parte que me interesa
el node trasform indica la posicion en el espacio global .t es trasform (xyz) .s scale y rotate no esta por que los valores estan a cero que es el defalut

y el node mesh es el modelo en si pero aun no se lo que es cada cosa


createNode transform -n "pared_mesh";
setAttr ".ove" yes;
setAttr ".t" -type "double3" 0.0023866 2.2226856503891854 9.7757461820287492;
setAttr ".s" -type "double3" 1 1 2.5722478715230173;
setAttr ".rp" -type "double3" -5.2351042479276657 4.4390540719032288 7.7286330052477119;
setAttr ".sp" -type "double3" -5.2351042479276657 4.4390540719032288 3.1463029384613037;
setAttr ".spt" -type "double3" 0 0 4.5823300667864082;
createNode mesh -n "pared_meshShape" -p "pared_mesh";
setAttr -k off ".v";
setAttr ".ove" yes;
setAttr ".vir" yes;
setAttr ".vif" yes;
setAttr ".uvst[0].uvsn" -type "string" "map1";
setAttr -s 24 ".uvst[0].uvsp[0:23]" -type "float2" 0 0 1.0000001 0
 0 0.99999923 1 0.99999994 0 0 0 0.99999988 0 0 0 0.99999982 0 0 0 0.99999988 0 0
 0 0.99999988 1 0 1 0.99999988 0 0.99999988 0 0 1 0 1 0.99999923 1 0 1 0.99999988
 1 0 1 0.99999982 1 0 1 0.99999988;
setAttr ".cuvs" -type "string" "map1";
setAttr ".dcc" -type "string" "Ambient+Diffuse";
setAttr -s 8 ".pt";
setAttr ".pt[1:3]" -type "float3" 0 4.6229687e-013 2.0490085e-009  -0.24358584
 -0.33333319 1.1701701e-007  -0.26303813 -0.3333331 2.049005e-009;
setAttr ".pt[5]" -type "float3" -0.24669236 -0.3333331 0;
setAttr ".pt[7]" -type "float3" -0.046738088 -0.3333331 0;
setAttr ".pt[9]" -type "float3" -0.050039291 -0.3333331 -8.8817842e-016;
setAttr ".pt[11]" -type "float3" -0.053270996 -0.3333331 8.8817842e-016;
setAttr ".pt[13]" -type "float3" -0.25979292 -0.3333331 0;
setAttr -s 14 ".vt[0:13]"  0 -2.2226853 8.7793427 0 -2.2226853 -3.6611395
 0.24358584 3.1106474 8.7793427 0.26303813 3.1106474 -3.6611395 0 -2.2226853 6.7059278
 0.24669236 3.1106474 6.7059278 0 -2.2226853 4.6325145 0.046738088 3.1106474 4.6325145
 0 -2.2226853 2.5591009 0.050039291 3.1106474 2.5591009 0 -2.2226853 0.4856874 0.053270996
 3.1106474 0.4856874 0 -2.2226853 -1.5877261 0.25979292 3.1106474 -1.5877261;
setAttr -s 19 ".ed[0:18]"  0 2 0 1 12 0
 3 1 0 3 13 0 4 0 0 5 2 0
 5 4 1 6 4 0 7 5 0 7 6 1
 8 6 0 9 7 0 9 8 1 10 8 0
 11 9 0 11 10 1 12 10 0 13 11 0
 13 12 1;
setAttr -s 6 ".fc[0:5]" -type "polyFaces"
 f 4 3 18 -2 -3
 mu 0 4 3 14 15 1
 f 4 -7 5 -1 -5
 mu 0 4 16 17 2 0
 f 4 -10 8 6 -8
 mu 0 4 18 19 5 4
 f 4 -13 11 9 -11
 mu 0 4 20 21 7 6
 f 4 -16 14 12 -14
 mu 0 4 22 23 9 8
 f 4 -19 17 15 -17
 mu 0 4 12 13 11 10;
setAttr ".cd" -type "dataPolyComponent" Index_Data Edge 0;
setAttr ".bck" 3;



gracias a tos  (ole)  

er_willy

 bueno pues hice caso a BeRSeRKeR y he creado un mel to txt para usar el formato de milkshape ASCII, para ir breandome en esto de exportar, y despues de acabarlo y ver que fucnionaba me e dado cuenta que las uv hcian cosas raras,  he me e dado cuenta que el formato solo deja un uv por vertice.

a ver si me explico bien.

un vertice puede tener mas de un UV cuando quieres crear un uvwraping en condiciones, pero el ASCII solo me permite un UV por vertice.

aqui esta el File Format Specification
// vertex: flags, x, y, z, u, v, bone index

asi que mi pregunta, la cual me la imagino, es que ¿no es posible usar este formato para pasar el uv correctamente.?
Es que quiero asegurarme antes de hacer le capullo de mas.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.