Este documento resume las principales alternativas y librerías para el desarrollo de aplicaciones gráficas 3D en dispositivos móviles. Describe las plataformas más populares como Android, iOS, Windows Phone y BlackBerry, así como librerías gráficas como OpenGL ES, M3G y Tiny Graphics Engine. Explica las ventajas e inconvenientes de cada opción y provee ejemplos de su uso en diferentes dispositivos.
Cuadro comparativo de sistemas operativos primitivos y libres
Artec alternativas moviles
1. Análisis de Alternativas para el Desarrollo de Aplicaciones Gráficas 3D sobre Dispositivos Móviles SeminarioMáster Computación Avanzada y Sistemas Inteligentes Rubén Talón Argente
2. Índice de Contenidos 1 Introducción Alternativas y plataformas actuales Librerías gráficas 3D IDE de programación Tipos de aplicaciones Nuestras Recomendaciones Conclusiones 2 3 4 5 6 7
3.
4. Prácticamente hoy en día se parecen a diminutos computadores capaces de procesar grandes cantidades de información
5.
6. 1 Introducción Evolución Gráfica 1998 2000 2002 2005 2007 2009 2008 2010 M3G – OpenGL ES OpenGL ES 1.1 – OpenGL ES 2.0 Java2D
7. Índice de Contenidos 1 Introducción Alternativas y plataformas actuales Librerías gráficas 3D IDE de programación Tipos de aplicaciones Nuestras Recomendaciones Conclusiones 2 3 4 5 6 7
8. 2 Plataformas Actuales Arquitectura monolítica (núcleo escrito en C) 2.1 Máquina virtual Dalvik para traducir el código a su lenguaje nativo Programación en Java con la alternativa de utilizar NDK para C Biblioteca de gráficos 2D y 3D basada en OpenGL ES Primeros móviles: HTC Dream y HTC Magic. Actualmente funciona en una amplia variedad de móviles de distintas compañías: Motorola, Samsung, HTC, LG, etc. 2.2 EVOLUCIÓN 1.0 1.1 1.5 1.6 2.0/2.0.1 2.1 2.2
9. 2 Plataformas Actuales Mucha documentación y ejemplos Cuidado con quedarnos sin memoria Fácil de programar Depuración en el emulador y móvil Diseño complejo de interfaz Fragmentación Fácil publicación de software en el Android Market Android 2.1 en un Motorola Milestone EVOLUCIÓN 1.0 1.1 1.5 1.6 2.0/2.0.1 2.1 2.2
10. 2 Plataformas Actuales Sistema optimizado para dispositivos de baja batería Desarrollo en C++ Arquitectura basada en micronúcleo escrito en C++ Ampliamente extendido Política de licencias: Eclipse PublicLicense (EPL) Symbian OS 9.4 y Symbian^3 EVOLUCIÓN S60 9.3 ^1 S60 9.2 ^2 ^3
11. 2 Plataformas Actuales Soporte de máquina virtual java Buena gestión de memoria Complejidad en el desarrollo Los emuladores no disponen de todas las características reales de los móviles Actualmente se pueden desarrollar interfaces con Qt Symbian^3 en un Nokia N8 EVOLUCIÓN S60 9.3 ^1 S60 9.2 ^2 ^3
12. 2 Plataformas Actuales Open Source con componentes propietarios Interfaz gráfica basada en GNOME Plataforma desarrollada por Nokia basada en el Sistema Debian Arquitectura de núcleo monolítico Linux Utilizado en Nokia 770, N800, N810 y N900 EVOLUCIÓN 4.0 5.0 6.0
13. 2 Plataformas Actuales Incompatibilidades entre SDKs en diferentes versiones Complejo desarrollo y ejecución Utilización de Qt Utilización de las herramientas proporcionadas por Debian Los SDK se adaptan a los nuevos terminales Plataforma desarrollada por Nokia Maemo en un Nokia N900 EVOLUCIÓN 4.0 5.0 6.0
14. 2 Plataformas Actuales Quiere llegar a los sistemas de vehículos y televisión Sigue una línea paralela a Maemo sin ser un reemplazo Surge de la unión de Maemo y Moblin MeeGo EVOLUCIÓN 1.1 1.0 1.2
15. 2 Plataformas Actuales Utilización de Qt Poca documentación Compatibilidad con Maemo Sistema aun en pruebas MeeGo en un Nokia N900 EVOLUCIÓN 1.1 1.0 1.2
16. 2 Plataformas Actuales Diseñado desde sus inicios para terminales de pocos recursos Desarrollo en C++ y .NET Compatibilidad con aplicaciones muy utilizadas de Microsoft Windows Ampliamente extendido Windows Mobile 6.5 y Windows Phone 7 EVOLUCIÓN 6.0 6.5 2003 5.0 CE 3.0 7.0
17. 2 Plataformas Actuales Desarrollo muy fácil y flexible Mucha documentación y ejemplos Sistema bastante lento Soporte Multi-Touch a partir de la última versión Interfaz en ocasiones incómoda EVOLUCIÓN 6.0 6.5 2003 5.0 CE 3.0 7.0
18. 2 Plataformas Actuales Funciona de forma nativa Posibilidad de usar C y C++ utilizando el PDK (Kit de desarrollo Plug-in) Lenguaje JavaScript junto con HTML y CSS EVOLUCIÓN 1.2 1.0/1.1 1.4 1.3
19. 2 Plataformas Actuales Herramientas SDL y PDK Limitación de JavaScript Desarrollo Web básicamente Rápido desarrollo y Rápida ejecución Limitación de gráficos 3D WebOS en un Palm EVOLUCIÓN 1.2 1.0/1.1 1.4 1.3
20. 2 Plataformas Actuales Interfaz de usuario basada en gestos multi-touch Desarrollo en C, C++ y Objective-C Sistema derivado de Mac OS X Núcleo Híbrido (Micronúcleo + Servicios) Hay tres tipos de licencias: Universitaria, Estándar y Empresarial La Universitaria es gratuita y las demás se paga un porcentaje a Apple iOS 4.0 3.2.2 (iPad) EVOLUCIÓN 3.1 (iPhone 2G) 4.0 4.1
21. 2 Plataformas Actuales Se necesita un Mac para desarrollar aplicaciones Primeras versiones no soportan multitarea No soporta ni Java ni Flash Compatibilidad con HTML5 en últimas versiones Aplicaciones fáciles de portar entre iPhone, iPod y iPad iOS 4 en un iPhone 4 EVOLUCIÓN 3.1 (iPhone 2G) 3.2.2 (iPad) 4.0
22. 2 Plataformas Actuales Según Samsung, NO es un Sistema Operativo Plataforma con un kernel configurable Desarrollado por Samsung Desarrollo en C++ Bada OS EVOLUCIÓN 1.0.0.b3
23. 2 Plataformas Actuales SDK destinado a los desarrolladores libres Poca documentación Compatibilidad con Flash Pocos dispositivos Bada OS en un Samsung Wave EVOLUCIÓN 1.0.0.b3
24. 2 Plataformas Actuales Soporte nativo para correo corporativo Desarrollo en C, C++ y Java Sistema patentado por RIM BlackBerry OS 6 EVOLUCIÓN 5.0 6.0 4.5
25. 2 Plataformas Actuales Soporte para Java MIDP 1.0 y WAP 1.2 Sistema Multitarea Fragmentación de versiones Desarrollo utilizando plugin en Eclipse Poco atractivo para un desarrollador multiplataforma BlackBerry OS 6 EVOLUCIÓN 5.0 6.0 4.5
26. 2 Plataformas Actuales Independiente de cualquier equipo físico Sistema Operativo basado en Linux Problemas a la hora de conectar con la red Sistema de código totalmente abierto No hay controladores 100% funcionales Precio Licencias: 0€ Limo Linux
27. 2 Plataformas Actuales Subconjunto destinado a dispositivos móviles Programación en Java J2ME no es un Sistema Operativo Está muy extendido La máquina virtual de J2ME viene integrada con el sistema Symbian Presente en un amplio abanico de dispositivos sin importar la plataforma AJUSTES CLDC 1.0 MIDP 1.0 MIDP 2.0/2.1 CLDC 1.1
28. 2 Plataformas Actuales Fácil de programar Limitaciones de las APIs Conjunto amplio de APIs diseñadas Mucha documentación y ejemplos Recursos muy bajos en móviles Multiplataforma Incompatibilidad de APIs con algunas máquinas virtuales AJUSTES CLDC 1.0 MIDP 1.0 MIDP 2.0/2.1 CLDC 1.1
29. 2 Plataformas Actuales Otros, firmware propietarios Prácticamente todos disponen de una máquina virtual de J2ME Características según el fabricante Funciones básicas de manejo del dispositivo Algunos firmwares están desarrollados en Flash Sony Ericsson T610 Sony Ericsson W660 LG BL40
30. Índice de Contenidos 1 Introducción Alternativas y plataformas actuales Librerías gráficas 3D IDE de programación Tipos de aplicaciones Nuestras Recomendaciones Conclusiones 2 3 4 5 6 7
31. 3 Librerías gráficas 3D OpenGL ES Tiny Graphics Engine TIGRE Klimt Vincent 3D J2ME Microsoft M3G Direct3D
32. 3 Librerías gráficas 3D OpenGL ES es una API de bajo nivel para gráficos 2D y 3D en sistemas avanzados embebidos La principal diferencia entre las dos versiones es el soporte de Shaders en la 2.0 Existen varias versiones, las más utilizadas hoy en día son la OpenGL ES 1.1 y la OpenGL ES 2.0 Deriva de la API gráfica OpenGL. Se han eliminado módulos y características que los dispositivos móviles no pueden soportar por su bajo rendimiento Está muy bien documentado y estructurado, además, los comandos lógicos se han modificado para facilitar la tarea de programación
33. 3 Librerías gráficas 3D OpenGL ES 1.1 Vs OpenGL ES 2.0 iPhone 3GS SHADER: Procedimiento de sombreado e iluminación que permite especificar el renderizado de un vertex o de un pixel. OpenGL ES 1.1 OpenGL ES 2.0 OpenGL ES 1.1 OpenGL ES 2.0
34. 3 Librerías gráficas 3D Ejemplos en varias plataformas Qualcomm MSM7x30 con Android y un juego en OpenGL ES
35. 3 Librerías gráficas 3D Ejemplos en varias plataformas Demo OpenGL ES 2.0 en un Sony Ericsson Satio
36. 3 Librerías gráficas 3D Ejemplos en varias plataformas Demo juego OpenGL ES en un N900
37. 3 Librerías gráficas 3D Ejemplos en varias plataformas Demo juego OpenGL ES en HTC HD2
38. 3 Librerías gráficas 3D Disponibilidad OpenGL ES es la API oficial para algunos sistemas operativos
39. 3 Librerías gráficas 3D Basadas en OpenGL ES Tiny Graphics Engine (TIGRE) Librería de renderizado gratuita para Windows Mobile 5, 6, 6.1 y 6.5 Escrita en Managed C# y basada en la versión 3.5 de FrameWork Utiliza aceleración por hardware Actualmente existen dos versiones: Máxima flexibilidad: Modelo de cámaras, texturas, filtros, renderizado de texto, etc. Tigre 1.1 – fixed pipeline OpenGL ES Tigre 2.0 – dynamic pipeline OpenGL ES
40. 3 Librerías gráficas 3D Basadas en OpenGL ES Tiny Graphics Engine (TIGRE) Windows Mobile tiene un problema con OpenGL ES, ya que no forma parte del Sistema en si. Se necesitas drivers que comuniquen la parte hardware con la API Demo TIGRE en un HTC HD2
41. 3 Librerías gráficas 3D Basadas en OpenGL ES Vincent 3D Librería de renderizado gratuita Soporte para Symbian y Windows Mobile Utiliza aceleración por hardware Actualmente sigue dos proyectos, uno basado en OpenGL ES 1.x y el otro en OpenGL ES 2.0
42. 3 Librerías gráficas 3D Basadas en OpenGL ES Librería de código abierto Soporte para Windows Mobile , Symbian y PalmOS Está basada en Coin3D que a su vez es una librería basada en OpenGL Dispone de iluminación, primitivas básicas de OpenGL, vídeo de fondo, entre otras No soporta antialiasing
43. 3 Librerías gráficas 3D Basadas en OpenGL ES Windows CE PDA using PocketKnife's TGA-export function
44. 3 Librerías gráficas 3D Librerías para J2ME Mobile 3D Graphics (M3G) Librería escrita en Java destinada a dispositivos móviles de pocos recursos Contiene 30 clases para pintar una escena 3D compleja M3G y Java3D son dos APIs totalmente distintas e incompatibles Está tecnología está muy extendida. Prácticamente todos los móviles de soporte M3G y los que no se les puede instalar una máquina virtual de J2ME Actualmente M3G tiene dos versiones: La M3G 1.1 (JSR-184) y la M3G 2.0 (JSR-297) con soporte de Shaders para dispositivos potentes
45. 3 Librerías gráficas 3D Librerías para J2ME Mobile 3D Graphics (M3G) Si no se gestiona debidamente y si el dispositivo carece de recursos M3G va muy lento Las especificaciones recomiendan no sobrepasar los 1500 polígonos en pantalla Se pueden importar modelos creados en Maya, Blender o 3D studio con un pluginespecial Modelo final en un Nokia N95 Modelo SketchUp 3D Studio
46. 3 Librerías gráficas 3D Librerías para J2ME Mobile 3D Graphics (M3G) A pesar de las desventajas que presenta M3G podemos ajustarlo a cualquier dispositivo compatible haciendo que funcione con fluidez Podemos encontrar multitud de juegos con gráficos excelentes corriendo en móviles de pocos recursos debido a una buena gestión de la librería
47. 3 Librerías gráficas 3D Microsoft Direct3D Mobile Esta librería deriva de la Direct3D API basada en sistemas de escritorio y está optimizada para el uso en sistemas embebidos Se han eliminado algunos módulos de soporte 3D debido a la baja potencia de los sistemas móviles Al igual que OpenGL, el dispositivo tiene que soportar las características que nos da la API Demo Direct3D con unalibrería de física A diferencia de OpenGL estas librerías son propietarias
48. Índice de Contenidos 1 Introducción Alternativas y plataformas actuales Librerías gráficas 3D IDE de programación Tipos de aplicaciones Nuestras Recomendaciones Conclusiones 2 3 4 5 6 7
49. 4 IDEs de Programación Multiplataforma SDK Java aunque también acepta proyectos en C/C++ No necesita instalación Funcionalidad basada en módulos donde el usuario elige los que necesita Buena refactorización Multiplataforma SDK Java aunque también acepta proyectos en otros lenguajes. Necesita instalación Funcionalidad basada en módulos donde el usuario elige los que necesita Mejor soporte para aplicaciones Web
50. 4 IDEs de Programación IDE para sistemas Windows C, C++, C#, J#, .NET y otros Interfaz gráfica basada en Windows Forms Utiliza frameworks para el desarrollo de la interfaz
51. 4 IDEs de Programación IDE de Apple Compila código C, C++, Objetive-C y Objetive C++ Destinada a desarrollar interfaces gráficas IDE organizado en diferentes programas por separado Desarrollo obligado en ordenadores MAC
52. 4 IDEs de Programación Totalmente gratuito Es una herramienta para el desarrollo de aplicaciones Symbian Está basada en el IDE Eclipse añadiendo plugins para Symbian Gestiona el desarrollo Symbian mejor que el Visual Studio
53. 4 IDEs de Programación Qt Creator Desarrollo en C++ Buena gestión y refactorización Tiene un diseñador de interfaces pero es muy complejo Soporte para Windows, Linux y Mac Contiene un simulador para desarrollar aplicaciones para móviles
55. Índice de Contenidos 1 Introducción Alternativas y plataformas actuales Librerías gráficas 3D IDE de programación Tipos de aplicaciones Nuestras Recomendaciones Conclusiones 2 3 4 5 6 7
56. 5 Tipos de aplicaciones Prácticamente todas las aplicaciones desarrolladas para sistemas de escritorio pueden ser portadas a dispositivos móviles Actualmente las compañías intentan sacar el mismo producto tanto para sistemas de escritorio como para móviles Algunos Ejemplos:
57. 5 Tipos de aplicaciones ¿Qué tengo o debo utilizar para desarrollar mis aplicaciones? ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿
58. 5 Tipos de aplicaciones Aplicaciones tipo formulario con gráficos 2D Aplicaciones con interfaz 2D y objetos 3D Aplicaciones con servicios web Juegos 2D (Ej. Plataformas) Juegos 3D Aplicaciones que utilicen la cámara, GPS, Acelerómetros, Sensores, etc. Aplicaciones que utilicen todos los recursos multimedia (Ej. RA)
59. 5 Tipos de aplicaciones App Formularios Interfaz 2D Formularios simples de introducción de datos Imágenes estáticas Información visual muy simple para el usuario Feedback - iPhone Registros - iPhone Formularios – J2ME
60. 5 Tipos de aplicaciones App Formularios Interfaz 2D con objetos 3D Apoyo con elementos 3D Aporta más información visual al usuario Google Navigation - Android Nokia Maps - Symbian Interfaz – Palm WebOS
61. 5 Tipos de aplicaciones App Internety RA Aplicaciones Internet Intercambio de información con la red Conexión permanente a la red Aplicaciones estéticamente simples Spotify - iPhone ustream - Android Qik - Android
62. 5 Tipos de aplicaciones App Web y RA Realidad Aumentada Uso de todos los recursos del dispositivo Algunas aplicaciones se ayudan de internet para actualizar datos Urbanspoon - iPhone Layar - Android TAT Augmented - Android
63. 5 Tipos de aplicaciones Juegos Juegos 2D Gráficos 2D Pueden necesitar acceso a la red Ideales para dispositivos con pocos recursos J2ME Symbian WebOS Maemo
64. 5 Tipos de aplicaciones Juegos Juegos 3D Uso de librerías 3D del dispositivo Algunos juegos requieren dispositivos potentes Convivencia entre 2D y 3D en la mayoría de juegos J2ME iPhone Android
65. 5 Tipos de aplicaciones App con componentes Uso de la parte multimedia del dispositivo Uso de la cámara para manipular las capturas en tiempo real Uso del GPS para la localización Uso de sensores para aplicaciones especificas (niveles, luz, brújula) Compass - Android Speedometer - WM Cámara - Symbian GPS - Symbian
66. Índice de Contenidos 1 Introducción Alternativas y plataformas actuales Librerías gráficas 3D IDE de programación Tipos de aplicaciones Nuestras Recomendaciones Conclusiones 2 3 4 5 6 7
72. Índice de Contenidos 1 Introducción Alternativas y plataformas actuales Librerías gráficas 3D IDE de programación Tipos de aplicaciones Nuestras Recomendaciones Conclusiones 2 3 4 5 6 7
73. 7 Conclusiones Existen muchas alternativas a la hora de desarrollar aplicaciones para dispositivos móviles Actualmente los dispositivos se decantan por utilizar de forma nativa la librería OpenGL ES Hay una alta competitividad entre todas las empresas que se especializan en el desarrollo y nuevas tecnologías para dispositivos móviles A pesar de que la temática de todas las plataformas es similar cada empresa quiere desarrollar su software por separado en un mercado donde la más original y la que mejor sepa vender será la beneficiaria Es necesario saberse la tabla de relaciones (Plataforma-IDE) y las especificaciones del sistema a desarrollar
74. 7 Conclusiones Con nuestra experiencia hemos visto que el mercado tecnológico en desarrollar para tecnología móvil tiene un comportamiento tipo Onda Exige un esfuerzo adicional en información continua en el equipo de desarrollo