Ayuda con modelos 3D para Yeti3D, ¡Auxilio!

Started by folken, August 30, 2017, 06:44:50 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

folken

Hola el motivo de este post es que estoy haciendo mis modelos 3D, pero no logro cargarlos en Bennu con la extensión de yeti3d.dll, por lo tanto tampoco puedo cargarlos en el port de Dreamcast ni en la PlayStation2.

No se si estoy haciendo algo mal, o me falta algo en el modelo 3D para que Bennu pueda mostrarlo.  :'(

He probado con los modelos de los ejemplos de ColDev y solo puedo cargar esos, pero cuando intento cargar un modelo hecho por mi desde cero, o bajado de internet no me funcionan, el interprete de Bennu se cuelga.  :-\

Los modelos de ejemplo de L1nk3rn3l funcionan: mario.bin, modelo.bin

Pero cuando yo cargo los mios el programa se congela y tira una excepción de win32.

Al principio pensé que eran mis modelos 3D, pero bajé unos de internet en formato MD2, los converti con la herramienta que proporciona ColDev, pero sorpresa tampoco logra cargar, el programa se cuelga y tira el error de win32.  :-[

Ojala alguien pudiera ayudarme, estoy muy interesado en desarrollar varios juegos con Yeti3D pero no puedo cargar mis modelos 3D.


Disculparme si uso 3dsMax, pero no se usar otro Editor para trabajar con 3D, por lo cual hago mis modelos en 3dsMax y luego uso el Quake2 Model para texturizarlos y exportarlos a MD2,  aqui tengo un modelo de mi juego "ZOTH zombie invasion" que no he podido cargar en Bennu:




En un principio llegué a pensar que el error era por utilizar interpolación en las animaciones de los fotogramas,  o las curvas NURBS, ó que el modelo incluyera bones, después también pensé que era por excesivos vertices, pero el problema persiste aun con el objeto más simple, por ejemplo una primitiva, un cubo con no mas de unos 20 vertices.


Esto es los que hago para crearlos y exportarlos al Yeti3D:
pondré un ejemplo de un simple cubo de tierra para mostrar mi problema. 
============================================

1.- Creamos el cubo en "3d Studio Max 8.0", luego la exporto a formato (.3ds)




2. Con el Quake2 Model Editor v090 la importo, le pongo texturas y la exporto
a formato (.MD2) siguiendo las reglas del engine de id Tech-2, usar solo texturas de 64x64 pixeles a 256 colores en formato PCX.



3. Una vez teniendo el modelo en formato de MD2, procedo a cargarla con la herramienta de java proporcionada por ColDev, la convierto a formato (.O3D/BIN) para usarla en Bennu con Yeti3D:



Hasta este paso pensaba que el modelo 3D era correcto, ya que el exportador lo visualiza correctamente y lo exporta a (.O3D) ó tambien a un archivo (.BIN)

¡Pero cuando lo cargo en el programa de Bennu con la yeti3d.dll se cuelga!

Aqui está mi codigo:



include "yeti3d.h"
   
global   
filemodel;
yeti_gravity= -16;
TYPE_ENTITY_3D  mycam;
TYPE_ENTITY_3D pos; 
behavior=2;
contador=0;
end;


private
  res,i;
 
 
begin               

  SET_FPS(30,0);
  set_mode (YETI_SCREEN_WIDTH,YETI_SCREEN_HEIGHT,16);           
  graph= new_map(YETI_SCREEN_WIDTH,YETI_SCREEN_HEIGHT,16);
  SET_CENTER(file,graph,0,0);
  x=0; y=0; z=45;
 
  WRITE(0,10,20,0,"FPS: ");
  WRITE_INT(0,100,20,0,&FPS);
   
   filemodel= yeti_loadfile("media/cubo.bin");
   YETI_SETRENDERGRAPH(file,graph);
   
   YETI_LOADTEXTURE("media/textures.raw", "media/textures.pal");
   yeti_init( &mycam, "media/e1m4.y3d" );       
         
   crear_modelo();
   

       
  while ( !key(_esc)  )     
     IF (YETI_ENTITY_IS_VISIBLE(  pos))     //warning:  slow function  .. best use inside other (if) statement, not  inside from loop
        say("  entity is visible .. "+      (contador++));
     end
     
     if (key(_right))       
        mycam.tt += i2f(3);     
     end;     
     if (key(_left))       
        mycam.tt -= i2f(3);   
     end; 
     if (key(_UP))     
       mycam.xx += YETI_fixsin(mycam.t) >> 4;     
       mycam.yy += YETI_fixcos(mycam.t) >> 4;       
     end;     
     if (key(_down))
       mycam.xx -= YETI_fixsin(mycam.t) >> 4;
       mycam.yy -= YETI_fixcos(mycam.t) >> 4;
     end;
   
   YETI_ENTITY_DEFAULT(&mycam,0,0,60);
     
     
     
     frame;                       
  end;               

  let_me_alone() ;
 
  //free resources
  yeti_FREE();
end





process crear_modelo()
private
  I=1,tick=0;
 
begin 
     if (not yeti_addmodel(filemodel , &pos))
       return ;
     end;
     
     pos.x= i2f(10) ;
     pos.y= i2f(20) ;
     pos.z= i2f(1);
     //pos.scalemodel= 4.2;   //tiny model

    loop
        YETI_ENTITY_DEFAULT(&POS,0,0,60);
        frame;
    end
     

end;





¡Porfavor L1nk3rn3l ayuda!
:'(

¡Auxilio alguien que me pueda ayudar, llevo varias noches intentando resolver esto y no puedo!
:'(

¡Help, help, help!
:'( :'( :'(






Where reality ends, life begins!

l1nk3rn3l

#1
el port de YETI3D de dreamcast no esta terminado ....  y le faltan algunas cosas que el de ps2 si ...

yeti3d es igual en PS2 y PC..  OK..


en DC el YETI3D corre muy lento y no tiene algunas nuevas funciones.. toca usar opengl de DC .. asi que nos toca actualizar el yeti3d
en DC .. o por el momento no se puede usar en esta plataforma... hasta nuevo aviso..


aQUI hay modelos MD2 para probar
https://code.google.com/archive/p/otherfenixbennuprojects/downloads?page=2

Para estudiar los modelos/problema...

Por este medio comparte...

el modelo(s)  3ds, md2 y o3d

y el codigo prg que estas usando..

puedes usar, MEGA, MEDIAFIRE ,etc para compartir ficheros...


USA LA HERRAMIENTA MD2 VIEWER PARA EXPORTAR MODELOS MD2,
INCLUIDA EN EL ULTIMO PACK DE YETI3D  HABER SI PASA EL PROBLEMA..

DEBES CONVERTIR LA TEXTURA DEL MODELO DE PCX A BMP CON LAS HERRAMIENTAS GRAFICAS
INCLUIDAS EN EL BENNUPACK (NO CREO QUE EL PAINT DE WINDOWS HABRA PCX)


Aqui un modelo MD2 seleccionado al azar (DR Faustus) y funciona OK.. (de los modelos md2 de ejemplo que te mencione en este post)



Este modelo al importarlo quedo muy grande... entonces... como en el ejemplo de tomb raider modifique estas variables...

    pos.scalemodel= 0.5; // el modelo es grande , asi que escalarlo a la mitad
     pos.Fixz= -180;  //arreglar el modelo que esta desubicado (Z) al escalarlo, si esta muy por encima del piso...

folken

¡L1nk3rn3l eres GRANDE!  ;D , jejejeje cielos eres increíble amigo, tenías razón el problema era el convertidor a O3D, estaba usando el de Java. Así que acabo de usar el "MD2 Viewer" como tu dices y ¡Sorpresa funciona de maravilla!

Muchas gracias por responder tan rápido, ¡vaya cielos santo!, llevaba varias noches probando y nada, de nada, y tu me diste la respuesta en minutos, muchas gracias amigo.

Estoy muy feliz ya puedo crear mis modelos en 3DStudio Max y cargarlos en mis juegos de Bennu con tu port de Yeti3D.

Gracias por la info, pasaré mi juego solo a Windows y PS2, la versión para Dreamcast tal vez use solo el terreno de un (.y3d) y en lugar de modelos usaré sprites como el clasico DOOM II para MS-DOS. (hace días corrí un paseo y3d en mi Dreamcast a 320x240 y funcionó a buena velocidad suficiente adecuada como para portar el juego al estilo DOOM2).

Pero en Windows y PS2 ya podré usar modelos 3D, mil gracias L1nk, bueno seguiré con el video juego "ZOTH zombie invasion", jejeje seguramente tendré muchas más dudas con el Yeti3D, espero puedas seguir ayudandome cuando me atore.

Muchas, muchas gracias amigo L1nk y te doy karma, por todo tu software y herramientas que has creado, no cabe duda L1nk3rn3l eres el rey del 3D.

Saludos!!!!
;D ;D ;D

Aqui las screen del ejercicio del cubo en 3dsmax pasadas a Bennu/Yeti3d:

1. Herramienta convirtiendo el modelo MD2 proveniente de "3DStudio Max" + "Quake2 Model Editor" :




2. Modelo en formato (.BIN) cargado perfectamente en el programa Bennu:



Where reality ends, life begins!

Goku jr

Buenas
Perdona que interfiera en este hilo folken.
Pero..
Con Yeti 3d se pueden poner sprites en pantalla con la función graph?

Saludos!

folken

#4
Hola Goku  :D , hasta donde yo he probado el Yeti3D portado a Bennu por L1nk3rn3l, si se pueden agregar sprites en "graph=id_var", pero utilizando coordenadas (x,y) en la pantalla como si estuvieras creando un juego en 2D, aun cuando estés en un mapa 3d de Yeti, de esta manera un sprite se visualizará sin importar en que coordenadas del mapa3D te encuentres. con un FROM graph=r; END para crear una animación de sprite en 2D.

Pero si quieres agregar sprites en determinadas zonas del mapa 3D, debes usar las funciones creadas por L1nk para tal acción:



sprites1= YETI_LOADSPRITE("silla.o3d");  //Cargar el archivo del sprite
YETI_ADDSPRITE(sprites1 , &pos); //agregar el sprite
YETI_ENTITY_SETVISUAL(&pos, sp_width, sp_height, DRAW_MODE_COLORKEY); //mostrarlo en
el mapa de Yeti3D.



Ahora bien, si deseas agregar modelos 3D, basados en el formato MD2 del Quake2, tienes que convertirlos a (.BIN) con el "MD2 Viewer" como lo menciona L1nk. También puedes hacer tus propios modelos con programas como 3dStudio Max, Maya, Blender, Quake2 Model Editor, etc.


Siempre y cuando los puedas exportar a formato de mallas, yo por ejemplo uso el 3dsMax para
modelar, y después los Texturizo en el "Quake2 Model Editor v0.90", y por ultimo los convierto a
(.BIN) con la herramienta que proporcionó L1nk3rn3l.


Tengo que usar el "Quake2 Model" para convertir a (.MD2) porque hasta donde he probado convierte los modelos de mallas a modelos basados en vertices y caras, generando un archivo
tipo (.MD2) adecuado para ser convertido a (.BIN) el tipo de archivo requerido por Yeti3D. 


No hago los modelos con el "Quake2 Model", porque lo encuentro bastante rudo, crear un modelo usando solo vértices y caras, es en extremo tardado, hacer la figura más sencilla me llevaría horas enteras, en cambio en 3dsMax y otros editores 3D hay infinidad de herramientas y atajos para modelar (cuidado no abusar del uso de polígonos ni animaciones ya que el formato (.MD2) tiene sus limitaciones).


Un modelo lo agregas a tu juego en Bennu con Yeti3D así:



filemodel= yeti_loadfile("media/modelo.bin");
yeti_addmodel(filemodel , &pos);
    pos.x= i2f(10) ;
         pos.y= i2f(20) ;
    pos.z= i2f(1);
        //pos.scalemodel= 4.2;   //tiny model
YETI_ENTITY_DEFAULT(&POS,0,0,60);




En resumen puedes usar:


1. sprites normales 2D (cambiando el valor de graph con un FROM ---> END)
2. sprites de Yeti3D con la posibilidad de coordenarlos en el mapa3D.
3. modelos realmente 3D (basados en .MD2)


Espero haber aclarado tus dudas, y también espero estar en lo correcto, amigo L1nk si lees este post corrígeme si me equivoco en esta explicación.




Saludos!!!   ;D


P.D. En realidad apenas empiezo a utilizar las herramientas que ha creado l1nk, jejeje yo solo soy un newbie, en cambio L1nk, Splinter, Free, Wingate son los maestros.























Where reality ends, life begins!


folken

De nada compañero, cuando tengas dudas con gusto las vemos, o las preguntamos a los verdaderos maestros de la comunidad, yo siempre he recibido ayuda de ellos.

Saludos  ;D
Where reality ends, life begins!