análisis de alternativas para el desarrollo de aplicaciones gráficas 3d sobre dispositivos...
Post on 07-Jun-2015
800 Views
Preview:
TRANSCRIPT
Análisis de Alternativas para el Desarrollo de Aplicaciones
Gráficas 3D sobre Dispositivos Móviles
Rubén Talón Argente
Índice de Contenidos
Introducción
Alternativas y plataformas actuales
Librerías gráficas 3D
IDE de programación
Tipos de aplicaciones
Nuestras Recomendaciones
Conclusiones
1
2
3
4
5
6
7
Introducción1
Los teléfonos móviles han experimentado una evolución
tecnológica muy importante durante esta última década
Prácticamente hoy en día se parecen a diminutos
computadores capaces de procesar grandes cantidades de
información
Sus prestaciones gráficas no se quedan atrás y han
permitido que los teléfonos móviles se conviertan en una
pequeña plataforma de trabajo, ocio y diversión
1983 1999 2000 2002 2005 2007 2009 2010 2011
MP3MP3
VídeoVídeo
Gráficos 3DGráficos 3D
GPSGPS
TouchTouch
Evolución Tecnológica
Introducción1
3D3D
TABLETS
Evolución Gráfica
M3G – OpenGL ES OpenGL ES 1.1 – OpenGL ES 2.0Java2D
1998 2000 2002 2005 2007 2008 2009 2010 2011
Introducción1
Índice de Contenidos
Introducción
Alternativas y plataformas actuales
Librerías gráficas 3D
IDE de programación
Tipos de aplicaciones
Nuestras Recomendaciones
Conclusiones
1
2
3
4
5
6
7
Plataformas Actuales2
Programación en Java con la alternativa de utilizar NDK para C
Biblioteca de gráficos 2D y 3D basada en OpenGL ES
Máquina virtual Dalvik para traducir el código a su lenguaje nativo
1.1 1.5 1.6 2.0.1 2.1 2.2
EVOLUCIÓN
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.
Arquitectura monolítica (núcleo escrito en C)
2.3
3.0
Android 2.3
Android 3.0
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
Android 2.3 en el Samsung Galaxy S2
Fácil publicación de software en el Android Market
Plataformas Actuales2
1.1 1.5 1.6 2.0.1 2.1 2.2
EVOLUCIÓN
2.3
3.0
S60 9.3 ^1S60 9.2 ^2 ^3
Sistema optimizado para dispositivos de baja batería
Desarrollo en C++
Arquitectura basada en micronúcleo escrito en C++
Ampliamente extendido
EVOLUCIÓN
Symbian OS 9.4 y Symbian^3
Política de licencias: Eclipse Public License (EPL)
Plataformas Actuales2
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
S60 9.3 ^1S60 9.2 ^2 ^3
EVOLUCIÓN
Symbian^3 en un Nokia N8
Plataformas Actuales2
Futuro incierto
Open Source con componentes propietarios
Interfaz gráfica basada en GNOME
Plataforma desarrollada por Nokia basada en el Sistema Debian
4.0 5.0 6.0
EVOLUCIÓN
Arquitectura de núcleo monolítico Linux
Utilizado en Nokia 770, N800, N810 y N900
Plataformas Actuales2
Utilización de Qt
Incompatibilidades entre SDKs en diferentes versiones
Utilización de las herramientas proporcionadas por Debian
Los SDK se adaptan a los nuevos terminales
Complejo desarrollo y ejecución
4.0 5.0 6.0
EVOLUCIÓN
Maemo en un Nokia N900
Plataforma desarrollada por Nokia
Plataformas Actuales2
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 (Qt-based framework + Intel Moblins)
1.0 1.1 1.2
EVOLUCIÓN
MeeGo
Plataformas Actuales2
El núcleo es una distribución de Linux
1.1.3
Modo experimental para desarrolladores
Utilización de Qt
Poca documentación
Compatibilidad con Maemo
Sistema aun en pruebas
EVOLUCIÓN
MeeGo en un Nokia N900
Plataformas Actuales2
1.0 1.1 1.21.1.3
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
7.02003 5.0CE 3.0 6.0 6.5
EVOLUCIÓN
Windows Mobile 6.5 y Windows Phone 7
Plataformas Actuales2
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
7.02003 5.0CE 3.0 6.0 6.5
EVOLUCIÓN
Plataformas Actuales2
Primera actualización con problemas
Multitarea
Posibilidad de usar C y C++ utilizando el PDK (Kit de desarrollo Plug-in)
Lenguaje JavaScript junto con HTML y CSS
EVOLUCIÓN
Plataformas Actuales2
HTML5
Funciona de forma nativa
1.0/1.1 1.2 1.3 1.4 1.4.5 2.0
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
EVOLUCIÓN
WebOS en un Palm
Plataformas Actuales2
1.0/1.1 1.2 1.3 1.4 1.4.5 2.0
Interfaz de usuario basada en gestos multi-touch
Desarrollo en C, C++ y Objective-C
Sistema derivado de Mac OS X
3.1 (iPhone 2G)
3.2.2 (iPad)
4.0
EVOLUCIÓN
iOS 4.2.1
Núcleo Híbrido (Micronúcleo + Servicios)
Hay tres tipos de licencias: Universitaria, Estándar y Empresarial
4.1
La Universitaria es gratuita y las demás se paga un porcentaje a Apple
Plataformas Actuales2
4.34.2
4.2 4.3
No soporta ni Java ni Flash
Compatibilidad con HTML5 en últimas versiones
Primeras versiones no soportan multitareaSe necesita un Mac para desarrollar aplicaciones
EVOLUCIÓN
iOS en un iPhone 4
Aplicaciones fáciles de portar entre iPhone, iPod y iPad
Plataformas Actuales2
3.1 (iPhone 2G)
3.2.2 (iPad)
4.0 4.1 4.34.2
4.2 4.3
Según Samsung, NO es un Sistema Operativo
Plataforma con un kernel configurable
Desarrollado por Samsung
Desarrollo en C++
1.0.0.b3
EVOLUCIÓN
Bada OS
Plataformas Actuales2
1.2 1.2.1
SDK destinado a los desarrolladores libres
Poca documentación
Compatibilidad con Flash
Pocos dispositivos
EVOLUCIÓN
Bada OS 2.0 en un Samsung Wave 2
Plataformas Actuales2
1.0.0.b3 1.2 1.2.1
Soporte nativo para correo corporativo
Desarrollo en C, C++ y Java
Sistema patentado por RIM
5.0 6.04.5
EVOLUCIÓN
BlackBerry Tablet
Plataformas Actuales2
BlackBerry 8700
Enfocado a servicios profesionales
PlayBook OS basado en QNXEjecutará aplicaciones Android 2.2
Soporte para Java MIDP 1.0 y WAP 1.2
Sistema Multitarea
Fragmentación de versiones
Desarrollo utilizando plugin en Eclipse
5.0 6.04.5
EVOLUCIÓN
BlackBerry OS 6
Poco atractivo para un desarrollador multiplataforma
Plataformas Actuales2
No está destinado al ocio
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
Precio Licencias: 0€
Limo Linux
Plataformas Actuales2
Vodafone apostó por él con el servicio Vodafone 360
No hay controladores 100% funcionales
CLDC 1.0 MIDP 1.0 MIDP 2.0/2.1CLDC 1.1
Subconjunto destinado a dispositivos móviles
Programación en Java
J2ME no es un Sistema Operativo
Está muy extendido
AJUSTES
La máquina virtual de J2ME viene integrada con el sistema Symbian
Presente en un amplio abanico de dispositivos sin importar la plataforma
Plataformas Actuales2
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
CLDC 1.0 MIDP 1.0 MIDP 2.0/2.1CLDC 1.1
AJUSTES
Incompatibilidad de APIs con algunas máquinas virtuales
Plataformas Actuales2
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
Otros, firmware propietarios
Sony Ericsson T610
LG BL40
Sony Ericsson W660
Plataformas Actuales2
Índice de Contenidos
Introducción
Alternativas y plataformas actuales
Librerías gráficas 3D
IDE de programación
Tipos de aplicaciones
Nuestras Recomendaciones
Conclusiones
1
2
3
4
5
6
7
Librerías gráficas 3D3
OpenGL ES
Tiny Graphics EngineTIGRE
Tiny Graphics EngineTIGRE
Vincent 3DVincent 3D
KlimtKlimt
M3GM3G
DirectX
Direct3D
GApiDraw(sólo 2D)
GApiDraw(sólo 2D)
WMGLWMGL
AndEngine 2DAndEngine 2D
OpenSceneGraphOSG
OpenSceneGraphOSG
J2ME
jPCT-AEjPCT-AEBalder (Silverlight, Windows
Phone 7 y Xna)Balder (Silverlight, Windows
Phone 7 y Xna)
OpenGL ES es una API de bajo nivel para gráficos 2D y 3D en sistemas avanzados embebidos
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
La principal diferencia entre las dos versiones es el soporte de Shaders en la 2.0
Librerías gráficas 3D3
OpenGL ES 1.1 Vs OpenGL ES 2.0
OpenGL ES 1.1 OpenGL ES 2.0 OpenGL ES 1.1 OpenGL ES 2.0
SHADER: Procedimiento de sombreado e iluminación que permite especificar el renderizado de un vertex o de un pixel.
iPhone 3GS
Librerías gráficas 3D3
Ejemplos en varias plataformas
Qualcomm MSM7x30 con Android y un juego en OpenGL ES
Librerías gráficas 3D3
Ejemplos en varias plataformas
Demo OpenGL ES 2.0 en un Sony Ericsson Satio
Librerías gráficas 3D3
Ejemplos en varias plataformas
Demo juego OpenGL ES en un N900
Librerías gráficas 3D3
Ejemplos en varias plataformas
Demo juego OpenGL ES en HTC HD2
Librerías gráficas 3D3
Disponibilidad
OpenGL ES es la API oficial para algunos sistemas operativos
Librerías gráficas 3D3
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:
Tigre 1.1 – fixed pipeline OpenGL ES
Tigre 2.0 – dynamic pipeline OpenGL ES
Máxima flexibilidad: Modelo de cámaras, texturas, filtros, renderizado de texto, etc.
Librerías gráficas 3D3
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
Librerías gráficas 3D3
Basadas en OpenGL ESVincent 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
Librerías gráficas 3D3
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
Librerías gráficas 3D3
Basadas en OpenGL ES
Windows CE PDA using PocketKnife's TGA-export function
Librerías gráficas 3D3
43
Librerías gráficas 3D3
WMGL - WM PPC Graphics Library
Librería gráfica diseñada para dispositivos con Windows Mobile
Provista de herramientas para facilitar la programación de Alpha Blending y varios efectos 3D (Rotaciones, Sliding, etc)
Soporte para transparencia PNG
C++ optimizado para las tareas de pintado transparente
Proyectos en C++ o C#
No tiene aceleración por hardware
Librería basada en DirectDraw
44
Se utilizó en el proyecto Touch Shell
WMGL - WM PPC Graphics Library
Librerías gráficas 3D3
La finalidad del proyecto era mejorar la interfaz con la que venía el propio sistema de Windows Mobile añadiéndole efectos 3D y una mejor interactuación con el usuario
Demostración de la intefáz Windows Mobile
45
Librerías gráficas 3D3
Es una plataforma gráfica para crear aplicaciones que requieren una alta demanda de procesado gráfico en dispositivos con Windows Mobile
Básicamente está destinada al desarrollo de juegos
Es un complemento para DirectDraw
Se puede desarrollar aplicaciones en .NET utilizando un C# Wrapper gratuito disponible en Google Code
Dispone de aceleración por hardware con la librería de DirectDraw
Desarrollo en C++
Librerías gráficas 3D3
Juegos diseñados con la librería GapiDraw para móviles con Windows Mobile
Librerías gráficas 3D3
andEngine
Librería gráfica 2D basada en OpenGL ES gratuita para dispositivos con Android
Contiene muchas herramientas para la animación de objetos 2D tales como un motor de física, multitouch y conexión entre móviles
No dispone de mucha documentación pero todos los ejemplos vienen con su código debidamente comentado
Ejemploss de la librería de física y comunicación con otros dispositivos
Librerías gráficas 3D3
andEngine
Comparación entre varios dispositivos
Librerías gráficas 3D3
jPCT-AE (android edition)
jPCT ofrece la solución de desarrollar aplicaciones dentro del mundo de Java
Solucionamos el problema de la máquina virtual de Java
Podemos desarrollar incluso para navegadores web
Carga modelos 3DS, OBJ, XML, MD2 y ASC
Soporta animaciones y está diseñado para multi core
La versión para Android es un port de jPCT donde algunas características no han sido implementadas y otras simplificadas
Librerías gráficas 3D3
jPCT-AE (android edition)
Animación de un modelo con esqueleto
Librerías gráficas 3D3
Librería de gráficos 3D de alto nivel
Basada en OpenGL y escrita en C++
Sigue una jerarquia de grafo de escena
Soporta OpenGL 1.1 y OpenGL 2.0
Actualmente se está desarrollando un port para la plataforma Android utilizando el NDK que proporciona la propia Google. Los resultados son bastantes buenos
Librerías gráficas 3D3
Ejemplo de SOG sobre Android 2.2 Ejemplo OSG en Windows
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
Librerías gráficas 3D3
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 plugin especial
Modelo SketchUp 3D Studio
Modelo final en un Nokia N95
Librerías gráficas 3D3
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
Librerías gráficas 3D3
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
A diferencia de OpenGL estas librerías son propietarias
Demo Direct3D con una librería de física
Librerías gráficas 3D3
57
Librerías gráficas 3D3
Motor gráfico para sistemas Windows Phone, SilverLight y XNA
Proporciona herramientas para el desarrollo de aplicaciones 3D de forma sencilla
Dispone de una optimización para Windows Phone
Algunos elementos como las luces no funcionan correctamente en Windows Phone
Dispone de todos los elementos básicos de una escena 3D (cámaras, luces, modelos, texturas, etc)
Demostración de Balder en una aplicación de escritorio
Índice de Contenidos
Introducción
Alternativas y plataformas actuales
Librerías gráficas 3D
IDE de programación
Tipos de aplicaciones
Nuestras Recomendaciones
Conclusiones
1
2
3
4
5
6
7
IDEs de Programación4
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
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
XNA Framework para desarrollar juegos
Visual Studio 2008
IDEs de Programación4
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 MACXcode 4.0
IDEs de Programación4
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
Totalmente gratuito
Carbide C++
IDEs de Programación4
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
Qt Creator
Contiene un simulador para desarrollar aplicaciones para móviles
Qt Creator
IDEs de Programación4
Relación
¿
¿
IDEs de Programación4
Índice de Contenidos
Introducción
Alternativas y plataformas actuales
Librerías gráficas 3D
IDE de programación
Tipos de aplicaciones
Nuestras Recomendaciones
Conclusiones
1
2
3
4
5
6
7
Tipos de aplicaciones5
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:
¿Qué tengo o debo utilizar para desarrollar mis aplicaciones?
¿¿ ¿ ¿
¿
¿
¿
¿¿
¿
¿¿
¿
¿¿
¿¿
¿
Tipos de aplicaciones5
Aplicaciones tipo formulario con gráficos 2D y/o gráficos 3D
Tipos de aplicaciones5
Formularios simples de introducción de datos Imágenes estáticas
Información visual muy simple para el usuario
Feedback - iPhone Registros - iPhone Navigation - Android Palm WebOS
Apoyo con elementos 3D
Juegos 2D (Ej. Plataformas)
Tipos de aplicaciones5
Ideales para dispositivos con pocos recursos
J2ME Symbian WebOS Maemo
Juegos 3D
Tipos de aplicaciones5
Uso de librerías 3D del dispositivo
Algunos juegos requieren dispositivos potentes
Convivencia entre 2D y 3D en la mayoría de juegos
Windows Phone iPhone Android
Aplicaciones que utilicen todos los recursos multimedia (Ej. RA)
Tipos de aplicaciones5
Uso de todos los recursos del dispositivo debido a la necesidad de procesar gran cantidad de datos
Algunas aplicaciones se ayudan de internet para actualizar datos
Urbanspoon - iPhoneLayar - Android Realidad Aumentada
Aplicaciones con servicios web
Tipos de aplicaciones5
Intercambio de información con la red
Conexión permanente a la red
Aplicaciones estéticamente simples
Spotify - iPhone ustream - Android Qik - Android
Aplicaciones que utilicen la cámara, GPS, Acelerómetros, Sensores, etc.
Tipos de aplicaciones5
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
Índice de Contenidos
Introducción
Alternativas y plataformas actuales
Librerías gráficas 3D
IDE de programación
Tipos de aplicaciones
Nuestras Recomendaciones
Conclusiones
1
2
3
4
5
6
7
Nuestras Recomendaciones6App Formularios
Baja
Alta
Funcionalidad Requerida
Alta
6App 2D y 3D
Baja
Alta
Funcionalidad Requerida
Alta
Nuestras Recomendaciones
6Componentes del móvil
Baja
Alta
Utilización de componentes presentes en el dispositivo
Alta
Nuestras Recomendaciones
6Juegos 2D
Baja
Alta
Funcionalidad Requerida
Alta
Nuestras Recomendaciones
6Juegos 3D
Baja
Alta
COMPLEJIDAD
Alta
Nuestras Recomendaciones
6Realidad Aumentada
Baja
Alta
COMPLEJIDAD
Alta
Nuestras Recomendaciones
Índice de Contenidos
Introducción
Alternativas y plataformas actuales
Librerías gráficas 3D
IDE de programación
Tipos de aplicaciones
Nuestras Recomendaciones
Conclusiones
1
2
3
4
5
6
7
Conclusiones7
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 beneficiariaEs necesario saberse la tabla de relaciones (Plataforma-IDE) y las especificaciones del sistema a desarrollar
Conclusiones7
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
top related