"Ningún juego dura tanto hasta que te lo terminas como el que te programas tú mismo,
ninguno te absorbe tanto y ninguno te produce tanta satisfacción cuando lo has acabado"
Programacion de videojuegos
Inicio Foro Sobre el curso de programación de juego... pregunta (capitulo 15, carga de modelos)
Domingo 05 de Febrero del 2012

Menu principal
Colaborar (con PayPal)

Para continuar con el trabajo de esta Web y poder pagar el hosting, viene bien la ayuda que sea. Gracias a todos.

Importe: 

Ultimas descargas

 Foro de UnSitioWeb :: Sobre el curso de programación de juegos
Bienvenido/a Visitante   
Normas del foro   por Vicengetorix el 04-10-2009 02:30
 Asunto :pregunta (capitulo 15, carga de modelos).. 12-11-2009 07:32 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
HOLA QUERIA SABER COMO triangular el modelo antes de guardarlo AL ARCHIVO .COB EN EL TRUESPACE, YA TENGO EL PROGRAMA PERO NO ENCUENTRO ESA OPCION. CRISTIAN , ARGENTINA, SANTA FE
IP Logged
 Asunto :Respuesta:pregunta.. 12-11-2009 19:49 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 79
Localización
En primer lugar, bienvenido al foro de UnSitioWeb.
Respecto a tu pregunta, está claro que te refieres al capitulo 15 de carga de modelos .COB.
La opción es la marcada en la imagen, capturada de la versión 7.6 del truSpace:
triangula.jpg
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 13-11-2009 18:09 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
hola, bueno gracias hay lo solucione, ya triangule, tambien tenia que borrar una parte de todos numero del archivo .cob(lo habri como txt) xq sino me tiraba error cuando cagarba el modelo el programa.
ahora la pregunta( 2 ) yo ya pude cargar un modelo ( en particular cargue un avion).
ahora si quiero cargar un arbol por ejemplo tng q llamar otra ves a CargarModelo() pero resulta que llamo a CargarModelo(9 en mi programa en una rutina llamada
// Inicializa GLUT y OpenGL
void initialize()
ose la cargo al principo y no pasa mas por ahi , despues llamo
a PintaModelo() en
// Cada vez que hace un redisplay

lo que quiero decir, es que si llamo en initialize() a CargarModelo() 2 veces seguidas me va a quedar los datos del ultimo solamente, no ahi una forma de hacer tipo CargarModelo( vector_de_modelo le paso el elemento a cargar);

y despues llamo a pintar con

PintarModelo( pintar elemto i del vector);

y la otra consulta es que me carga el avion perfectamente pero en blanco y negro digamos (bloanco con algunos grises) pero no del color = al que tiene el trueSpace. ¿no lo carga porque el avion no tiene textura?
http://img23.imageshack.us/img23/7077/dibujodfp.jpg
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 13-11-2009 21:48 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 79
Localización
Tienes razón en lo de utilizar un array o arreglo para los datos, tendrías que hacerlo con un tipo base que fuera una estructura con los punteros necesarios para cargar un modelo.

La opción correcta, en mi opinión, es usar la programación orientada a objetos y crear una clase (llamada modelo por ejemplo) con las variables, punteros y funciones necesarias, incluida una que se llamara, por ejemplo, Carga(char* fichero) y otro Pinta(). Luego solo tendrías que crear un objeto por modelo a cargar y llamar al metodo "Carga" de cada objeto al inicializar y al método "Pinta" de cada objeto, cada vez que pintes la escena (cada frame).

El tema del color es dificil de saber sin conocer el modelo bien.
Podría ser que fuera un modelo con textura y no la encuentre al cargar.
El el capítulo 15, si te has fijado, en el nombre del fichero de textura, desprecia todo el path de donde está el fichero y se queda solo con el nombre y la extensión.
Luego va ha buscar el fichero donde he dejado todas las texturas de los modelos.
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 14-11-2009 01:17 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
ok, ya solucione el primer tema.
en tu codigo pones
// Cargo texturas con la funcion de
// una forma mas comoda.
CargaTextura(&tex1,"dibus//mad.png");
CargaTextura(&tex2,"dibus//usw.png");

con eso cargas la texturas que despues se van a aplicar el modelo?? (¿mad.png es la foto del rino??)o nada que ver, si el modelo tiene textura se tiene que cargar solas o yo con la funcion cargar textura defino que textura le va a asiganar a las coordenadas de textura que obtubo del archivo??

la pregunta, es porque el avion viste me queda blanco y negro y a vos el triciclo te queda con los colores iguales a los que esta en el truespace

ha no dije, pero la pagina muy buena , hay muchas pagina pero casi todos los codigos que hay estan por la mitad o no andan para nada y cuando se pregunta nadie responde bien o no saben(en muchos casos nadie responde y te podes quedar esperando tranquilo una respuesta que nunca llega).
saludos
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 14-11-2009 14:36 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 79
Localización
Gracias por lo de la página.

Lo de las texturas:
El fichero "mad.png" es la textura que se aplica a uno de los cubos (el que parece de madera).
El fichero "usw.png" es el logo de la página que se pinta en la esquina superior izquierda de la ventana.

La textura del rino es el fichero "RHINO.jpg" que puedes encontrar en el capitulo 15 al final de la primera parte, donde se explica el formato ".COB" en ASCII, junto al modelo, "rino.cob".

Lo primero es aclarar que el modelo de triciclo no tiene textura, simplemente tiene varios materiales aplicados a los triángulos pero ningún material con textura. Por eso, se ve correctamente aunque no se puedan cargar texturas.

Si un material tuviera textura, como el rinoceronte, se cargaría en la propia función "CargaModelo(...)", ya que el nombre del fichero de la textura va en el propio modelo.

El trozo de código que carga la textura es este. Observa que desprecia el path del fichero y lo carga siempre desde un directorio llamado "dibus", que es donde yo guardo las texturas:

// Si esta linea empieza con "texture" es que
// este meterial tiene textura que cargar
if(Iguales(cob.campo[0],"texture:") )
{
// Pongo primero el directorio con las texturas
strcpy(Materiales[M].textura,"dibus\\");
// Luego le añado el nombre de fichero sin path.
strcat( Materiales[M].textura,strrchr(cob.cad,'\\') );
// Cargo ahora la textura.
// Si falla algo lo dejo como si no tuviera.
if(!CargaTextura(&(Materiales[M].Tex),Materiales[M].textura, false))
Materiales[M].textura[0] = '\0';
cob.leelinea();
// Cargo offset y repeticion de la textura.
Materiales[M].tOffset[0]=atof(strtok(cob.campo[1],",") );
Materiales[M].tOffset[1]=atof( strtok(NULL,",") );
Materiales[M].tRepite[0]=atof( strtok(cob.campo[3],",") );
Materiales[M].tRepite[1]=atof( strtok(NULL,",") );
}


Puede que no te cargue la textura si lo busca en un directorio llamado "dibus" y tu no la tienes ahí.

Prueba a modificar el código.
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 14-11-2009 19:15 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
hola, yo de nuevo, mira no hay caso no me carga la textura del rinoceronte. te envio unos link de las pruevas que fui haciendo y como tengo el codigo, tmbien te mando el link del codigo del avion entero para que veas bien como tng las carpetas, la carpeta dibus tmb la puse por todos lados pero nada.

source ( Yo uso visual c++ 6.0, win xp sp3),si lo ejecutas apreta la "n" asi sale el fog, tng un problemita con eso y se ve todo negro, cuando apreta "n" lo desactivas. para ejecutar habrir el archivo --> "main.dsp"
http://www.filefactory.com/file/a1bh6d7/n/avion_version_5.rar

puesto asi me tira error
http://img265.imageshack.us/img265/8406/dibujojn.jpg

no tira error pero noc arga nada
http://img42.imageshack.us/img42/6945/dibujo1hl.jpg

imagen de como tengo las carpetas
http://img526.imageshack.us/img526/4899/dibujo5bt.jpg

imagen de como veo el rinoceronte
http://img40.imageshack.us/img40/9499/vistanb.jpg
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 15-11-2009 02:35 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 79
Localización
Así, derepente, veo dos fallos en el código y otro de otro tipo.

Cuando insertes una cadena de caracteres en el código, para el caracter \ usa siempre \\.
Si usas una sola barra el compilador se creerá que es un caracter especial como \t(tabulador), \0(fin de cadena) u otro cualquiera; con dos barras el compilador sabrá que lo que quieres es el caracter \.

La función strrchr(...) busca la última aparición del caracter que le dices (por eso va entre comillas simples y no dobles, no es una cadena si no solo un caracter) y retorna un puntero al punto de la cadena donde lo encuentra. Una explicación mejor: http://www.conclase.net/c/librerias/funcion.php?fun=strrchr

La función strrchr(...) se usa para buscar el último caracter '\\' y por tanto eliminar el path del nombre del fichero que viene dentro del fichero .COB, el del modelo.
No puedes pasar como segundo parametro de esta función una cadena, solo un caracter.

El ultimo fallo que veo es que el nombre del fichero de textura en el modelo (el que se tiene que cargar) es "RHINO.jpg" y tu fichero de textura se llama "rino.jpg". No coinciden.

Suerte.
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 15-11-2009 02:43 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 79
Localización
Otra cosa, por si acaso.
Mejor es usar paths relativos a los ficheros y si puede ser, sin espacios en blanco (suele ser fuente de problemas al tratar las cadenas).
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 15-11-2009 17:33 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
hola, bueno gracias jaja, ahora quedo¡¡¡¡¡¡¡¡¡¡¡¡
mira--> http://img4.imageshack.us/img4/33/64578697.jpg
IP Logged
Página # 


Powered by ccBoard




Banner
Banner