Documento Final De Tesis Entrega Final De Ciclo Terminal II Opengl
Total Page:16
File Type:pdf, Size:1020Kb
Documento Final de Tesis Entrega Final de Ciclo Terminal II OpenGL en Dispositivos Móviles Presentado por: Carlos Eduardo Oviedo Presentado a: Harold Cruz Facultad de Ingeniería Departamento de Sistemas y Computación Universidad de los Andes Bogotá, Febrero 04 de 2005 AGRADECIMIENTOS Harold Cruz Ingeniería de Sistemas, Universidad de los Andes. Director de tesis. A la mi director de tesis por su apoyo incondicional y la oportunidad brindada para la realización de este trabajo. LISTA DE FIGURAS Pág. Figura 1. Rotación en 2 dimensiones (pivote en el origen) 26 Figura 2. Rotación en 2 dimensiones (pivote arbitrario) 27 Figura 3. Proyección en paralela 34 Figura 4. Proyección en perspectiva 35 Figura 5. Instalación SuperWaba en POSE (Pantalla 1) 39 Figura 6. Instalación SuperWaba en POSE (Pantalla 2) 39 Figura 7. Instalación SuperWaba en POSE (Pantalla 3) 39 Figura 8. Instalación de aplicaciones en POSE 40 Figura 9. Instalación SuperWaba en PC 42 Figura 10. GuiBuilder Instalado (Pantalla 1) 46 Figura 11. GuiBuilder Instalado (Pantalla 2) 46 Figura 12. Deshabilitando opciones POSE 48 Figura 13. Estructura de directorios del Proyecto 53 Figura 14. Diagrama de Paquetes 61 Figura 15. Diagrama del paquete GL 62 Figura 16. Diagrama del paquete SYS 64 Figura 17. Diagrama del paquete UTIL 66 Figura 18. Diagrama del paquete TESTS 68 Figura 19-21. Instalación MobileGL sobre POSE 71 Figura 22. Modelo Jerárquico 72 Figura 23. Imagen del Robot 73 Figura 24. Estructura de directorios del proyecto 74 Figura 25. Diagrama de clases Caso de Estudio 79 Figura 26. Instalación MobileGL (Pantalla 1) 81 Figura 27. Instalación MobileGL (Pantalla 2) 81 Figura 28-32. Demo MobileGL 82 Figura 33. Demo MobileGL con OpenGL 83 Tabla de contenido I. Introducción 3 II. Objetivo 5 III. Alcance 6 IV. Estado del Arte 8 1. MiniGL 8 2. TinyGL 9 3. Pocket GL 10 4. OpenGL ES 10 V. Marco Teórico 11 1. OpenGL 11 1.1. Estructura de un Programa en OpenGL 12 1.2. Sintaxis de los Comandos/Constantes OpenGL 12 1.3. OpenGL como una Máquina de Estados 14 1.4. Animación en OpenGL 18 1.5. Operaciones Básicas de OpenGL 18 1.6. Transformaciones en OpenGL 21 2. Conceptos Gráficos 24 2.1. Traslación 25 2.2. Rotación 26 2.3. Escalamiento 28 2.4. Representación de Matriz y Coordenadas Homogéneas 29 2.5. Transformaciones Geométricas Tridimensionales 31 2.6. Métodos de Despliegue Tridimensional 33 3. SuperWaba 37 3.1. Instalación en Dispositivos Palm OS 38 3.2. Instalación en Windows CE/Pocket PC 40 3.3. Instalación en Computadores de Escritorio 42 1 3.4. Prueba de Instalación de SuperWaba 44 3.5. Desarrollo de una Aplicación en SuperWaba 46 3.6. Warp y ExeGen 48 3.7. IDEs y SuperWaba 50 VI. MobileGL 52 1. Estructura de Directorios del Proyecto 52 2. Funciones Implementadas 54 3. Diagrama de Clases de la Librería 61 3.1. Diagrama de Paquetes 61 3.2. Diagrama del Paquete GL 62 3.3. Diagrama del Paquete SYS 64 3.4. Diagrama del Paquete UTIL 65 3.5. Diagrama del Paquete TESTS 67 4. Compilación y Ejecución 69 5. Instalación 70 VII. Caso de Estudio 72 1. Descripción del Modelo Jerárquico a Implementar 72 2. Estructura de directorios del Caso de Estudio 74 3. Funciones Implementadas 75 4. Diagrama de Clases del Caso de Estudio 78 5. Compilación y Ejecución 80 6. Instalación 81 VIII. A Futuro 84 IX. Conclusiones 86 X. Glosario 87 XI. Referencias 88 2 I. Introducción Son doce años los que consolidan OpenGL como el ambiente de preferencia para el desarrollo de aplicaciones gráficas en dos y tres dimensiones. Pero OpenGL es más que un ambiente de desarrollo; es una interfaz de programación de aplicaciones (API por sus siglas en inglés) adoptada actualmente por la mayoría de la industria. Las facilidades que ofrece para el desarrollo de aplicaciones altamente portables convierten a OpenGL en una especificación irresistible de implementar tanto para fabricantes de hardware como para desarrolladores de software. Pero las ventajas que ofrece OpenGL son muchas además de la anteriormente presentada; para los desarrolladores, un conjunto extenso de complejas funciones de visualización agilizan la labor de construcción del software, facilitando la codificación de un gran número de tareas. Esto a su vez reduce el tiempo que tarda el producto en entrar al mercado, lo que beneficia de igual manera al usuario final. El usuario también se ve beneficiado al recibir un software con gráficos más reales e interfaces de usuario más amigables y completas. Tal vez una de las limitantes más graves que tiene OpenGL es la dependencia a un hardware especial que soporte muchas de las funciones que ofrece. A pesar de que este tipo de hardware es incorporado desde varios años ya a los equipos tradicionales y que usualmente manejamos (computadores de escritorio para ser más precisos), hay una nueva generación de dispositivos que progresivamente se han ido apoderando del mercado y que no poseen el hardware necesario para tomar ventaja de las facilidades que ofrece OpenGL. Los beneficios recibidos por los usuarios desde la aparición de la tecnología móvil son incontables; comunicación prácticamente ilimitada entre usuarios de la tecnología, información cada vez más disponible (sin importar el lugar de ubicación de la persona), y la facilidad que ofrecen estos dispositivos para el desarrollo de tareas que normalmente se realizan en equipos ligados a un escritorio son algunos de ellos. Pero estos dispositivos móviles están lejos de ser perfectos; una menor capacidad de procesamiento de información, menor cantidad de memoria disponible y menor resolución de pantalla son algunas de las falencias que hacen casi imposible que estos equipos ofrezcan la misma calidad de gráficos que los dispositivos de escritorio. Lo que se propone en el presente trabajo es la integración de dos elementos altamente útiles y populares para lograr un producto novedoso y de alta calidad; la llegada de OpenGL al mundo móvil abrirá las puertas a una nueva generación de aplicaciones compatibles con este tipo de dispositivos. La 3 utilidad que alcanzarían estos equipos sería inmensamente superior a la que actualmente poseen, así como la productividad de las personas que hacen uso de los mismos. En secciones siguientes se analizarán algunas alternativas consideradas para el desarrollo del proyecto, presentando posteriormente aquella que ofrece los mayores beneficios. Se presentarán las herramientas utilizadas y una descripción detallada del procesó seguido. Se concluirá con el listado de resultados obtenidos y conclusiones del trabajo. 4 II. Objetivo El objetivo principal de este trabajo es la integración de OpenGL al mundo móvil, particularmente a las asistentes personales digitales o PDA (por sus siglas en inglés). Es claro que el hardware de este tipo de equipos es ciento por ciento diferente a aquel presente en un computador de escritorio, por lo que la manera a seguir para lograr el objetivo es a través de software; siendo OpenGL una interfaz de software para un hardware de gráficas, el trabajo propuesto en este documento tiende a seguir el mismo lineamiento. La librería gráfica móvil propuesta consta de una serie de interfaces, diferenciándose de OpenGL en que estas interfaces trabajan sobre una capa de software, no hardware. El software sobre el cuál trabajan estas interfaces es conocido como SuperWaba, y brevemente puede ser reducido como una máquina virtual (similar a las máquinas virtuales para Java) dirigida principalmente a dispositivos móviles de tipo PDA. Hay que hacer la salvedad de que es posible instalar SuperWaba en un computador de escritorio, pero esto se debe ver solo como una manera de facilitar el desarrollo y depuración de aplicaciones móviles basadas en este software. Tanto OpenGL como SuperWaba tienen una sección dentro del documento dedicada exclusivamente a su profundización y detalle, ya que ambas juegan un papel fundamental en la elaboración del presente trabajo. Es necesario entender como funciona OpenGL debido a que la librería gráfica móvil trata de simular en lo posible tanto las funciones que ofrece como su modo de operar. Por su parte, sin unas buenas bases en SuperWaba difícilmente se podrá apreciar en su plenitud el trabajo presentado a continuación. 5 III. Alcance El extenso número de funciones y operaciones permitidas por OpenGL es proporcional al grado de complejidad del proyecto. El ideal sin ninguna duda sería el de migrar toda la interfaz a los dispositivos móviles, algo que se podría conseguir si se contara con varios años de trabajo y un número mayor de personas involucradas en el proyecto. Desafortunadamente este no es el caso del presente trabajo, por lo que es de suma necesidad el acotar el alcance del mismo para asegurar que su desenlace arroje unos resultados concretos y satisfactorios. La metodología de desarrollo más apropiada para un tipo de proyecto como el que se especifica en el presente documento es la de desarrollo por etapas o desarrollo en espiral; es una técnica común en el mundo de la ingeniería de software y consiste en dividir el proyecto en varias fases, cada una con unos objetivos claros y concretos. Después de cada fase se realizan las pruebas necesarias y se elabora un postmortem que describe el proceso de desarrollo durante la fase, detallando aquellas tareas exitosas y puntualizando en los errores que pudieron haber impedido la obtención de todos los objetivos pactados para la etapa. Para este proyecto el gran objetivo es el desarrollo de una librería gráfica móvil que simule en su totalidad a OpenGL (tanto en funciones ofrecidas como en su modo de operar). Teniendo en cuenta que nada más el número de funciones que ofrece esta interfaz es del orden de 1201, y que la complejidad de la mayoría de estas es bastante elevada, el plan a seguir es el de categorizar las funciones y separar su implementación y migración en distintas etapas de desarrollo.