4 Prototipo *

4.1 Herramientas *

4.2 Requerimientos de Hardware *

4.3 Componentes y métodos del sistema *

4.4 Funcionalidad de 3DTree *


4 Prototipo

En este capítulo se describen las herramientas utilizadas para la implementación de un prototipo para 3DTree, los requerimientos del hardware utilizado, los componentes y la funcionalidad de 3DTree.

 

 

El prototipo fue implementado en el lenguaje de programación Java. Este lenguaje se encuentra bajo el paradigma orientado a objetos y tiene la ventaja de ser portable a través de plataformas y sistemas operativos. También se utilizaron las clases de Java 3D que son una interfaz para programación que permite crear aplicaciones gráficas en 3 dimensiones. Proporciona las herramientas necesarias para la creación y manipulación de geometrias en 3D y para la construcción de estructuras utilizadas para almacenar las geometrías. Java 3D es parte de los API's de Java y de esta forma permite que sea accesible en todas las plataformas. También se integra a Internet porque las aplicaciones y applets escritos en Java 3D tienen acceso a todo el conjunto de las clases de Java. Java 3D obtiene ideas de otros APIs existentes y de nuevas tecnologías. Los gráficos Java sintetizan las mejores ideas encontradas en APIs como son Direct3D, OpenGL, QuickDraw3D y XGL [OpenGL 1998]. También se utilizaron las clases de mijdbc de Java para la conexión con la base de datos en Informix Universal Server (IUS). Desafortunadamente, por ahora los navegadores no cuentan con las características necesarias para desplegar un applet que utilice el API de Java 3D, por esta razón, no es posible aún accesar el prototipo en Web desde un navegador hasta que sea creado el plugin o la versión del navegador que permita accesarlo.

 

4.2 Requerimientos de Hardware

 

La utilización de las librerías de Java 3D tienen ciertos requerimientos de hardware como el chip Creator 3D el cual hace uso (como Java 3D) del API de OpenGL. Creator 3D es un acelerador utilizado para productos de propósitos gráficos de rango medio [Java3D 1998b].

 

3DTree está formado por 5 componentes como se explicó anteriormente en el capítulo 4, estos son: el contenedor de herramientas, la escena de 3 dimensiones, el generador de objetos de 3 dimensiones, el componente para la conexión con la base de datos y el administrador de eventos. Para la implementación de estos componentes en el prototipo se generaron las siguientes clases: Panel, SliderPanel, Scene3D, Positions, ID, MouseBehavior, MousePick, MouseZoom, MouseRotate, DBconnect y Circle. El diagrama de objetos de estas clases puede observarse en la Figura 21.

Figura 21. Modelo de objetos de 3DTree

 

La clase Panel establece los elementos de la interfaz del sistema como son la barra de desplazamiento para la selección de la familia, el botón para escoger la familia y el Canvas que contendrá el árbol jerárquico.

 

La clase SliderPanel se encarga de conectarse a la base de datos y obtener de ella todas las familias existentes. Ordena las familias alfabéticamente y las muestra en la barra de desplazamiento de donde el usuario podrá seleccionar la familia con la que se generará el primer nivel del árbol. Desde esta clase se manda a llamar a métodos de la clase Scene3D que es la que generará todos los elementos necesarios para la visualización del árbol.

 

Scene3D es la clase que utiliza las librerías de Java 3D para la generación de la escena en 3 dimensiones. La escena en 3D consiste en una estructura de componentes (Figura 22) que son: el universo virtual (Virtual Universe), el localizador de objetos (Locate Object), las ramas (Branch Graphs) que contendrán a los grafos (Graphs) para que éstos puedan ser agregados a la estructura. A continuación se explicará brevemente en qué consiste cada uno de los componentes y cómo deben ser creados.

Figura 22. Estructura de componentes de una escena en 3 dimensiones (adaptada de [Java 3D 19098a])

El universo virtual provee un fondo que será utilizado para los grafos de las escenas. Todos estos grafos tendrán que conectarse a un objeto universo para que puedan ser desplegados.

 

El objeto localizador define el origen y resolución de los grafos que han de ser agregados. El universo virtual deberá contener todos los localizadores necesarios: por ejemplo un localizador puede ser el que define el origen en (0, 0, 0).

 

El grafo de la escena comienza con los nodos de una rama, la rama es la raíz de un subgrafo de la escena. Sólo los objetos de la rama pueden ser agregados a los localizadores de objetos.

 

En el ejemplo que se muestra en la Figura 22 existen 2 grupos de ramas y de esta forma los dos nodos atados a la izquierda de uno de los grupos de ramas son 2 subgrafos. Los nodos agregados a los grupos de ramas son los subgrafos, algunos subgrafos son ambientes que contienen código en Java para la manipulación de la matriz de transformación que esta asociada con la geometría de los objetos. El otro subgrafo en este grupo de ramas consiste en un grupo de transformación que especifica la posición, orientación y escala de los elementos geométricos que están el universo virtual.

 

Un hijo o una figura en 3 dimensiones se refiere a dos objetos componentes: un objeto geométrico y la apariencia de un objeto. La geometría de un objeto describe la forma geométrica de un objeto en 3 dimensiones y la apariencia de un objeto describe la apariencia de la geometría.

 

El grupo de ramas del lado derecho tiene un subgrafo que consiste en un grupo de transformación y una plataforma de vista (viewplataform). El grupo de transformación especifica la posición de orientación y la escala de la plataforma de vista. Esta plataforma de vista transformada define la vista final del usuario con el universo virtual.

 

Finalmente la plataforma de vista esta referenciada por un objeto que se está viendo, el cual especifica todo los parámetros necesarios para obtener la escena desde el punto de vista de la plataforma. También los otros objetos que contienen la información están referenciados por aquel objeto que se esta viendo, todos estos objetos serán dibujados en el canvas que los agregará a la pantalla [Java 3D 1998a].

 

La clase MouseBehavior establece si se ha hecho algún movimiento por el ratón. Se realizan las operaciones correspondientes a los movimientos, ya sea el acercamiento, la rotación o la selección. De acuerdo a esta operación se hace una llamada a las clases de MouseZoom, MouseRotate ó MousePick las cuales necesitan ser agregadas al universo para su utilización.

 

Si la opción del usuario fue el acercamiento la clase MouseZoom realizará las operaciones correspondientes para establecer la distancia en que la escena en 3D será acercada o alejada del usuario. Si es un acercamiento el ratón debe ser deslizado hacia el frente, si lo que se quiere es un alejamiento el ratón debe deslizarse hacia atrás.

 

La clase del MouseRotate también funciona de acuerdo a los movimientos del ratón, realiza las operaciones necesarias para obtener el ángulo que el usuario a generado desde el ratón para la rotación del árbol.

 

MousePick tiene una función importante en el sistema pues se encarga de obtener el punto en coordenadas de x,y,z de aquel objeto o nodo que ha sido seleccionado por el usuario. De acuerdo a este punto obtendrá el ID correspondiente al nodo y lo enviará a la clase Positions.

 

En la clase Positions se efectúan las operaciones más importantes para el funcionamiento del árbol. Esta clase se encarga de la creación de los objetos correspondientes a cada una de las selecciones del usuario. Generar los nodos (esferas), las ramas (cilindros) y las claves de cada nodo (texto) de acuerdo a las características de la selección efectuada por el usuario. La descripción de algunos métodos de esta clase están incluidos en el apéndice A.

4.4 Funcionalidad de 3DTree

 

La visualización de la información comenzará después de que el usuario escoja una de las familias que se muestran en la barra de desplazamiento las cuales están organizadas en orden alfabético para que la búsqueda sea más fácil para el usuario. Después el usuario debe presionar el botón de "Display Names" colocado a la derecha de la barra (Figura 23) que provocará que se visualice el primer nivel del árbol el cual contiene los géneros de la familia escogida (Figura 24).

 

 

Figura 23. Barra de desplazamiento para escoger la familia

 

Con sólo mantener presionado el ratón, el usuario podrá rotar o acercar el árbol para encontrar aquel nodo que represente el grupo taxonómico que está buscando, dentro del grupo de nodos, como puede observarse en la figura 25 y de este modo seleccionar el elemento.

 

Al seleccionar una familia se deben desplegar los géneros. El número de géneros puede ser en algún momento mayor de 9, entonces éstos se agruparán (capítulo 4) en subconjuntos. Cada uno de los subconjuntos serán representados por un nodo que será identificado por el nombre del primer elemento a la izquierda y el nombre del último elemento a la derecha. Por ejemplo Daltonia - Entodon como puede verse en la Figura 25. El usuario deberá seleccionar el subconjunto al que pertenezca el género que está buscando y esta selección del nodo provocará que se generen los nodos correspondientes a ese subconjunto (Figura 26), aún al nivel taxonómico de género.

 

Si el subconjunto que seleccionó debe de ser agrupado también, entonces se desplegarán los subconjuntos correspondientes a ese nodo y los anteriores serán representados por un solo nodo (Figura 26). Dentro de los nodos que se han generado uno de los elementos tendrá entonces el nombre de Daltonia y otro tendrá el nombre de Entodon (Figura 26). También es posible observar que el color de los nodos permite que el usuario no pierda la ubicación de la información que ha manipulado anteriormente por ejemplo: el nodo de color verde de la Figura 26 representa los subconjuntos de la Figura 25.

 

 

 

Figura 24. Primer nivel del árbol jerárquico (géneros)

 

 

Si el usuario selecciona un subconjunto que tiene menos de 9 elementos entonces sus nodos serán desplegados junto con el nodo que debe representar a los subconjuntos anteriores (Figura 28).

 

Después de que el usuario tenga en el árbol nodos que representen grupos taxonómicos específicos (y ya no rangos), puede continuar su navegación a través de los niveles siguientes como pueden ser especie o subespecie (Figura 29).

 

 

 

Figura 25. Rotación y acercamiento del árbol.

 

 

Si el usuario desea regresar a los subconjuntos anteriores sólo necesitará seleccionar al nodo que los represente y los podrá visualizar nuevamente como se puede observar en la Figura 30.

 

 

 

Figura 26. Representación de los subconjuntos en los nodos.

 

 

 

 

Figura 27. Representación de los elementos de un subconjunto

 

 

 

 

 

Figura 28. Nodos de un subconjunto menor de 9 elementos.

 

 

 

 

Figura 29. Nivel de especies en el árbol

 

 

 

 

 

Figura 30. Nodo seleccionado de los subconjuntos anteriores