1 / 25

Realización de un motor de render para dispositivos móviles basado en Irrlicht

Realización de un motor de render para dispositivos móviles basado en Irrlicht. Autor: Javier Meseguer de Paz Dirigido por: Antonio Berlanga de Jesús. Plan de la presentación. Introducción Estado del arte Definición del proyecto Implementación Resultados Trabajo Futuro Resumen

frey
Download Presentation

Realización de un motor de render para dispositivos móviles basado en Irrlicht

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Realización de un motor de render para dispositivos móviles basado en Irrlicht Autor: Javier Meseguer de Paz Dirigido por: Antonio Berlanga de Jesús

  2. Plan de la presentación • Introducción • Estado del arte • Definición del proyecto • Implementación • Resultados • Trabajo Futuro • Resumen • Demostración

  3. Introducción • ¿Qué es un motor de render? • Componente software encargado de generar y visualizar información gráfica • Abstrae los mecanismos de creación de gráficos Motor de render Sistema operativo Descripción de la escena cubo = cargar modelo “cubo.3ds” cubo.color = rojo visualizar API gráfica

  4. Introducción • Razones para usar un motor de render • Es reutilizable • Varias aplicaciones pueden compartir motor • Ejemplo: El UnrealEngine 3 es usado por 79 juegos • Abstrae la comunicación con el API gráfica • Independiza de ésta al resto de la aplicación • Facilita el mantenimiento de la aplicación • Como siempre que se separa el modelo de la vista

  5. Introducción • Motivación del proyecto • Las capacidades gráficas de los teléfonos móviles van en aumento • Ya hay móviles con GPU • No hay un motor de render para móviles gratuito equiparable a los existentes para PC • Y sería muy interesante tenerlos para: • Juegos • Visualización de mundos virtuales • Explorar nuevas interfaces • Otras aplicaciones que puedan usar 3D • De hecho, hay varios proyectos en marcha en esta misma Universidad que se beneficiarían de un motor de render para móviles

  6. Estado del arte • Motores de render para móviles • Comerciales • Casi todos son propietarios • El más famoso es: IdeaWorks 3D AirPlay • Gratuitos • HeroCraftHiTechMobileDragon • GLQuake / Quake II for Symbian OS

  7. Estado del arte • HeroCraftHiTechMobileDragon • Descartado por: • El aspecto de las demos • No haber podido ser ejecutado en el dispositivo

  8. Estado del arte • GLQuake/Quake II Enginefor Symbian OS • Descartado por: • Obsoleto en general • Difícil de usar y modificar • No es de propósito general (especializado en FPS) • Por esto, decidimos crear nuestro propio motor de render • Partiendo de un motor gráfico de código abierto para PC

  9. Estado del arte • Esto implica que teníamos que decidir: • Qué API gráfica usar • Qué motor de render de código abierto para PC migrar • A qué plataforma / sistema operativo • Usando qué dispositivo como referencia • Para tomar una decisión informada, estudiamos el estado del arte de todas estas tecnologías • ¡Especialmente la plataforma objetivo y el motor de render de PC!

  10. Estado del arte • La decisión de la plataforma afecta a todo lo demás • No hay vuelta atrás • No todas las opciones son posibles. Hay que comprobar que: • Sea posible desarrollar gratuitamente para la plataforma • Sea posible ejecutar un motor gráfico sin tener que certificarlo • Dentro de las opciones posibles, hay que valorar • Qué lenguajes de programación hay disponibles • Facilidades a la migración desde otras plataformas • Madurez de la plataforma • Popularidad de la plataforma

  11. Estado del arte • También especialmente importante qué motor migrar • Hay muchos motores de render de código abierto para PC • No obstante, destacan OGRE 3D e Irrlicht • OGRE 3D es más avanzado, pero más complejo • Irrlicht es más sencillo, pero más rápido y simple • Tiene menos líneas de código dependiente del API • No tiene dependencias externas • Intentos de migración • OGRE 3D fue migrado a Windows Mobile hace mucho. • Ha habido dos intentos de migración de Irrlicht • mIrrlicht • Irrlicht-em

  12. Definición del proyecto • Planteamiento formal • Migrar Irrlicht 1.4.1 a S60, tomando como dispositivo objeto el Nokia N95 8Gb • ¿Por qué Irrlicht? • Es más simple • ¿Por qué el Nokia N95 8Gb? • Es muy potente, tiene aceleración gráfica, y teníamos disponibilidad de uno • ¿Por qué S60? • Es la plataforma usada por el N95 • Hay disponible un capa POSIX y una STL (OpenC/C++) • Esto implica que el API gráfica a usar es OpenGL ES 1.x

  13. Definición del proyecto • Requisitos • Conseguir una versión funcional • Mantener la compatibilidad con la versión oficial y el resto de sistemas operativos • Fuera de ámbito • Implementar nuevas técnicas • Que funcione en otros dispositivos • Incluyendo el emulador • Arreglar bugs

  14. Implementación • Identificar las partes dependientes del API gráfica y la plataforma • API gráfica: Driver • Plataforma: Device • Crear el driver de OpenGL ES 1.x • Crear el device para S60

  15. Implementación – Driver OGLES • Driver de OpenGL ES 1.x • Partimos del driver de OpenGL • Algunas diferencias pudieron salvarse: • Carencia de primitivas • No hay quads ni polígonos • Carencia de modos de rasterización • No hay GL_LINES ni GL_POINTS • Carencia de soporte para los formatos de color de Irrlicht • Otras

  16. Implementación – Driver OGLES • Otras no: • Carencia de shaders • Usado para técnicas avanzadas como el bump-mapping • Carencia de ciertos modos de envoltura • Prácticamente no se usa... • Carencia de ciertos modos de iluminación • Reflexión especular dependiente del punto de vista • Carencia de generación automática de coordenadas de texturas • Se usa para simular reflexiones

  17. Implementación – Device S60 • Peculiaridades de la programación Symbian • Hay tres compiladores • WINSCW – genera x86 para el emulador • GCC-E – genera ARM, gratuito y limitado • ARM RVCT – genera ARM optimizado, de pago y el más completo • El API de Symbian está basado en Frameworks • Afortunadamente no es obligatorio usarlos • No obstante, eso está menos documentado • Symbian es resultado de una evolución • Hay que documentarse mediante ejemplos, porque los nombres de las cosas ya no corresponden con lo que son

  18. Implementación – Device S60 • Antes de crear el device, hay que hacer algunos cambios • Algunos debidos a que el compilador es de Symbian C++ y no ANSI C++ • Ejemplo: Problemas con definiciones en los headers • Otros debidos al cambio de compilador • Ejemplo: Cómo compactar las estructuras • Otros debidos al cambio de plataforma • Ejemplo: Las convenciones de llamada

  19. Implementación – Device S60 • Finalmente podemos crear el device • Tiene que poder hacer lo siguiente: • Gestionar el sistema de ficheros • Gracias a OpenC++ se puede usar POSIX para ello. • Crear la ventana • Obtener el modo de video • Dormir la aplicación

  20. Implementación – Device S60 • Manejar eventos • Relacionados con las ventanas • Entrada de datos del usuario • Es muy distinta en PC y en el N95 • Falta de teclado QWERTY • Cuando se requiere inmediatez: modo normal • Cuando se requieren todas las letras: modo multi-tapping • Falta de ratón • Se emula con el teclado

  21. Resultados Y con eso terminamos la implementación. Veamos los resultados.

  22. Resultados • Balance de características • Hemos perdido (en orden de importancia) • Shaders (y por tanto normal mapping) • Reflejos • Reflexión especular dependiente de la vista • Modos de envoltura de texturas • Pero conservamos • Soporte para múltiples formatos de fichero • Soporte para 2D • Un buen sistema de partículas • Una GUI • Detección de colisiones básica • Gestión de escena • …

  23. Trabajo futuro • Actualizar la versión de Irrlicht a la última • En lo que cambiábamos la versión 1.4.1 ha salido la 1.5 • Optimizar el driver de OpenGL ES 1.x • Añadir nuevas características • Bump-mapping, luces direccionales, bloom, refracción… • Añadir soporte para OpenGL ES 2.x • Añadir soporte para otras plataformas • Añadir soporte para otros dispositivos • …

  24. Resumen Hay muchas mejores posibles aún

  25. Resumen • Queríamos un motor de render para móviles gratuito • No encontramos ninguno de calidad • Decidimos portar uno de PC a una plataforma móvil • Concretamente Irrlicht a S60 • Para ello hubo que crear • Un driver de OpenGL ES • Un device para S60 • Logramos un motor para móviles que conserva casi todas las características del Irrlicht original

More Related