Main Menu

BENNU3D

Started by l1nk3rn3l, November 12, 2009, 02:20:44 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

l1nk3rn3l

#120
se me olvido decir que la ultima version incluye nuevas funciones de rotacion
desearia que windgate me diga si esa es ta correcta....

ver cambios .txt

Windgate

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

Windgate

Las funciones M8E_MODELROTATIONX ( ), M8E_MODELROTATIONY ( ), M8E_MODELROTATIONZ ( )

Funcionan correctamente y rotan el modelo según los ejes del modelo, lo hacen de forma relativa, esto quiere decir que si sólo deben aplicarse cuando se quiere rotar. Para que el modelo mantenga la rotación deben invocarse con 0 como parámetro.

Vendrá muy bien, pero ahora falta una forma de poder rotar según los ejes del mundo. La función original M8E_MODELROTATION ( ) rotaba la Y y la Z según los ejes del mundo, pero la X lo hacía según los ejes del modelo. M8E_MODELROTATION ( ) debería modificarse para que la rotación en X se haga según los ejes del mundo y así ya estaría solucionado el asunto.

Gracias l1nk, te doy el karma que te mereces.
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

Windgate

He estado intentando resolver el problema del avance en las 3 dimensiones teniendo en cuenta la libre rotación de un objeto, para un juego de aviones. Dejo aquí el código con el que llevo peleándome unas horas, no consigo que funcione 100% bien:

                        // Avance en X según la rotación en Y y en Z
position.x += velocidad * cos ( 1000*rotation.y ) * cos ( 1000* rotation.z );

// Avance en Y según la rotación en Z
position.y += velocidad * sin ( 1000*rotation.z );

// Avance en Z según la rotación en Y y en Z
position.z -= velocidad * sin ( 1000*rotation.y ) * cos ( 1000* rotation.z )


Teóricamente esas son las ecuaciones del movimiento, deberían ser correctas teniendo en cuenta que la rotación en X no afecta al avance, sólo al desplazamiento lateral y al ascenso/descenso. Pero como digo no me funciona bien :(

¿Sería posible incluir unas funciones M8E_POSMODELX ( ) , M8E_POSMODELY ( ) , M8E_POSMODELZ ( ) que se ocupasen de resolver el avance en cualquiera de los ejes DEL MODELO? Es lo que yo estoy intentando, pero no me funciona y se me ha calentado ya el cerebro de pensar y probar...
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


Windgate

#125
Toma este otro karma más que merecido y toma aquí la descarga directa de la prueba viviente de que la rotación y el avance en 3D funciona y permite vuelo libre en las 3 dimensiones:

DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/Air3D/Air3D%200.0.6%20rotacion%20y%20posicion%20absoluta.zip

Teclas: A y D para girar hacia los lados, W y S para subir y bajar, Q y E para rotar sobre sí mismo.

Celebrémoslo

EDIT: Versión alternativa sin terrenos con miles de polígonos, por si la versión anterior no os alcanza el rendimiento deseado:

http://trinit.es/DescargaDirecta/Bennu3D/Air3D/Air3D%200.0.6%20rotacion%20y%20posicion%20absoluta.zip
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

l1nk3rn3l

si gracias ya lo subi a la pagina de bennu3d .. todos los ejemplos , gracias a todos..

por cierto los fuentes de bennu3d ya estan disponibles ...

josebita

Al intentar compilar la última versión del Bennu3D con el codeblocks, obtengo el siguiente error:
/home/joseba/cvs/3DM8E/3DM8E.cpp|1108|error: 'RepairBoundingBox' was not declared in this scope|.
¿Alguna idea de cómo solucionarlo?.

l1nk3rn3l

creo que esta funcion esta en el wrapper de fisica de bullet

si no lo encuentras mejor esa linea colocale comentarios

y listo  //
//
/*
*/

:)

josebita

Sí, tienes razón. Es parte de Bullet. De todas formas, si intento compilar sin físicas, me da un error de símbolos no encontrados al ejecutar. Mañana sigo intentándolo.


josebita

Bueno, debo decir que la librería me compila (casi) sin problemas.
A la hora de compilar los juegos con el bgdc, obtengo el siguiente error:
/home/joseba/cvs/3DM8E/bin/bennu3d.so: undefined symbol: _ZN25btSimulationIslandManagerC1Ev
btSimulationIslandManager es algo que se usa en las librerías BulletCollision y BulletDynamics, pero no entiendo muy bien el error. ¿Ideas?.

josebita

Última Bennu3D compilada para linux con motor de físicas incluído:
http://www.megaupload.com/?d=WXT2VDSE

Un par de notas:
* No la he podido probar porque la acabo de compilar en mi netbook que tiene una gráfica asquerosa y el asunto se rompe. Espero poder probarla el lunes en un ordenador con una Nvidia decente.
* No sé qué versión de Bullet habeis usado, link. Tenía que poner que era alguna versión en los scripts de compilación, así que he puesto que es la 2.76 (la última disponible en la web de bullet).
* He modificado los archivos CMakeLists.txt del directorio bullet para que puedan generar Makefiles y por tanto compilar. Os agradecería que intentarais integrar los cambios en vuestra versión, así me será más fácil recompilar futuras versiones.
* He creado otro target de compilación en el proyecto de CodeBlocks llamado "Release_linux" con las opciones apropiadas para compilar bennu3d en linux. He renombrado el target por defecto a "Release_win32". Os agradecería que también integrarais este cambio, por lo mjismo de antes.

Pues eso, que espero que sea útil y que si alguien lo prueba con una tarjeta gráfica decente en linux y le funciona, que avise.

josebita

#132
La misma Bennu3D compilada con 3D por software. Es leeenta, pero acabo de comprobar que funciona sin problemas en linux y los juegos funcionan cambiando la librería anterior por ésta.
Símplemente he añadido un target de compilación nuevo que define la variable SOFT3D y el siguiente código al 3DM8E.cpp
[code language="C"]#ifdef SOFT3D
   micontrolador = video::EDT_BURNINGSVIDEO;
#endif[/code]
en la función fx_Iniciar_A()

Debería funcionar sin más que reemplazar la bennu3d.so que venía en el paquete anterior.
http://www.megaupload.com/?d=6RO06GBW

osk


Drumpi

Juer, Josebita, estás imparable esta semana, me voy a tener que ir por ahí más a menudo :D :D :D
Descargando para una posterior prueba. Muchas gracias por el esfuerzo.
Josebita.Karma++;
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)