Bennu GD - Open 3D module

Started by FreeYourMind, December 14, 2009, 11:27:59 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

a mi me gustaria tener una variable local a un proceso llamada "model" o algo asi, y que ahi tengas el id de un modelo 3d cargado, y que el engine se encargue de dibujarlo, tomando las variables del proceso x, y, z, size, etc... que tenga sus puntos de control, etc.
Y que se puedan cargar mundos tipo map, donde el proceso va a moverse... si tenemos eso seria fantastico.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Si, así esta echo. En mi engine tenia varios modelos, aqui lo que voy hacer es que lo mismo, pero con tantos id's como cargas uno ponga, como ocurre con las musicas o demás gráficos en Bennu, cada modelo tendra su id y podras cargar tantos cuantos se pueda. En mi engine tenia unos 10 pero el limite será la potencia de tu pc como es lógico. Un id por carga/modelo.

Windgate

Lo de las locales para los modelos: En Bennu3D yo uso file para el modelo y graph para la textura, pero luego siempre me añado además unas LOCAL más, para la posición y para la rotación 3D, estas últimas son todo float :P
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

FreeYourMind

He estado trasteando unas horillas más, y no estoy contento, pongo el resumen:

1 - No hay conflictos con el mod_video, pero si lo usas (he probado poniendo el ejemplo 3D en un juego Bennu ya echo), el programa te crea 2 ventanas separadas, una generada por open gl y otra por bennu. Tampoco seria problema si se usara sólo la de open gl pero que pudiera pintar en ella cosas de bennu.

2 - El loop del ejemplo 3d se sobrepone a todo, no deja que el programa de bennu reacione, por ejemplo a los comandos de botones definidos, como por ejemplo para hacer un let_me_alone y matar la funcion 3d.

3 - Lo unico que parece comunicarse, es que si llamas una funcion de bennu antes del ejemplo, que tenga un let_me_alone, esta si mata al proceso 3D, y ya no se ejecuta (pero como comente si este se llama antes, y lo intentes matar despues con un temporizador no lo hace, o sea, despues de vivo el proceso 3D controla todo lo démas, y si le doy al exit, con la tecla 'q' definida en el ejemplo 3d, se sale de las 2 pantallas y cierra toda la aplicación)

En resumen, como Open Gl controla las ventanas y se crea las suyas, lo tengo complicado para poder 'embutir' en una misma pantalla, funciones Open GL y funciones de bennu.... Se aceptan sujerencias, lo que pienso poder controlar por ahora es intercalar en una misma ejecución partes echas con bennu y partes echas con open gl, pero en ventanas distintas...

SplinterGU

tenes que reemplazar el engine, el sistema de eventos, y otras cosas mas...

no es tan simple, pero si vos haces toda la parte del 3D, lo demas lo puedo integrar yo.

lo que se necesitan son funciones simples para crear modelos como objetos, moverlos, posicionarlos en un mapa 3D...

luego el tema es que se tienen que integrar como procesos bennu, y hay que barrer la lista de procesos para renderizarlos o actualizarlos.

con respecto a dibujar solo el render bennu, eso no sera posible, lo que hay que hacer es un render 2d usando opengl.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Vale, yo sigo entonces creando funciones 3D sobre Open GL y despues cuando la cosa este más completa, te pones con su integración.

SplinterGU

si quieres por ahora olvidate del tema de los modelos como locales, solo crea modelos, muevelos, etc... en 1 pantalla (la del opengl, va bien)

con respecto a los eventos de teclado, mouse, etc... solo captura los de SDL y cuando estas con foco en la ventana de SDL.

si tienes codigo para irme pasando, cuando tenga un hueco de tiempo puedo ir viendo como podria integrarse o incluso quizas tirarte algunos tips que puedan servir para una buena integracion...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Este fin de semana a ve si termino algo, despues ya te comento, que tb ando liadillo.  ;D

FreeYourMind

Quote from: SplinterGU on January 18, 2010, 10:18:37 PM

con respecto a los eventos de teclado, mouse, etc... solo captura los de SDL y cuando estas con foco en la ventana de SDL.


Si te refieres que los eventos de bennu sólo funcionan si tienes su ventana focada, pues es que no funcionaban, yo tenia unmenu de opciones al ejecutar la ventana open gl, y la de bennu no respondia al teclado, me imagino que el loop de la otra hacia que no respondierá....

SplinterGU

los eventos deberian ir si tenes enfocada la ventana de bennu, no la de opengl... pero bueno, si estas en el modulo opengl en un loop, entonces bennu no esta funcionando hasta que salgas de ese loop... a menos que ese loop este en un thread...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Lo tengo paradillo, ya que fin de semana no lo he podido tocar, pero os pongo el resultado de esta media hora que le he dedicado:

He separao el ejemplo en algunas funciones, el mismo ejemplo de la foto ahora quedaria así en el prg:


BEGIN
    set_gl_window_mode(320, 240, 10, 10, "Open 3D - Demo");
    draw_gl_models();
    gl_loop();
END

Ahora me falta subdividir la draw_gl_models y poner las funciones del teclado tambien separadas. Aparte de la otra parte que llevo en paralelo que es la carga y visualización de modelos texturizados 3ds.

Le tengo que pegar con ganas y dejar de poner cuenta gotas por aqui  ;D

grisendo

Vaya! No había visto el post hasta ahora :)
Tiene muy buena pinta :D Sigue así!
Toma karmona

FreeYourMind

El merito es todo tuyo Grisendo por pasarme tu dll configurada en codeBlocks. La verdad lo tengo paradillo, porque la mayoria de curro  es adapartar funciones de OpenGL a funciones tipicas de Bennu, y la verdad no me motiva hacer de chino, pero ya veremos.

Windgate

Me cago en diógenes, voy a hacer un día de estos un tutorial de dlls... Cuando me ponga a hacer una :D

En serio, había por ahí un ejemplo de creación de dll que hizo DCelso e implementaba fibonacci, factorial y alguna estupidez más, partiré de ahí si me lo permite, que supongo que sí :P

Ánimo con el OpenGL, ahora mismo estoy echando de menos el double buffer en Bennu 3D que no me funciona, y en OpenGL viene casi de serie, será útil sin duda tener esa librería aquí.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

grisendo

No hombre, yo mérito poco, también me copié de una librería que había por ahí que sumaba enteros, floats y strings, aunque
era de fenix y tuve que depurar un poco copiándome la de DCelso :)

En cuanto a lo de que adaptar funciones... doy fe de que no motiva mucho jaja por eso tengo ahí paradillo también el mío...