Tras tener resuelto el tema del terreno, pasamos con la implementación de los vehículos. Hasta el momento, si miráis el código, todo está hecho muy ad hoc mientras vamos experimentando y asimilando las APIs y configuración de los motores. Cuando veamos que funciona pasaremos a la generalización y automatización.
Por ejemplo en la captura vemos un vehículo sobre el terreno. El vehículo tiene una configuración física sencilla basada en una caja para el chasis y en 4 esferas para las ruedas. Las cajas de alambres que se aprecian son la representación visual de las boundingbox de estas geometrías físicas (siempre en su perfecta horizontalidad). Se aprecia como el vehículo es posado en la inclinación del terreno, si bien no es preciso en cuanto al contacto de las ruedas con el terreno es debido a que la posición de la geometría física respecto a las ruedas está ajustada de forma numérica rápida y manualmente. La idea es que en un futuro ésto sea ajustado semi-automáticamente mediante un sencillo editor, ya que uno puede de forma sencilla automatizar la definición de una geometría física similar a la del modelo mediante malla o boundingbox, pero en el momento que deseemos mover las ruedas independientemente del chasis deberán ser representadas como un modelo a parte habiendo perdido así la posición relativa respecto al chasis. Y ésto va a suceder para cualquier elemento independiente que incorpore un objeto complejo como es el caso de un vehículo.
Por lo tanto, implementaremos un editor que nos permita cargar modelos, asignarles una configuración geométrica de su física y posicionarlos entre sí de forma relativa. Este editor deberá volcar dicha información a fichero, al igual que sucederá con la creación de los escenarios, por lo tanto en tiempo de simulación no habrán más ajustes ad hoc y todo será puesto en escena de forma automática.
El siguiente paso va a ser dotar de movimiento a las ruedas para poder pasear el cochecito por el terreno y empezar a hacer pruebas con los ajustes de "animación" (realmente con ajustes de la configuración del motor físico, ya que la animación en este caso es totalmente indirecta).
domingo, 11 de mayo de 2008
Vehículos: primeros pasos
domingo, 20 de abril de 2008
Inauguración
¡¡Buenas y bienvenid@s!!
Somos dos estudiantes de Ingeniería Informática de la Universidad de Alicante y como proyecto de fin de carrera (PFC) estamos desarrollando un simulador de educación vial realista en un entorno tridimensional con simulación física.
Los motivos principales que nos han animado a abrir este blog son para empezar, que sirva a nuestros profesores de monitorización de la actividad del proyecto y como incentivo de generación de documentación. Por otro lado, aun habiendo bastante documentación de los motores 2D/3D y físico, no hay muchos ejemplos, de modo que cualquier problema (y su solución) que encontremos al utilizar Irrlicht y Open Dynamics Engine (ODE) lo publicaremos aquí, como por ejemplo: la coordinación entre la física (ODE) y el render (Irrlicht), el sistema de ventanas 2D (Irrlicht), etc.
Breve descripción del proyecto
Simulador de Conducción
Se pretende implementar un simulador de conducción realista en un entorno tridimensional con simulación física. El propósito es servir de ayuda para el aprendizaje en la educación vial. Por ello se centrará la atención en conseguir una simulación que se ajuste a la realidad en la mayor medida posible, tanto del entorno como del vehículo.
El vehículo tiene dos enfoques importantes en su implementación. Por un lado tenemos el reto de conseguir una configuración de la simulación física que se ajuste a la realidad del mundo en el que vivimos, y dada la complejidad que muestran los motores de simulación física actuales supondrá una gran dedicación llegar a comprender todas las variables que entran en juego para un acabado lo más fiel posible. Por otro lado tenemos todas las características propias del vehículo con las que el usuario debería poder interactuar: uso del volante y cambio de marcha, indicadores del salpicadero, configuración de espejos retrovisores, uso del cinturón, activación de luces y parabrisas... Incluso sería muy interesante llegar a implementar características como la posibilidad de revisar el estado del coche (aceite, refrigerante..., dureza de los amortiguadores), pinchazos y reventones de rueda o un piloto averiado.
Respecto al entorno, se centrará la atención en la configuración de la señalización vial: carreteras, señales de tráfico, semáforos (su estado y sincronización), agentes de policía, etc. Además será necesario incorporar a la simulación elementos dinámicos y ajenos al usuario como tráfico o peatones. Y de forma ideal añadir efectos climáticos, como la posición del sol o entornos de lluvia y nieve, donde la visibilidad y comportamiento del vehículo son especialmente relevantes.
Editor de escenarios basado en mapas
Teniendo claro el propósito del simulador, cobra cierta importancia la posibilidad de realizar la simulación en entornos virtuales que representen localizaciones reales, aportando así una experiencia más cercana y familiar a la realidad. Para ello entra en juego el diseño de un editor que facilite la tarea de recrear en 3D la realidad por la que nos movemos. Un buen comienzo es partir de un mapa 2D del entorno, dado que actualmente disponemos de aplicaciones online que nos facilitan la obtención de dichas imágenes.
El editor deberá ofrecer herramientas para que a partir de dichas imágenes sea posible definir el entorno y sus límites para el simulador: definir carreteras, edificios, parques, zona montañosa... Así como la posibilidad de poder modificar el relieve del terreno. Otro tipo de herramientas del que debe estar dotado es de toda la colección de señalización vial. Ya que no parece posible la obtención de dichos elementos desde los mapas, será tarea del usuario del editor, la correcta colocación de éstos en el entorno.
Implementación
Tanto el simulador como el editor estarán basados en el motor gráfico Irrlicht, ya que éste proporciona la recreación de entornos tridimensionales, entornos 2D y entorno de Ventanas, todo ello integrable simultáneamente y de alta calidad visual. Además soporta un gran número de formatos gráficos tanto de objetos 3D como de imágenes 2D, con lo que da libertad e independencia en lo referente al diseño visual.
La física estará basada en el motor ODE, el cual nos aporta simulación física de objetos rígidos de forma bastante óptima y con buen nivel de precisión.Para el sonido, lo más práctico será echar mano del proyecto IrrKlang, el cual pertenece a los desarrolladores del motor gráfico Irrlicht, y tenemos asegurada su sencilla integración y su facilidad de uso por semejanza en estructuras de APIs.