• No se han encontrado resultados

Mejoramiento de funcionalidad y atributos de calidad sgbuilder

N/A
N/A
Protected

Academic year: 2020

Share "Mejoramiento de funcionalidad y atributos de calidad sgbuilder"

Copied!
59
0
0

Texto completo

(1)

1

MEJORAMIENTO DE FUNCIONALIDAD Y ATRIBUTOS DE CALIDAD EN APLICACIÓN DE GRAFOS DE ESCENA

ANDRES FELIPE BURBANO DELGADO

UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERIA

DEPARTAMENTO DE INGENIERIA DE SISTEMAS Y COMPUTACION SANTAFE DE BOGOTA

(2)

2

MEJORAMIENTO DE FUNCIONALIDAD Y ATRIBUTOS DE CALIDAD EN APLICACIÓN DE GRAFOS DE ESCENA

ANDRES FELIPE BURBANO DELGADO

Proyecto De Grado para Optar al Título de Ingeniero de Sistemas y Computación

PROFESOR ASESOR:

Mario Fernando De la Rosa Rosero, Ph.D

UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERIA

DEPARTAMENTO DE INGENIERIA DE SISTEMAS Y COMPUTACION SANTAFE DE BOGOTA

(3)

3

DEDICADO A:

Mi padre Jesús Ignacio, por ser ejemplo de vida, fiel compañero y apoyo incondicional en las diferentes etapas de mi vida.

Mi madre Myriam, mi Ángel protector quien desde el cielo me bendice y cuida.

Mis hermanos Álvaro y Adriana, que con su ejemplo me han enseñado que con esfuerzo y dedicación se pueden lograr las metas

(4)

4

AGRADECIMENTOS

Al Profesor Mario Fernando De La Rosa Rosero, asesor del presente trabajo de grado, a quien agradezco su dedicación y enseñanzas.

A la Universidad de Los Andes, por haberme infundido los conocimientos que hoy me tienen culminando mi pregrado en Ingeniería de Sistemas y Computación. A todo el grupo profesoral, por sus aportes en el enriquecimiento de mis conocimientos y a mis compañeros de estudios que con su compañía y apoyo me permitieron aprender a trabajar en equipo para alcanzar mis metas.

(5)

5

CONTENIDO

Pág.

RESUMEN ANALÍTICO INTEGRADO 9

ABSTRACT 12

1. INTRODUCCIÓN 13

2. DESCRIPCIÓN GENERAL 16

2.1. OBJETIVOS 16

2.1.1. Objetivo General 16

2.1.2. Objetivos Específicos 16

2.2. TRABAJOS RELACIONADOS 17

2.3. DESCRIPCIÓN DEL PROBLEMA 20

3. DISEÑO Y ESPECIFICACIONES 22

3.1. ESPECIFICACIONES 22

3.1.1. Aspectos por mejorar y corregir 22

3.1.2. Nuevas funcionalidades a implementar 22

4. MARCO REFERENCIAL 25

4.1. OPEN SCENE GRAPH 25

4.2. FORMATO X3D 26

4.3. TECNOLOGÍA JAVA 27

4.4. PROYECTO JOGL 27

(6)

6

4.6. GRAFO EN ESCENA 30

4.6.1. Generación 30

4.6.2. Recorrido 30

4.6.3. Transformación 31

4.6.4. Rasterización y Visualización 31

4.7. APACHE TOMCAT 31

5. DESARROLLO DEL DISEÑO 32

6. IMPLEMENTACIÓN 34

6.1. DESCRIPCIÓN DE LA IMPLEMENTACIÓN 34

6.1.1. Manejo del tamaño de las ventanas de la aplicación 34 6.1.2. Utilizar la herramienta Java Web Start para la descarga de la

aplicación 38 6.1.3. Implementación de Matrices de transformación 41 6.1.4. Visualización de animaciones en el Grafo de escena 49 6.1.5. Permitir la edición de los parámetros de iluminación

en la escena 3D 50

6.2. RESULTADOS ESPERADOS 52

6.2.1. Manejo el tamaño de las ventanas de la aplicación 52 6.2.2. Utilización de Java Web Start para la descarga

de SceneGraphBuilder 52

6.2.3. Implementación de matrices de transformación 52 6.2.4. Cambio de los parámetros de la luz de la escena 3D 53

(7)

7

7. VALIDACIÓN 54

7.1. MÉTODOS 54

8. CONCLUSIONES 56

9. RECOMENDACIONES 57

(8)

8

LISTA DE FIGURAS

Figura 1: Diagrama de clases, clases implementadas 33 Figura 2: Ventana principal versión sin modificaciones 35 Figura 3: Ventana principal maximizada al iniciar la aplicación 36

Figura 4: Visualización grafo de escena 37

Figura 5: Visualización vista 3D 37

Figura 6: Calculo de construcción de escena 38

Figura 7: Contenido archivo .jnlp 41

Figura 8: Matriz de traslación 42

Figura 9: Matriz de rotación 43

Figura 10: Matriz de escalamiento 43

Figura 11: Matriz de rotación con animación 45

Figura 12: Matriz de translación con animación 46

Figura 13: Matriz de escalamiento con animación 46

Figura 14. Composición de matrices para un elemento 48 Figura 15. Nuevos iconos de rotación, escalamiento y translación con

animación 49

Figura 16. Grafo de escena con iconos de animación 49

Figura 17. Panel de edición de parámetros de luz 50

(9)

9

MEJORAMIENTO DE FUNCIONALIDAD Y ATRIBUTOS DE CALIDAD EN APLICACIÓN DE GRAFOS DE ESCENAS

Autor: BURBANO DELGADO, Andrés Felipe

Facultad: Ingeniería

Departamento: Ingeniería de Sistemas y Computación

Asesor: Profesor Mario Fernando De La Rosa R.

Área de Investigación: Computación Visual

PALABRAS CLAVES:

 Grafo de Escena

 Matrices de transformación 3D  Escena 3D

 Modelos 3D por Computador  Computación Gráfica

RESUMEN:

El desarrollo del presente proyecto pretende brindar al usuario de la aplicación SceneGraphBuilder una herramienta eficiente en términos de funcionalidad, usabilidad, accesibilidad y aprendizaje, permitiendo que esta sea usada como una herramienta en donde se desarrolle una escena 3D y brinde información acerca de cómo se construye un grafo de escena, y la teoría detrás de todo lo que se está realizando, logrando que un estudiante aprenda con la herramienta y pueda utilizarla de una forma sencilla en cualquier momento.

Este proyecto de grado es la continuación del trabajo realizado por Juan Camilo Ibarra [1] y Mauricio Alvarado Lozano [2], los cuales aportaron sus ideas para el desarrollo y mejoramiento de la aplicación SceneGraphBuilder. Este proyecto utiliza los conocimientos suministrados por estos estudiantes; pero, plantea la intensión de

(10)

10

corregir algunas falencias observadas y mejorar aspectos que beneficien la aplicación.

Previa revisión a los trabajos creados por los Ingenieros anteriormente descritos, se encontró los siguientes aspectos por mejorar y corregir: La maximización de la ventana principal de la aplicación, ampliar la visualización del grafo de escena e incluir el código faltante generado por la realización de la escena 3D.

Como nuevo aporte se implementaron las siguientes funcionalidades: Abrir una ventana que permita visualizar la matriz de transformación y que muestre las translaciones o rotaciones que se han realizado; visualizarlas transformaciones que tienen la función de animación activada en el árbol de escena; y por último, lograr que la aplicación sea descargada vía web.

CONCLUSIONES

La nueva visualización de las ventanas de vista de escena 3D y Grafo de Escena, permiten observar de mejor manera la información que ellas ofrecen; además, de poder navegar a través de ellas de una manera más cómoda y sencilla.

Gracias a la herramienta Java Web Start, se facilitó la adquisición de la aplicación SceneGraphBuilder, permitiendo que esta solo sea descargada una vez y pueda ser utilizada de manera local.

La consulta de Matrices de Transformación, aumentó la cantidad de información teórica sobre Grafos de Escena que se puede consultaren la aplicación.

(11)

11 RECOMENDACIONES

El trabajo realizado puede continuarse en varios aspectos que permitan mejorar o complementar los resultados obtenidos, de tal forma que se llegue a desarrollar una herramienta mucho más robusta en el tema de creación de Grafos de Escena y visualización 3D. En particular, se plantea trabajar en los siguientes aspectos:

 Validar el funcionamiento de las nuevas funcionalidades y correcciones con los estudiantes del curso computación visual interactiva.

 Complementar la vista de elementos que se encuentra en la sección de vista 3D de la escena.

 Actualizar las propiedades básicas de la fuente de luz que actualmente está

(12)

12 ABSTRACT

The development of the present project aims to provide the user of the application SceneGraphBuilder an efficient tool in terms of functionality, usability, accessibility and learning, allowing it to be used as a tool to develop a 3D scene and provide information about how a scene graph is constructed, and the theory behind everything that is being done, making a student to learn with this tool and using it in a simple manner at any time.

This graduation project is the continuation of the work of Juan Camilo Ibarra [1] and Mauricio Alvarado Lozano [2], who implemented their ideas for the development and improvement of Graph Builder application. This project uses the knowledge provided by these students; but it raises the intention of correcting some observed shortcomings and improve aspects that benefit the application.

Meeting the following aspects to improve and correct: Maximizing the main application window, expand the display of the scene graph, including the missing code generated by the realization of the 3D scene.

The following features were implemented: Display in the view of 3D scene, a pre-selected scene in the tree section of the scene, open a window that allows visualizing the transformation matrix and show the translations or rotations that have been made, visualize what transformations have the animation function activated in the scene tree, and finally, allowing the application to be downloaded via web.

(13)

13

1. INTRODUCCIÓN

Actualmente la tecnología basada en herramientas de construcción de escenas 3D, ha adquirido gran importancia en diferentes aspectos, tales como: videojuegos, diseño de construcciones, representación de movimiento en escenas 3D en tiempo real, etc. Pero además de estos aspectos, estas herramientas también son parte importante de la enseñanza sobre cómo realizar dichas escenas 3D, ya que además de representar en 3D lo que el usuario desea, dan conocimientos teóricos sobre dichas escenas, permitiendo que este aprenda sobre el tema y no solo vea estas herramientas como una forma más de entretenimiento o simple trabajo. Últimamente, esta tecnología ha mejorado mucho pues permite realizar escenas más complejas y realistas, haciendo que esta sea aplicada en más campos de importancia como la medicina; pero además, es importante ver como dichos avances han logrado que se desarrollen múltiples herramientas de diseño 3D, las cuales pueden ser utilizadas de diferentes maneras, ya sea solo para realizar escenas, o para que el usuario aprenda de su estructura.

El presente trabajo está motivado por la necesidad de mejorar este tipo de herramientas de tal forma que el método de enseñanza sea mucho más efectivo y que el usuario pueda tener la seguridad que utilizando estas herramientas, le permita aprender la teoría que hay detrás de todo el proceso.

El trabajo a desarrollar es la continuación del proyecto de grado de Mauricio Alvarado Lozano [2],que consistió en el mejoramiento del desempeño de una aplicación enfocada en el aprendizaje del concepto de grafos de escena 3D en el curso de computación visual interactiva, llamada SGBuilder (SceneGraphBuilder). La primera versión ya había sido previamente desarrollada por el estudiante Juan Camilo Ibarra [1]. El sistema desarrollado permite la realización y visualización de escenas 3D, incluyendo su grafo de escena. De igual manera, es posible realizar

(14)

14

exportaciones de la escena realizada de tal forma que su código pueda ser usado por otras aplicaciones.

Anteriormente se llevó a cabo varias revisiones a la aplicación, permitiendo mejorar diferentes aspectos de esta, lo cual dio como resultado una aplicación mucho más robusta y con posibilidades de seguir mejorándola en su aplicabilidad y desempeño. Este proyecto está interesado en continuar con el proceso de mejoramiento de la aplicación apoyándose en el trabajo realizado por los anteriores estudiantes, esperando lograr una versión mucho más completa y eficiente que la que actualmente se está utilizando.

Este documento está estructurado de la siguiente manera: En el capítulo 2 se presentan los objetivos del proyecto, los trabajos relacionados y la descripción del problema de estudio en el proyecto. En el capítulo 3 se describen los procedimientos propuestos en términos de corrección de errores e implementación de nuevas funcionalidades, realizando un análisis a los resultados esperados a través de estos cambios. En el capítulo 4 se describen diferentes herramientas relacionadas con los grafos de escena y que fueron utilizadas como referencia para la realización de las nuevas funcionalidades y mejoramientos, además de presentar la teoría utilizada en las mismas. En el capítulo 5 se explica el diseño de las funcionalidades a realizar, dando información sobre las decisiones tomadas y el porqué de las mismas, además de explicar la arquitectura del proyecto. Posteriormente, En el capítulo 6 se procede a describir en detalle la implementación de cada una de las etapas de mejoramiento descritas y de las nuevas funcionalidades, brindando imágenes para resaltar los cambios respecto de la versión anterior de SceneGraphBuilder. En el capítulo 7 se procede a explicar cómo se validaron cada una de las funcionalidades implementadas, de tal forma que se evidencie el correcto funcionamiento de las mismas. En el capítulo 8, se plantean conclusiones sobre el proceso realizado de tal forma que se pueda reflexionar sobre el resultado final y ver si cumple con los objetivos planteados. Por ultimo, en el capítulo 9 se presentan una serie de recomendaciones que pueden ser vistas por la

(15)

15

persona que posteriormente trabaje sobre esta aplicación con el fin de mejorarla aún más.

(16)

16

2. DESCRIPCIÓN GENERAL

2.1. OBJETIVOS

2.1.1. Objetivo general:

Brindar al usuario de la aplicación SceneGraphBuilder una herramienta eficiente en términos de funcionalidad, usabilidad, accesibilidad y aprendizaje, permitiendo que esta sea usada como una herramienta en donde se desarrolle una escena 3D y brinde información acerca de cómo se construye un Grafo de Escena, y la teoría detrás de todo lo que se está realizando, logrando que el usuario aprenda con la herramienta y pueda utilizarla de una forma sencilla en cualquier momento.

2.1.2. Objetivos específicos:

 Respecto a la funcionalidad, se quiere mejorar la herramienta de tal forma que las acciones ejecutadas otorguen resultados eficientes dependiendo de lo que desee el usuario; ya sea, exportando el código generado, o al momento de acceder a otras ventanas que permitirán visualizar información relevante.

 Para la usabilidad, se tiene como objetivo el mejoramiento de la facilidad de uso de la aplicación y la búsqueda de información, de tal forma que el usuario entienda como funciona la aplicación fácilmente, y permita realizar acciones de manera intuitiva y libre, dejando atrás restricciones como el tamaño de la ventana principal o la falta de información sobre Grafos de Escena.

 Permitir que el usuario tenga mayor accesibilidad hacia la aplicación y no solo

se limite a que deba ser descargada y utilizada localmente, logrando al mismo tiempo que la aplicación sea conocida por personas externas al curso de computación visual interactiva.

(17)

17

 Como objetivo de aprendizaje, se quiere aumentar la cantidad de información referente a los Grafos de Escena, permitiendo que el usuario pueda utilizar la aplicación como un método de estudio de esta teoría y pueda ser capaz de utilizar este conocimiento para otros fines externos a la aplicación.

2.2. TRABAJOS RELACIONADOS

Como se mencionó anteriormente este proyecto de grado es la continuación del trabajo realizado por Juan Camilo Ibarra [1] y Mauricio Alvarado Lozano [2], los cuales implementaron sus ideas para el desarrollo y mejoramiento de la aplicación SceneGraphBuilder. Esta continuación del proyecto, utiliza dichos conocimientos suministrados por los estudiantes anteriormente mencionados conservando la misma esencia; pero, plantea la intensión de corregir algunas falencias observadas y mejorar aspectos que beneficien la aplicación.

Cuando el ingeniero Juan Camilo Ibarra López, plantea en su trabajo de grado “La Creación Interactiva de Grafos de Escena para Aplicaciones Gráficas 3D” [1], se remite a uno de los temas de estudio en computación gráfica que es “Grafos de Escena” y plantea en su investigación, que son los que definen una estructura de datos en la representación de modelos geométricos compuestos 2D y 3D. Define a los Grafos de Escena, como aquellos que permiten la definición de jerarquías y de relaciones entre los elementos que componen un elemento de mayor complejidad (inclusive una escena 3D) y facilita la manipulación de dichos elementos; ya sea, por agrupaciones o individualmente.

Adicionalmente considera, que el paso de un modelo teórico a su representación en un lenguaje de programación, hace indispensable la comprensión de los Grafos de Escena y la forma de representarlos en dicho lenguaje y plantea entonces, la posibilidad de crear una aplicación interactiva, con el fin de facilitar tanto al desarrollador como al estudiante la construcción de Grafos de Escena teóricos y de

(18)

18

generar como resultado un objeto geométrico 3D y la exportación de dicho modelo a un lenguaje de descripción geométrico específico.

Basado en lo anterior, propone una aplicación de software para la ayuda en el curso de computación gráfica de la Universidad de los Andes, en el proceso de construcción de modelos geométricos compuestos representados en Grafos de Escena. En su momento, considera que la aplicación ofrece diferentes herramientas visuales y una interfaz gráfica de usuario, según su concepto, de fácil comprensión. La comprensión del funcionamiento y la finalidad de los Grafos de Escena, es un punto clave para obtener los resultados deseados en la construcción de objetos geométricos compuestos. Comienza planteando una primera aproximación para dicha construcción con el diseño del Grafo de Escena; en donde a través de diferentes tipos de nodos, se representa un objeto geométrico compuesto. Este diseño se realiza de forma interactiva de tal forma que a medida que se edite el Grafo de Escena, sea posible la visualización del objeto geométrico resultante. Culminada esta etapa, propone en su trabajo traducir este lenguaje gráfico al API del lenguaje en el que se pretende hacer la representación y así poder integrar/utilizar el objeto geométrico construido.

Como conclusión en el desarrollo de su trabajo de grado, se infiere que el uso de ayudas computacionales y la utilización de herramientas como los Grafos de Escena, promueven en el estudiante un aprendizaje por experiencia propia; así como, la aplicación de ayudas computacionales, pueden servir para la generación de modelos virtuales de aprendizaje soportados sobre plataformas en Internet para su expansión y uso global.

Posteriormente, el Ingeniero Mauricio Alvarado Lozano, retoma las teorías y prácticas desarrolladas en su trabajo de grado para generar correcciones y mejoras, como se describe a continuación.

En el proyecto de grado establecido por el Ingeniero Alvarado, cuyo título es “ Herramienta Interactiva para el aprendizaje de Grafos de Escena”[2]; partió de la

(19)

19

aplicación SGBuilder ya existente, se extendió y mejoró obteniendo un sistema más usable, interactivo y amigable con el usuario, con la intención que refuerce de una manera mucho más clara el concepto de Grafo de Escena, a través de diferentes elementos de interfaz y de varias vistas sincronizadas con el estado del modelo construido por el usuario.

Mediante su trabajo de grado, el ingeniero pretende generar un tipo de herramienta que apoye efectivamente el aprendizaje, en su caso particular, en el área de computación gráfica y que permita al estudiante aprender con la acción, a través de la construcción de diferentes representaciones de objetos.

Como lo expresa el ingeniero Alvarado en su trabajo de grado, está basado en el proyecto del ingeniero Juan Camilo Ibarra [1], que consistió en el diseño y desarrollo de una aplicación para apoyar el aprendizaje del concepto de Grafo de Escena en el curso de computación gráfica llamada SceneGraphBuilder. El sistema implementado, permite la construcción de modelos jerárquicos en 3D y su visualización y exportación en diferentes formatos; sin embargo, el ingeniero Alvarado, previa revisión de documentos presentados por su antecesor consideró que la aplicación contaba con una gran variedad de funcionalidades; pero a su vez, varias dificultades y defectos para su uso; por ejemplo, no permitía la interactividad esperada y en su manejo no le daba la centralidad merecida al concepto de Grafo de Escena, por lo que se propuso corregir y replantear la interfaz general y varios de sus componentes.

Adicionalmente, identificó y desarrolló en su trabajo, cambios para mejorar la aplicación, como la implementación de una vista de Grafo de Escena editable, el rediseño de la interfaz gráfica principal, la integración de los diferentes elementos de interfaz bajo un modelo MVC, el desarrollo de una vista de códigos y la implementación de la funcionalidad de animación simple, entre otras [2].

En conclusión, en este trabajo se realizaron importantes cambios sobre el sistema, con los que se mejoró su usabilidad, su forma de interactuar con el usuario y de

(20)

20

ofrecerle retroalimentación sobre sus acciones, y su capacidad para servir al fin de apoyar el aprendizaje de Grafos de Escena a través de la acción y de la construcción de modelos jerárquicos 3D.

Para la elaboración del presente proyecto, se tiene en cuenta el kit de herramientas OpenSceneGraph [4], que consiste en una interfaz de programación de gráficos 3D, que se utiliza para simulación visual, juegos de ordenador, realidad virtual, etc. La razón por la que se está tomando en cuenta esta herramienta es porque posee diversas funcionalidades para la manipulación y creación de Grafos de Escena y contiene clases que representan nodos, escenas geométricas, transformaciones, y clases matemáticas para vectores y operaciones de matrices 2D y 3D, lo cual puede resultar de utilidad, pues esta es una de las funcionalidades que se quiere implementar en la aplicación.

2.3. DESCRIPCIÓN DEL PROBLEMA

Actualmente existe la versión actualizada de la herramienta SceneGraphBuilder, gracias a la mejora realizada por el Ingeniero Mauricio Alvarado Lozano. Esta versión, a pesar de haber sido mejorada en varios aspectos todavía presenta algunos problemas tales como: el Grafo de Escena no muestra el detalle de las transformaciones geométricas definidas, impidiendo su comprensión y no permite que el usuario aprenda adecuadamente como interpretar un Grafo.

La aplicación SceneGraphBuilder deber servir como una herramienta de estudio y no solamente para modelar escena 3D; así que, este aspecto a mejorar es muy importante para el proyecto.

Existen también, aspectos faltantes para el fácil uso de la aplicación, tales como configurar el sistema de iluminación, un correcto señalamiento de los ejes y la posibilidad de manejar manualmente el tamaño de las ventanas de la herramienta.

(21)

21

Por último, se considera que la accesibilidad es una limitación importante de la herramienta, ya que, esta no posee un método que le permita llegar fácilmente a los usuarios, haciendo que solo unas pocas personas la conozcan..

Por lo anterior, se piensa que al lograr que la aplicación pueda funcionar vía web, se ampliaría la posibilidad de que muchas más personas conozcan la aplicación y cuente con la facilidad en su adquisición y el aprendizaje sobre el tema de Grafos de Escena.

(22)

22

3. DISEÑO Y ESPECIFICACIONES.

Teniendo en cuenta la problemática anteriormente mencionada, se ha realizado una revisión de la aplicación SceneGraphBuilder, logrando determinar algunos aspectos importantes por mejorar e implementar; actividades que pueden ser desarrolladas como proyecto de grado y que beneficien en gran medida, aspectos relacionados con la usabilidad, accesibilidad y aprendizaje de la aplicación por parte del usuario. 3.1. ESPECIFICACIONES.

3.1.1. Aspectos por mejorar y corregir

 Maximización de la ventana principal de la aplicación, pues actualmente la ventana principal posee un tamaño fijo (reducido) y esto hace que las vistas pierdan espacio de visualización.

 Ampliar la sección de visualización del Grafo de Escena. Para este caso, se pretende que el usuario pueda aumentar/disminuir el tamaño de la ventana de visualización 3D manualmente, según las preferencias que él tenga, de tal forma que pueda ver ambas vistas, o solamente una.

 Completar la sección de luces que se encuentra en la parte inferior del panel de escena 3D, de tal forma que se puedan modificar los parámetros de la luz que se está utilizando en la escena 3D, tales como luz ambiental, difusa, especular y la posición de la misma.

3.1.2. Nuevas funcionalidades a implementar

 Al seleccionar un objeto en el árbol de escena, se debe poder abrir una nueva ventana que permita visualizar la Matriz de Transformación y que muestre las translaciones o rotaciones que se han realizado anteriormente, desde el inicio

(23)

23

del grafo de escena. Esto se hace, para que la aplicación pueda suministrar más información al usuario sobre la teoría detrás de la creación de Grafos de Escena.

 Visualizar las transformaciones que tienen la función de animación activada en el árbol de escena, agregando un indicativo a los iconos, que representen las transformaciones con el fin de identificar más fácilmente las animaciones implementadas en el árbol, pues estas son parte importante de la escena.  Permitir que la aplicación pueda ser utilizada vía web. Para este caso se ha

investigado la herramienta Java Web Start que permite ejecutar aplicaciones Java que se encuentren en un servidor de aplicaciones, facilitando lo que tiene que ver con instalaciones y configuraciones. [3]

Lo que se espera con este mejoramiento, es que la herramienta pueda ser usada como un mejor método de aprendizaje sobre Grafos de Escena y brindar más información útil al usuario. Se espera que la usabilidad de la herramienta mejore de tal forma, que la visualización de la información tanto en la vista del Grafo como en la vista de Escena 3D sea clara, pues actualmente dicha información es poco visible, planteando dificultades en su comprensión.

Esta usabilidad también incluye la parte de cambio de tamaño de las ventanas, permitiendo que el usuario pueda manipular el tamaño de las diferentes vistas según sus preferencias o necesidades. Lo que se espera es tener una aplicación más robusta en términos de usabilidad y aprendizaje, con el fin de que esta pueda ser usada de mejor manera por los estudiantes del curso de computación visual interactiva y otras personas interesadas en el tema de Grafos de Escena.

(24)

24

Habiendo hecho las mejoras correspondientes, se espera que la aplicación pueda ser usada vía web. Como se ha dicho, permitiendo que más personas conozcan la aplicación y puedan acceder a ella más fácilmente.

Utilizando las herramientas investigadas sobre ejecución de aplicaciones vía web, se espera que estas puedan ser utilizadas sin necesidad de que sean descargadas o instaladas en el computador personal del usuario; simplemente, es necesario tener la herramienta Java Web Start para ejecutar la aplicación que puede ser encontrada desde el navegador web.

(25)

25

4. MARCO REFERENCIAL

Para poder desarrollar las actividades de corrección y continuar con el proceso de mejoramiento de la aplicación SceneGraphBuilder, se tomó como referencia el formato X3D, el cual sirvió para entender algunos aspectos referentes a la aplicación y que prestaría el apoyo necesario en el desarrollo de las actividades del proyecto. De igual manera, se utilizó el software de Java Web Start, mediante el cual permitió descargar y ejecutar la aplicación a través de Internet.

Así mismo y como ayuda adicional se investigó sobre el sistema de escenas 3D portátil Open SceneGraph y el proyecto JOGL, que acoge la versión de desarrollo de Java tmBinding para la API Open GL.

4.1. OPEN SCENE GRAPH

Es un conjunto de herramientas de alto rendimiento de gráficos 3D de código abierto, utilizado por los desarrolladores de aplicaciones en campos como la simulación visual, juegos, realidad virtual, visualización científica y modelación. Escrito enteramente en estándar de C++ y Open GL y funciona en todas las plataformas Windows, OSX, GNU/ Linux, IRIX, Solaris, HP-UX, AIX y sistemas operativos FreeBSD [15]. El Open SceneGraph, está bien establecido como el líder mundial en tecnología de escenario gráfico, utilizado ampliamente en los vis-sim, espacio, aceite-gas científica, juegos y las industrias de realidad virtual.

Todos los scenegraphs están diseñados para representar una escena. Debido a esto aproximadamente el 80% de lo que hacen es común entre la mayoría de los gráficos de escena. La mayoría de los escenarios gráficos pueden cargar geometría; o sea que, se lo coloca en el gráfico y lo hacen. La mayoría de escenarios gráficos tienen nodos como grupo, geometría, etc. Lo que hace interesante al OpenSG es que el 20% es diferente pues se trata fundamentalmente de su capacidad de extensibilidad, seguridad multi-hilo y clustering.

(26)

26

Ahora bien; ¿Cuál es la diferencia entre un escenario gráfico y un motor de juego?: Los motores de juego en general son más especializados que scenegraphs. Están diseñados para crear ciertos tipos de aplicaciones (es decir, juegos) y la mayoría de ellos son incluso especializados para ciertos géneros de juegos. Gráficos de escena son mucho más generales. Están diseñados para acomodar una amplia variedad de aplicaciones y pueden adaptarse a los nuevos tipos de aplicaciones mucho más fácilmente. También utiliza la naturaleza jerárquica de la gráfica mucho más riguroso que los motores de juego y tiene objetos a un nivel inferior. Las clases de motores de juego son más a menudo objetos de alto nivel como entidades de juego, mientras que la mayoría de los nodos de escenario gráfico son de nivel inferior y la combinación de los nodos de una jerarquía es lo que los hace útiles.

4.2. FORMATO X3D

X3D es un formato de archivo que permite representar y comunicar escenas 3D usando XML 3D. Permite el almacenamiento, recuperación y reproducción de contenidos gráficos, que se encuentren implementados en aplicaciones con el fin de apoyar dominios y diferentes escenarios de los usuarios.

Tiene también, un rico conjunto de características en componentes que pueden ser adaptados para su uso en la ingeniería y la visualización científica CAD, la arquitectura, visualización médica, entrenamiento, simulación, multimedia, entretenimiento, educación y más.

El desarrollo de la comunicación en tiempo real de datos en 3D a través de todas las aplicaciones y las aplicaciones de red ha evolucionado desde sus inicios como el Virtual Reality Modeling Language (VRML) al estándar X3D considerablemente más maduro y refinado [9].

(27)

27 4.3. TECNOLOGÍA JAVA

Java es un lenguaje de programación y una plataforma informática comercializada por primera vez en 1995 por Sun Microsystems. Es rápido, seguro y fiable; desde portátiles hasta centro de datos, desde consolas para juegos hasta súper computadoras, desde teléfonos móviles hasta Internet, java está en todas partes. Esta tecnología, le permite jugar, cargar fotografías, chatear en línea, realizar visitas virtuales y utilizar servicios como, por ejemplo, cursos en línea, servicios bancarios en línea y mapas interactivos. Si no se dispone de Java, muchas aplicaciones y sitios Web no funcionarán.

También es la base para prácticamente todos los tipos de aplicaciones de red, además del estándar global para desarrollar y distribuir aplicaciones móviles y embebidas, juegos, contenidos basados en Web y software de empresa [10].

4.4. PROYECTO JOGL

Acoge la versión de desarrollo del Java tmBinding para la API OpenGL, y está diseñado para proporcionar el hardware soportado gráficos en 3D para aplicaciones escritas en Java [8].

JOGL proporciona acceso completo a los API en el Open GL (1,0 ... 4,5) ES (1,0 EGL ... 1.5), especificación, así como casi todas las extensiones del vendedor. JOGL integra con los conjuntos de AWT, Swing y widgetsSWT, así como con kits de herramientas de ventanas personalizado utilizando en API NativeWindow. De igual manera, JOGL también proporciona su propio conjunto de herramientas de ventana nativo, EXTASIS.

(28)

28

4.5. MATRICES HOMOGÉNEAS DE TRANSFORMACIÓN 3D

Para el desarrollo de las nuevas funcionalidades se utilizaron los conceptos básicos de matrices de transformación; debido a que, la aplicación SceneGraphBuilder actualmente no posee funcionalidades que permitan realizar acciones más complejas en términos de animación o generación de transformación como rotación en más de un eje al mismo tiempo.

Para esta parte del proyecto se utilizó la teoría de matrices de transformación de translación, rotación y escalamiento, las cuales son explicadas a continuación:

 Matriz homogénea de rotación básica

Rotación en el eje Z:[

𝑐𝑜𝑠𝜃 −𝑠𝑒𝑛𝜃 0 0

𝑠𝑒𝑛𝜃 𝑐𝑜𝑠𝜃 0 0

0 0 1 0

0 0 0 1

]

Rotación en el eje Y: [

𝑐𝑜𝑠𝜃 0 𝑠𝑒𝑛𝜃 0

0 1 0 0

−𝑠𝑒𝑛𝜃 0 𝑐𝑜𝑠𝜃 0

0 0 0 1

]

Rotación en el eje X: [

1 0 0 0

0 𝑐𝑜𝑠𝜃 −𝑠𝑒𝑛𝜃 0

0 𝑠𝑒𝑛𝜃 𝑐𝑜𝑠𝜃 0

0 0 0 1

]

Donde la variable 𝜃 hace referencia al ángulo dado como parámetro en la transformación.

(29)

29  Matriz homogénea de translación:

[

1 0 0 𝑋

0 1 0 𝑌

0 0 1 𝑍

0 0 0 1

]

En este caso las variables X, Y y Z hacen referencia a los valores de la transformación en cada uno de los ejes principales.

 Matriz homogénea de escalamiento:

[

𝑋 0 0 0

0 𝑌 0 0

0 0 𝑍 0

0 0 0 1

]

A diferencia de la matriz de translación los valores de las variables se visualizan en la diagonal.

Al momento de realizar una matriz de composición, se debe tener en cuenta que el orden de multiplicación de las matrices debe ser en forma ascendente respecto al elemento al cual se le quiere generar dicha matriz. Este orden de multiplicación, debe empezar con la primera hasta la última transformación que posea el elemento, para después pasar al siguiente elemento y realizar el mismo procedimiento, lo cual dará una serie de multiplicaciones de matrices que permitirán analizar el posicionamiento del mismo, según sus transformaciones y las de los demás elementos asociados.

(30)

30 4.6. GRAFOS DE ESCENA

Un Grafo de Escena es una estructura de datos utilizada en la construcción de representaciones gráficas de objetos geométricos compuestos (inclusive escenas 3D) que ordena lógicamente una serie de modelos que contiene información acerca de cada uno de los elementos que componen dicho objeto geométrico. Esta estructura organizada como un árbol n-ario permite que un nodo tenga una cantidad indefinida de hijos pero que únicamente tenga un padre y en donde una operación sobre un nodo se propaga automáticamente sobre todos sus hijos. La utilización de este tipo de estructura se debe principalmente a la necesidad de organizar dicha información de forma jerárquica con la finalidad de obtener una mayor eficiencia en la construcción de escenarios interactivos.

Otro punto importante de este tipo de diseño es que, además de tener información geométrica y de visualización, también se puede tener nodos con información adicional, como sonidos, detección de colisiones y fuentes de datos que ayudan a enriquecer el objeto geométrico representado. La utilización de este tipo de estructura conlleva un proceso de construcción cíclica de un objeto geométrico compuesto en 4 etapas: Generación, Recorrido, Transformación, Rasterización y Visualización [1].

4.6.1. Generación: En esta etapa se genera el Grafo en Escena con datos obtenidos a partir de los objetos y sus relaciones que definen un objeto geométrico compuesto en caso de ser el primer ciclo de construcción del mismo o datos actualizados en caso de ser un ciclo posterior de construcción.

4.6.2. Recorrido: En esta etapa se recorre el Grafo de Escena actualizado para generar los datos de entrada para etapas posteriores e información para crear los comandos adecuados de la tecnología utilizada.

(31)

31

4.6.3. Transformación: En esta etapa se aplican las transformaciones necesarias como matrices de transformación, generación de coordenadas de textura, clipping o iluminación, a las primitivas o al conjunto de datos que las definen.

4.6.4. Rasterización y Visualización: Esta etapa es ejecutada por el API gráfico y consiste en la transformación de representaciones geométricas de alto nivel en pixeles. Dichos pixeles según sus características, son finalmente enviados y dibujados por el dispositivo de salida, generalmente una pantalla de computador [1].

4.7. APACHE TOMCAT

Apache Tomcat ™ es una aplicación de software de código abierto de las tecnologías Java Servlet y JavaServerPages. Las especificaciones Java Servlet y JavaServerPages son desarrollados bajo la Java CommunityProcess.

Apache Tomcat se desarrolla en un entorno abierto y participativo y liberado bajo la licencia Apache versión 2. Apache Tomcat está destinada a ser una colaboración de los desarrolladores mejor de su clase en todo el mundo [5].

(32)

32

5. DESARROLLO DEL DISEÑO

Para la primera parte del mejoramiento de la aplicación, la cual tiene que ver con la maximización de la venta principal y el manejo de las vistas de Grafo y Escena 3D, se propuso el cambio de ventanas a través de un menú. Las opciones posibles son: Ventana JGraph/JTree que muestra el grafo de escena y la ventana Escena 3D/Archivo que se pueden ver de forma separada o juntas. Además también se piensa dejar maximizada la ventana principal desde que inicia la aplicación, esto para darle más comodidad al usuario desde el principio, pero aun así es posible variar el tamaño de dicha ventana libremente.

Al haber realizado las correcciones antes mencionadas se pasa a la implementación de nuevas funcionalidades, empezando por utilizar la herramienta Java Web Start para poder descargar la aplicación solo una vez y poderla utilizar de la misma manera como se hace localmente, esto con el fin de facilitarle al usuario su adquisición y posterior uso.

Posteriormente se pasa a la parte de implementación de las matrices de transformación. Para este caso se ha decidido hacer una ventana que muestre la definición de cada matriz homogénea de transformación, en donde se puedan ver los valores que posee y además, cómo es generada la matriz a partir de sus parámetros. También es importante ver las transformaciones asociadas a un objeto, de tal forma que el usuario pueda entender su composición en el orden correcto. Para esto se va a generar otra ventana que muestre la multiplicación de matrices asociadas a un objeto y que a la vez muestre toda la información de cada una de las transformaciones. A partir de estas tareas antes mencionadas se optó por crear las clases NewMatrixFrame y MatrixCompositionFrame, las cuales manejaran la creación de la matriz de transformación y composición por separado. Estas dos clases serán observadas por la clase principal MainClassJigloo, a continuación se

(33)

33

presenta un diagrama que representa la relación entre estas nuevas clases y la principal.

Figura 1. Modelo de clases, clases implementadas

Para visualizar las animaciones en el Grafo de Escena, se optó por utilizar nuevos iconos para cada una de las transformaciones, de tal forma que distingan una transformación animada de una sin animar, sin que se vea afectada la visualización del Grafo de Escena.

(34)

34

6. IMPLEMENTACIÓN

6.1. DESCRIPCIÓN DE LA IMPLEMENTACIÓN.

El proceso de implementación inicia con la sección de mejoramiento y corrección de fallas en la aplicación, para luego dar paso a la instalación de nuevas funcionalidades.

En esta sección se explicará en detalle cada una de las etapas de implementación en los aspectos antes mencionados, ya que, esta aplicación basa su funcionamiento en la parte gráfica. Cada una de las etapas será sustentada con imágenes comparativas respecto a cómo era la aplicación antes y como luce actualmente, evidenciando sus mejoramientos y nuevas funcionalidades.

6.1.1. Manejo en el tamaño de las ventanas de la aplicación

Para este caso se ha tomado la opción de utilizar un menú para cambiar el tamaño de las ventas de la aplicación y maximizar la ventana principal desde un principio, permitiendo aun así cambiar su tamaño libremente. A continuación, se presentaran imágenes que corresponden a la visualización de la ventana principal anteriormente y luego mostrará las diferentes vistas generadas con los cambios realizados.

(35)

35

Figura 2. Ventana principal versión sin modificaciones

Como se pudo apreciar en la anterior imagen, la ventana principal (representaciones JGraph y JTree) no ocupa el total de la pantalla del computador y tampoco permite cambiar el tamaño de esta libremente, lo cual es algo que ya se logró mejorar y se puede evidenciar en la siguiente imagen.

(36)

36

Figura 3. Ventana principal maximizada al iniciar la aplicación

Como se puede observar, el tamaño de la ventana ya corresponde al de la pantalla del computador, y también fue habilitada la función de cambio en el tamaño, ya sea, con el botón de minimización de la ventana o libremente con el Mouse. En el menú de la ventana principal, se agregó un nuevo botón llamado “ 3D Visualization”, el cual despliega un menú y está compuesto por tres opciones que son “JGraph view visulization”, la cual permite cambiar la vista de la venta principal para que ahora solo se vea el Grafo de Escena y su información en la parte inferior en pantalla completa, “3D view visulization”, la cual permite visualizar la escena 3D en pantalla completa y por último, “JGraph and 3D view visualization”, la cual permite volver a ver ambas vistas tal y como se muestra en la anterior imagen; es decir, vuelve a su forma inicial de visualización.

(37)

37

Figura 4. Visualización grafo de escena

Figura 5. Visualización vista 3D

Para el caso de la visualización de vista 3D, fue necesario cambiar el método que generaba la escena 3D a partir del tamaño de la ventana, ya que, al momento de

(38)

38

agrandar la escena se distorsionaba y no se podía visualizar correctamente. Este cambio consistió en realizar un cálculo que permitiera modificar la forma como se construye la escena, según el cambio de tamaño de la ventana de la misma. Este cálculo tiene en cuenta tanto el ancho, como el alto del tamaño actual de la ventana y también la rotación de la cámara sobre su propio eje con respecto al eje X, a lo cual se le denomina paneo en X.

El cálculo en si es: (paneoX * altura de la ventana) / ancho de la ventana, esto permite generar el paneo sobre el eje Y, y estos valores son usados para construir la escena de tal forma que pueda visualizarse correctamente.

Figura 6. Calculo de construcción de escena

6.1.2. Utilizar la herramienta Java Web Start para la descarga de la aplicación Las últimas versiones de java, tales como Java 7 y Java 8, posee la herramienta Java Web Start, por tal razón solo es necesario tener instalado alguna de estas versiones de java para así poder utilizar la herramienta. Es importante que la versión instalada, sea de 32 bits o 64 bits, dependiendo de la maquina a utilizar. Lo anterior debido a que esto puede generar problemas de ejecución de las aplicaciones e impedirá que estas puedan ser utilizadas o actualizadas.

Java Web Start tiene la responsabilidad de actualizar la aplicación cada vez que se ejecuta, descargándola automáticamente en caso de que exista alguna versión reciente de la misma en el servidor implementado. Esto permite que los cambios no obliguen al usuario a usar el navegador nuevamente para descargar la aplicación. Para descargarla por primera vez, solo se necesita ingresar en el navegador la dirección IP del servidor de descarga seguido del nombre de la aplicación a

(39)

39

descargar, en el formato que corresponda (por ejemplo, http://localhost:8080/proyecto.zip). Para el caso de esta aplicación, el archivo a descargar es un .zip, el cual contiene la aplicación a ejecutar en formato jnlp que se explicará más adelante, una carpeta que contiene las imágenes que se usan en la aplicación y tres archivos .dll de nombres jogl_awt.dll, jogl_cg.dll y jogl.dll. Estos tres archivos son importantes, ya que, permiten que se pueda ejecutar la vista de escena 3D de la aplicación. Los archivos deben ser colocados en la carpeta System32 o SysWOW64, dependiendo si el computador donde se ejecuta es de 32bits o 64bits respectivamente; ya que, al momento de ejecutar la aplicación Java Web Start buscará estos archivos en la carpeta correspondiente para que así la aplicación pueda ejecutarse por completo.

Después de haber realizado estos pasos, el cliente podrá utilizar la aplicación normalmente como si estuviera localmente en la máquina.

A continuación, se procederá a explicar la implementación del servidor que contiene todos estos archivos descargados.

Como servidor de aplicaciones se decidió utilizar Apache Tomcat 8; ya que, este permitía almacenar y cargar archivos de tipo jnlp, formato este que necesita Java Web Start para poder ejecutar la aplicación Java.

Para poder utilizar la aplicación en Java Web Start se necesitó realizar ciertos requerimientos:

 En primer lugar, se necesita tener el archivo .jar de la aplicación firmado con una llave previamente creada, con el finque Java Web Start verifique la autenticidad de la aplicación al momento de ejecutarla.

Debido a que la llave fue generada de manera manual, esta no proporciona ningún tipo de aseguramiento que pueda ser comprobado; por tal razón, al momento de ejecutar la aplicación se lanzará un aviso de precaución, el cual solamente en este caso puede ser ignorado, ya que, se posee un claro conocimiento de la aplicación que se está descargando, pero aun así es

(40)

40

necesario firmarlo para que Java Web Start pueda proceder con su ejecución.

El proceso de firma de la aplicación .jar es el siguiente:

Se debe abrir una ventana de comandos, para después dirigirse a la carpeta en donde se encuentra el jdk, ya que este posee el ejecutable que permite la firma del archivo.

Después, es necesario utilizar el siguiente comando para crear una llave de firma:

keytool -genkey -keystore llaveEjemplo -alias jdc

En donde llaveEjemplo es el nombre que el usuario le da a la llave a crear. Ya con la llave creada se utiliza el siguiente comando para firma el .jar ejecutable de la aplicación:

jarsigner -keystore llaveEjemplo graphbuilderapp.jar jdc

 Teniendo ya el .jar firmado, se pasa a generar el archivo .jnlp, el cual es un

archivo que por dentro posee el nombre del archivo .jar de la aplicación y la URL del servidor de aplicaciones que debe ser ingresada en el navegador. Cada vez que la aplicación se trate de ejecutar, Java Web Start pedirá al archivo .jnlp la URL del servidor de aplicaciones y el nombre del archivo .jar para verificar que existan en el servidor y proceder a descargarlo si es necesario, y así, finalmente ejecutarlo en caso que todas las verificaciones hayan terminado exitosamente. A continuación el contenido de este archivo .jnlp:

(41)

41

Figura 7. Contenido archivo .jnlp

 Tanto el archivo .jnlp como.jar, fueron agregados en el servidor de la aplicación, para después generar el archivo comprimido que contiene las imágenes de la aplicación, el archivo .jnlp y los archivos .dll antes mencionados.

Este archivo comprimido será descargado por el cliente al final, pero es necesario tener los ejecutables por separado en el servidor para poder realizar las verificaciones antes mencionadas.

6.1.3. Visualización de matrices homogéneas de transformación.

Se decidió iniciar con la implementación de la matriz de una transformación en específico, para después proceder a crear la serie multiplicaciones de las mismas correspondientes a un elemento dado.

(42)

42

Para la visualización de una matriz, se implementó una nueva ventana que mostrará: tanto la matriz de transformación, como los datos de la misma según su tipo; que puede ser, de rotación, translación y escalamiento.

A continuación se pueden ver las ventanas de las matrices correspondientes a cada tipo:

(43)

43

Figura 9. Matriz de rotación

(44)

44

Como se puede observar, cada una de las matrices tiene su nombre representativo según su tipo de transformación y cada transformación tiene 3 o 4 parámetros según su tipo.

Para el caso de las rotaciones están: el ángulo de rotación y los valores correspondiente a los ejes X, Y y Z.

En el caso de las translaciones y escalamientos, solo se toman en cuenta los valores de los tres ejes. Estos parámetros se pueden observar en la parte superior de la ventana, para así poder entender mejor de donde salen los valores que aparecen en la matriz que se encuentra en el centro de esta.

La matriz de transformación fue realizada con una serie de condiciones que correspondieran a la teoría detrás de estas, permitiendo que los cambios en los parámetros de la transformación se evidenciaran correctamente en la matriz. Adicionalmente, se tomó en cuenta las transformaciones con animaciones, para lo cual se estableció otras condiciones según los parámetros dados.

Como se mencionó anteriormente, las transformaciones tienen 3 o 4 parámetros según su tipo, pero cuando una transformación está animada, el número de parámetros se duplica; ya que, se tiene un valor inicial y un valor final para cada parámetro.

En el caso de las rotaciones solo se duplica el valor del ángulo teniendo un ángulo inicial y un ángulo final; sin embargo, para los otros dos tipos de transformaciones se tendrá un valor inicial y final para uno o más ejes.

Además de estos parámetros en adelante, se posee el valor de delta, el cual es el que determina la velocidad con la que el valor inicial va a llegar al valor final.

Para hacer que la matriz reconozca cuando una transformación es animada o no, se tuvieron en cuenta los parámetros antes mencionados y se elaboró una condición en la cual se pregunta:¿cuál es el número de parámetros que posee la transformación?. En el caso de la rotación, si este número sobre pasa el valor de 4,

(45)

45

quiere decir que es animada; ya que, si tiene más de cuatro parámetros está teniendo en cuenta el valor final del ángulo y también el valor de delta de animación. El mismo procedimiento se aplica a las otras dos transformaciones.

A continuación se pueden observar las ventanas de matrices de transformación con animaciones:

(46)

46

Figura 12. Matriz de translación con animación

(47)

47

Como se observa en las figuras presentadas; en la sección de los valores de los parámetros en la parte superior de la ventana, se muestra un rango de valores dependiendo sobre los cuales se quiere realizar la animación.

En caso que en algún parámetro no se esté aplicando a alguna animación, este continúa mostrando solamente el valor inicial que le corresponde, o cero en caso que no se lo esté teniendo en cuenta en la transformación.

Debido a que los valores que toman los parámetros con rango cambian con el tiempo dependiendo del valor de delta, en la matriz de transformación solo va a aparecer un indicativo sobre dicha variación en los valores. A pesar que era posible colocar el valor de delta dentro de la matriz, se decidió que esto no era necesario, debido a que esta es una función que le brinda al usuario información sobre las matrices de transformación; pero, en caso que existan transformaciones con animación, no es tan importante el valor que tenga delta, tan solo con ver la estructura de la matriz es suficiente para que el usuario entienda como se construye dicha matriz.

Teniendo ya las matrices de transformación, se pasó a la implementación de la visualización de la composición de matrices, para un elemento en específico. Para esto, se implementó una nueva ventana que va a contener una matriz de 1 fila por n columnas; donde n son el número de transformaciones que hacen parte de la composición para un elemento seleccionado.

Cada una de las celdas de la matriz de la nueva ventana, tendrá la información de los parámetros de cada. Cada una de estas celdas con descripciones va separada de un signo por (x), de tal forma que se representa la multiplicación de matrices de forma más clara. En caso de que algún objeto no tenga una transformación se coloca la matriz de identidad en la posición respectiva, en donde los parámetros de cada eje son iguales a cero.

(48)

48

Figura 14. Composición de matrices para un elemento

Para generar esta secuencia de matrices, fue necesario hacer un recorrido por el Grafo de Escena; iniciado desde la raíz del mismo, de tal forma que vaya buscando cada uno de sus hijos, los cuales corresponderían a los diferentes elementos de la escena y al mismo tiempo estos busquen sus transformaciones asociadas, recorriéndolas desde la última hasta la primera. Lo anterior, debido a que la secuencia de transformaciones debe ir de arriba hacia abajo en el Grafo, tal y como se muestra en el mismo, y las transformaciones se agregan a cada elemento dejando la primera por debajo de la última. Por tal razón, se debe hacer un recorrido empezando desde la última transformación de cada elemento, para que así el orden de todas las transformaciones sea descendente, hasta llegar a la última requerida. El algoritmo implementado busca por cada elemento su transformación según el código que tienen asociado, de esta forma se sabe cuál va primero que otro y lo mismo sucede con los elementos. El algoritmo utiliza los identificadores que estos poseen para saber por qué rama del Grafo debe irse, de tal forma, que llegue al elemento seleccionado.

A cada transformación se le pide su tipo, sus parámetros y el nombre del elemento al que está asociado, esto con el fin que el usuario pueda determinar más fácilmente cual es la transformación que está viendo en esta ventana, sin necesidad de tener que visualizar nuevamente el Grafo de Escena.

(49)

49

6.1.4. Visualización de animaciones en el Grafo de Escena.

Para poder visualizar las animaciones en la escena, se diseñaron nuevos iconos que deberán aparecer cada vez que se cree una transformación con animación. Para lograr esto, se utilizó la misma condición que con las matrices de transformación, la cual dice, que si el número de parámetros de una transformación es superior a 4 en el caso de las rotaciones o 3 para los otros dos casos, se utiliza un icono específico de animación.

A continuación se presentan los iconos implementados, los cuales permiten distinguir que transformación es animada o no:

Imagen 15. Nuevos iconos de rotación, escalamiento y translación con animación.

(50)

50

6.1.5. Permitir la edición de los parámetros de iluminación en la escena 3D

Para esta etapa se tomaron en cuenta cuatro componentes de luz, los cuales son: color de luz ambiental, coeficientes de luz especular, coeficientes de luz difusa y posición 3D de la luz en la escena.

La luz ambiental es una cantidad mínima que se emite en cualquier posición de la escena. La luz difusa es emitida desde el punto de luz que rebota en todas las direcciones, la luz especular es emitida en una dirección que rebota según la normal del polígono o el elemento que se representa en la escena en este caso, lo cual provoca el brillo puntual del objeto y por último, se tiene la posición de la luz, que como su nombre lo indica la posición de la misma dentro de la escena 3D [14]. Cada uno de estos componentes posee 4 parámetros numéricos, los cuales determinan el RGBA (Red, Green, Blue, Alpha)[15], es decir que estos parámetros permiten cambiar el color de la luz (R, G y B) o también si el objeto puede verse transparente u opaco (Alpha).

Teniendo en cuenta estos cuatro parámetros, se realizó un panel que permitiera editar dichos valores de forma sencilla, de forma que los cambios realizados se vean directamente en la escena 3D.

(51)

51

Este panel se agregó como una pestaña más a la sección VisualizationSettings, que se encuentra debajo de la escena 3D, esto debido a que anteriormente esta pestaña ya existía pero se encontraba vacía.

Cada uno de los valores que aparecen en el panel se puede modificar individualmente, sin necesidad de cambiar todos los valores para que se realice la modificación de luz. Para esta sección se crearon dos botones: un botón “Edit” el cual realiza el cambio de luz cuando uno o varios de los parámetros es modificado, y en caso de que el usuario quiera volver a los valores iniciales, los cuales, aparecen en el momento de correr la aplicación. (Estos pueden ser vistos en la figura 15) También se creó un botón “Reset”, de tal forma que el usuario pueda volver más fácilmente al estado lumínico inicial en caso de necesitarlo.

(52)

52

Al iniciar la aplicación SceneGraphBuilder las componentes de luz inician con unos valores por defecto, los cuales permiten visualizar la escena 3D normalmente como se ve en la parte izquierda de la imagen anterior.

6.2. RESULTADOS ESPERADOS.

6.2.1. Manejo del tamaño de las ventanas de la aplicación

Para esta sección se esperaba que el cambio de vistas fuera rápido y sencillo, ya que el usuario en ocasiones quiere ver la información de mejor manera y en ocasiones tiene que ver las vistas varias veces.

Se puede observar, que el cálculo realizado para generar correctamente la escena 3D al momento de cambiar el tamaño de la ventana es apropiado, y permite ver la escena como si el tamaño de la ventana fuera cuadrada.

Esta solución a pesar que puede no ser totalmente exacta, genera una vista cómoda para el usuario y no provoca una distorsión a simple vista.

6.2.2. Utilización de Java Web Start para la descarga de SceneGraphBuilder En esta etapa se espera que el usuario sea capaz de descargar la aplicación de forma sencilla, de tal forma que solo tenga que realizar este proceso solo una vez y pueda utilizar la aplicación de la misma manera como se hace localmente. Además, se espera que la aplicación pueda ser actualizada sin afectar al usuario.

6.2.3. Implementación de matrices de transformación.

Al terminar esta etapa se espera que la aplicación SceneGraphBuilder sea capaz de suministrar más información al usuario con respecto a la teoría de Grafos de Escena, más específicamente sobre las matrices de transformación y la

(53)

53

composición de las mismas para un elemento dado, mostrando de forma clara la composición de dichas matrices con sus diferentes valores y parámetros dados, además de mostrar, el orden correcto de multiplicación de matrices para un elemento, de tal forma que el usuario pueda ver fácilmente que matrices se están multiplicando sin necesidad de cambiar de ventana o buscar información adicional en el Grafo de Escena.

6.2.4. Cambio de los parámetros de la luz de la escena 3D

Para esta etapa, se espera que el usuario pueda utilizar el recurso de cambiar libremente los parámetros de la luz de la escena, para entender cómo afectan estos cambios a un objeto y así comprender la teoría detrás de estas luces, en lo que tiene que ver con colores, posiciones o reacción de los objetos a los cambios de luz.

(54)

54

7. VALIDACIÓN

Para validar el correcto funcionamiento de las visualizaciones en las ventanas de la aplicación y de la generación de la escena 3D al cambiar su tamaño, se probó con computadoras, variando el tamaño de sus pantallas. Inicialmente se pensó, que se podría presentar complicaciones con el cálculo realizado y que este no sea efectivo; ya que, las medidas con que se llevó a cabo las pruebas iníciales eran diferentes. Sin embargo, se logró comprobar que el cálculo realizado, permite generar las escenas de forma óptima así se aplique en computadoras con pantalla de diferentes medidas, bien sea portátil o de escritorio.

Con respecto al funcionamiento de Java Web Start se llevó a cabo pruebas en diferentes maquinas, primordialmente para garantizar el buen funcionamiento del lado del cliente.

Se realizaron pruebas con equipos de 32 y 64 bits, permitiendo ver que los archivos .dll deben ser colocados en las carpetas System32 y SysWOW64 respectivamente, para el correcto funcionamiento de la aplicación.

A raíz de estas pruebas efectuadas, se validó el correcto funcionamiento de la herramienta para la ejecución de la aplicación SceneGraphBuilder, en ambos tipos de máquinas.

Para la validación de las matrices de transformación, se hizo pruebas con distintas transformaciones, en donde se verifican sus matrices comparándolas con matrices realizadas manualmente, según la teoría de las mismas; permitiendo ver, que los resultados son iguales y se logró confirmar el correcto funcionamiento de esta nueva funcionalidad.

Al igual que con las matrices de transformación, se llevó a cabo varios cambios entre transformaciones animadas y no animadas, para así determinar el correcto funcionamiento de los nuevos iconos creados.

(55)

55

Estas pruebas no solo se realizaban al crear una transformación, sino también al editarla y también se pudo observar que el cambio de iconos funciona en ambos casos.

Para validar el cambio en los parámetros de la luz, se utilizaron varios objetos con diferentes colores, para así comprobar cada uno de los posibles cambios que se podían generar según la teoría detrás de las luces en la escena 3D.

(56)

56

8. CONCLUSIONES.

Para mejorar la funcionalidad y atributos de calidad de la aplicación SceneGraphBuilderde apoyo a la enseñanza del concepto de Grafo de Escena en el área de Computación Visual se requirió un proceso de identificación de limitaciones y mejoras. Estas limitaciones y mejoras se pueden clasificar en dos grupos: uno relacionado con la Usabilidad de la herramienta y otro con mejorar la comprensión del concepto del Grafo de Escena. A continuación los aspectos en que se trabajó para generar una versión mejorada de la herramienta:

 La nueva visualización de las ventanas de vista de escena 3D y Grafo de Escena, permiten observar de mejor manera la información que ellas ofrecen, además de poder navegar a través de ellas de una manera más cómoda y sencilla, permitiendo que el usuario pueda priorizar la información que quiera ver y no tenga que visualizar información que no necesita.

 El correcto funcionamiento de la exportación de código, permite que el usuario pueda reutilizar la escena creada en un nuevo proyecto sin la preocupación de detectar errores o diferencias en la escena creada anteriormente, además que ahora, ya no necesita realizar algún procedimiento adicional para su ejecución, lo cual facilita su uso.

 Gracias a la herramienta Java Web Start se facilitó la adquisición de la aplicación SceneGraphBuilder, permitiendo que esta solo sea descargada una vez y pueda ser utilizada de manera local.

 La implementación de matrices de transformación aumentó la cantidad de información teórica sobre Grafos de Escena que se puede visualizar en la aplicación, lo cual permite que la herramienta ahora, pueda ser usada como un método de estudio y no solo de instalaciones de escenas 3D.

(57)

57

9. RECOMENDACIONES

El trabajo realizado puede continuarse en varios aspectos que permitan mejorar o complementar los resultados obtenidos, de manera que, se llegue a desarrollar una herramienta mucho más robusta en el tema de creación de Grafos de Escena y visualización 3D. En particular se plantea trabajar en los siguientes aspectos:

 Validar el funcionamiento de las nuevas funcionalidades y correcciones con los estudiantes del curso computación visual interactiva.

 Complementar la vista de elementos que se encuentra en la sección de vista 3D de la escena.

 Completar y validar la generación de código JAVA y/o C++ asociado a los grafos de escena creados con la herramienta. En particular, el código asociado a las animaciones.

 Agregar más de una luz a la escena y que estas puedan ser modificadas en sus parámetros de la misma manera como se hace con la luz que

actualmente está presente en la escena.

 Agregar nuevos nodos que permitan visualizar nuevas luces y cámaras en el Grafo de Escena.

(58)

58

BIBLIOGRAFÍA

1. Ibarra Juan Camilo, Creación Interactiva de Grafos de Escena para Aplicaciones Graficas 3D. Proyecto de grado, Universidad de los Andes, Bogotá, 2007. [En línea] http//:biblioteca.uniandes.edu.co

2. Alvarado Lozano Mauricio, Herramienta Interactiva para el Aprendizaje de Grafos de Escena. Proyecto de grado, Universidad de los Andes, Bogotá, 2010. [En línea] http//:biblioteca.uniandes.edu.co

3. Java Web Start Especificación y API. [En línea] https://www.java.com/es/. Ultima consulta: 23 – 06 – 2015.

4. Open SceneGraph Especificación. [En línea]

http://www.openscenegraph.org/.Ultima consulta: 23 – 06 – 2015.

5. Apache Tomcat 8. [En línea] https://tomcat.apache.org/index.html. Ultima consulta: 23 – 06 – 2015.

6. OpenSG [En línea] ([En línea] http://www.opensg.org/). Ultima consulta: 23 – 06 – 2015.

7. OpenSceneGraph (http://www.openscenegraph.org/. Ultima consulta: 23 – 06 –

2015.

8. Jogl ([En línea] http://jogamp.org/jogl/www/). Ultima consulta: 23 – 06 – 2015.

9. X3D ([En línea] http://www.web3d.org/x3d/what-x3d). Ultima consulta: 23 – 06 –

2015.

10. Java Web Start. [En línea]

https://www.java.com/es/download/faq/java_webstart.xml. Ultima consulta: 23 – 06 – 2015.

11. De La Rosa Fernando, Localización Espacial. Computación visual Interactiva. Universidad de los Andes, Bogotá,Enero 2014.Ultima consulta: 23 – 06 – 2015.

(59)

59 12. Transformaciones lineales en 3D. [En línea]

http://di002.edv.uniovi.es/~rr/Tema2.pdf. Ultima consulta: 23 – 06 – 2015.

%203D.pdf. Ultima consulta: 23 – 06 – 2015.

13. Componentes de luz. ([En línea]

http://dmi.uib.es/~josemaria/OpenGL/Iluminacion.html ). Ultima consulta: 23 – 06 –

2015.

14. Parámetros de luces. ([En línea]

http://www.fing.edu.uy/inco/cursos/compgraf/Clases/2012/14-Iluminacion%20y%20Sombreado%5BopenGL%5D.pdf ). Ultima consulta: 23 – 06 –

2015.

15. Sistema operativo FreeBSD. ([En línea] https://www.freebsd.org/es/about.html) Ultima consulta: 23 – 06 – 2015.

Referencias

Documento similar

¿Cómo se traduce la incorporación de ésta en la idea de museo?; ¿Es útil un museo si no puede concebirse como un proyecto cultural colectivo?; ¿Cómo puede ayudar el procomún

Primeros ecos de la Revolución griega en España: Alberto Lista y el filohelenismo liberal conservador español 369 Dimitris Miguel Morfakidis Motos.. Palabras de clausura

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

Tras establecer un programa de trabajo (en el que se fijaban pre- visiones para las reuniones que se pretendían celebrar los posteriores 10 de julio —actual papel de los

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

En el capítulo de desventajas o posibles inconvenientes que ofrece la forma del Organismo autónomo figura la rigidez de su régimen jurídico, absorbentemente de Derecho público por

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación