UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN TESIS PREVIA A LA OBTENCIÓN DEL TITULO DE INGENIERO EN INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN CREACIÓN DE MODELO DE ÓRGANOS DEL CUERPO HUMANO EN 3D E INTEGRACIÓN CON UN INTERFACE PARA SU MANIPULACIÓN EN UN ESCENARIO 3D BERNARDO DARIO MORALES LÓPEZ DIRECTOR: ING. GALO RAMOS QUITO, 2012 © Universidad Tecnológica Equinoccial. 2012 Reservados todos los derechos de reproducción DECLARACIÓN Yo BERNARDO DARIO MORALES LÓPEZ, declaro que el trabajo aquí descrito es de mi autoría; que no ha sido previamente presentado para ningún grado o calificación profesional; y, que he consultado las referencias bibliográficas que se incluyen en este documento. La Universidad Tecnológica Equinoccial puede hacer uso de los derechos correspondientes a este trabajo, según lo establecido por la Ley de Propiedad Intelectual, por su Reglamento y por la normativa institucional vigente. _________________________ Bernardo Darío Morales López 1718050709 CERTIFICACIÓN Certifico que el presente trabajo que lleva por título “Creación de modelos de órganos del cuerpo humano en 3D e integración con interface para su manipulación en el escenario 3D”, que, para aspirar al título de Ingeniero en Informática y Ciencias de la Computación fue desarrollado por Bernardo Darío Morales López, bajo mi dirección y supervisión, en la Facultad de Ciencias de la Ingeniería y cumple con las condiciones requeridas por el reglamento de Trabajos de Titulación artículos 18 y 25. ___________________ Galo Ramos DIRECTOR DEL TRABAJO 1708020548 DEDICATORIA Quiero dedicar este trabajo a quienes en todo momento me incentivaron y me apoyaron para no rendirme y seguir adelante; En especial a mi familia quienes han sido un puntal fundamental para seguir adelante, han sido un ejemplo de constancia y trabajo, además de ser claves esenciales para el logro de esta meta; siempre serán mi mas grande inspiración. Además siendo mi graduación una de mis grandes aspiraciones y al llegar a culminarla felizmente, dedico este trabajo también a mis profesores ya que sin sus sabias enseñanzas esto no hubiera sido posible. Gracias. AGRADECIMIENTOS Ante todo agradezco a Dios por hacer esto posible. Agradezco a mis padres por el apoyo que me han brindado durante toda mi vida. Agradezco a mi hermana, Andrea Morales, por todo el apoyo brindado. Agradezco al Ing. Galo Ramos, por darme la oportunidad de ser parte de este proyecto, brindarme su confianza y apoyarme en el transcurso de mi carrera. Agradezco al Ing. Gálvez, por el tiempo, el conocimiento y el apoyo dedicados para la realización de esta tesis. Agradezco a las personas que directa o indirectamente fueron parte de la culminación de esta fase de mi carrera académica. ÍNDICE DE CONTENIDO Página 1 Introducción ......................................................................................... 1 1.1 Objetivo General .............................................................................. 2 1.2 Objetivos Específicos ....................................................................... 3 2 Marco Teórico ..................................................................................... 5 2.1 Ambientes virtuales .......................................................................... 5 2.3 Modelo genérico de un sistema de realidad virtual. ........................ 7 2.3.1 Modelo de simulación................................................................... 7 2.4 Lenguaje de programación .............................................................. 8 2.5 Java .................................................................................................. 9 2.5.1 Bibliotecas Gráficas de Java. ..................................................... 10 2.6 java3d ............................................................................................. 11 2.6.1 Objetos de la super estructura del grafo de escena .................. 11 2.6.2 Objetos de agrupación de nodos ............................................... 12 2.6.3 Objetos nodos hoja .................................................................... 13 2.6.4 Jerarquía Nodos Java3d ............................................................ 14 2.6.5 Sistema De Coordenadas en Java3d. ....................................... 15 2.6.8 Interacción con el usuario ......................................................... 18 2.6.9 Gestión del ratón ....................................................................... 19 2.3 Estado del arte .............................................................................. 20 2.7 Conocimientos Anatomía Humana ................................................ 22 2.7.1 El Cuerpo humano ..................................................................... 22 2.7.2 Sistema óseo .............................................................................. 22 2.7.3 Sistema muscular ....................................................................... 28 2.7.4 Órganos del ser humano ............................................................ 33 2.8 Conocimiento Metodología de Desarrollo...................................... 36 2.8.1 Metodología Desarrollo Microsoft Solutions Framework ........... 36 2.8.2 Características ........................................................................... 37 2.8.3 Fases de la Metodología ........................................................... 38 3 Metodología ...................................................................................... 40 3.1 Visión ............................................................................................. 40 3.1.1 Vision del proyecto ..................................................................... 40 3.1.2 Alcance ....................................................................................... 40 3.2 Planificación .................................................................................. 41 3.2.1 Estudio técnico de lenguaje a implementar ............................... 41 3.2.2 Elección de lenguaje de programacion ...................................... 45 3.2.3 Estudio de tecnologías VRML .................................................... 45 3.2.4 Comparación de tecnologías que manejan Imágenes 3D ......... 48 3.2.5 Conclusión uso de tecnología .................................................... 52 3.2.6 Arquitectura en Capas de Software ........................................... 53 3.2.7 Diagrama de Actividad ............................................................... 55 3.2.8 Definición de Funcionalidad. ..................................................... 56 i 3.2.9 Modelado .................................................................................... 61 3.3 Desarrollo ...................................................................................... 69 3.3.1 Diagramas de clases .................................................................. 70 3.4 Estabilización................................................................................. 86 3.4.1 Pruebas de caso de uso............................................................. 86 4. Resultados y Discusion ................................................................... 94 5. Conclusiones y Recomendaciones ................................................ 106 5.1 Conclusiones ............................................................................... 106 5.2 Recomendaciones ....................................................................... 107 ANEXO I ............................................................................................ 110 ANEXO II ........................................................................................... 120 ANEXO III .......................................................................................... 136 ANEXO IV .......................................................................................... 144 Abreviaturas ....................................................................................... 156 Glosario .............................................................................................. 157 Bibliografía ......................................................................................... 159 ii ÍNDICE DE TABLAS Página Tabla 1. Programas Cuerpo Humano 3d ................................................ 20 Tabla 2. Comparativa Programas Cuerpo Humano 3d ........................... 21 Tabla 3. Comparativa Lenguajes de Programación ................................ 43 Tabla 4. Comparativa Lenguajes de Programación en base objetos 3d 44 Tabla 3. Comparativa en prestaciones Java ........................................... 51 Tabla 4. Atributos Main Class .................................................................. 71 Tabla 5. Métodos Main Class .................................................................. 72 Tabla 6. Atributos Clase Cuerpo_ Humano ............................................. 73 Tabla 7. Métodos Clase Cuerpo_ Humano ............................................. 73 Tabla 8. Atributos Clase Parte_cuerpo ................................................... 74 Tabla 9. Métodos Clase Parte_cuerpo .................................................... 75 Tabla 10. Métodos Clase Resources ...................................................... 76 Tabla 11. Atributos Clase Comportamiento Mouse................................. 77 Tabla 12. Métodos Clase Comportamiento Mouse ................................. 78 Tabla 13. Atributos Clase Elemento ........................................................ 79 Tabla 14. Métodos Clase Elemento ........................................................ 80 Tabla 15. Atributos Clase Array_data_xml .............................................. 81 Tabla 15. Métodos Clase Array_data_xml .............................................. 81 Tabla 16. Atributos Clase Map_cuerpo ................................................... 83 Tabla 17. Atributos Clase Map_cuerpo ................................................... 83 Tabla 18. Tabla calculo del tamaño de una muestra. ............................. 95 Tabla 20. Frecuencia y porcentaje Pregunta Dos ................................... 99 Tabla 21. Frecuencia y porcentaje Pregunta Tres ................................ 101 Tabla 22. Frecuencia y porcentaje Pregunta Cuatro ............................ 103 Tabla 23. Diferencias entre metodologías ágiles y no ágiles ................ 117 Tabla 24. Diferencias entre metodologías ágiles.. ................................ 118 iii ÍNDICE DE FIGURAS Página Figura 1 Flujo sistema de realidad virtual. ....................................................... 7 Figura 2 Jerarquía nodo Java3d.................................................................... 14 Figura 3 Coordenadas en Java3d. ................................................................ 15 Figura 4 Behavior Java3d .............................................................................. 18 Figura 5 Esqueleto humano. ......................................................................... 27 Figura 6 Músculos del cuerpo humano. ........................................................ 32 Figura 7 Órganos de cuerpo humano............................................................ 35 Figura 8 Fases metodología. ......................................................................... 38 Figura 9 Metodología. ................................................................................... 39 Figura 10 Arquitectura en Capas de Software .............................................. 53 Figura 11 Diagrama de Actividades. ............................................................. 55 Figura 12 Forma primitiva de un círculo en 3D. ............................................ 63 Figura 13 Modificando parámetros de radio y segmentos. ........................... 63 Figura 14 Movimiento de vértices de acuerdo a coordenadas. .................... 64 Figura 15 Diagrama general de ejecución. .................................................. 68 Figura 16 Diagramas de clases. .................................................................... 70 Figura 17 Main Clase..................................................................................... 71 Figura 18 Cuerpo_ Humano Clase. ............................................................... 72 Figura 19 Parte_cuerpo Clase. ...................................................................... 74 Figura 20 Resources Clase. .......................................................................... 75 Figura 21 Comportamiento Mouse Clase. ..................................................... 76 Figura 22 Clase Elemento. ............................................................................ 79 Figura 23 Array_data_xml Clase. .................................................................. 80 Figura 24 Map_cuerpo Clase. ....................................................................... 82 Figura 25 Diagrama de Secuencia. ............................................................... 85 Figura 26 Diagrama de secuencia Carga. ..................................................... 86 Figura 27 Ejecución de prueba Carga 1. ....................................................... 87 Figura 28 Ejecución de prueba Carga 2 ........................................................ 87 Figura 29 Consola de confirmación carga objetos. ....................................... 88 Figura 30 Diagrama secuencia Evento Mouse (hover). ............................... 88 Figura 31 Evento Mouse (hover). .................................................................. 89 Figura 32 Diagrama de secuencia Doble click. ............................................. 89 Figura 33 Doble click. .................................................................................... 90 Figura 34 Diagrama de secuencia click derecho y arrastre. ......................... 91 Figura 35 Mouse click derecho y arrastre 1. ................................................. 91 Figura 36 Mouse click derecho y arrastre 1. ................................................. 92 Figura 37 Diagrama secuencia mouse click ítem árbol Jerarquía. ............... 93 Figura 38 Mouse click ítem árbol Jerarquía 1. .............................................. 93 Figura 39 Mouse click ítem árbol Jerarquía 2. .............................................. 94 Figura 40 Porcentaje Número de Alumnos por Calificación. ........................ 98 Figura 41 Porcentaje Número de Alumnos por Calificación. ...................... 100 iv Figura 42 Porcentaje Número de Alumnos por Calificación. ...................... 102 Figura 43 Porcentaje Número de Alumnos por Calificación. ...................... 104 Figura 44 Caso de uso Petición de ejecución Aplicativo. ........................... 113 Figura 45 Caso de uso Petición de detalle de parte del Cuerpo . .............. 114 Figura 46 Caso de uso Petición Manipulación del modelo. ........................ 114 Figura 47 Detalle Uso Aplicativo. ................................................................ 120 Figura 48 Detalle Uso Sector C. .................................................................. 121 Figura 49 Detalle Uso Sector B. .................................................................. 122 Figura 50 Función Sector B. ........................................................................ 123 Figura 51 Detalle Ítem Sector B. ................................................................. 123 Figura 52 Ítem activos. ............................................................................... 124 Figura 53 Ítems desactivados...................................................................... 124 Figura 54 Estado visible objetos tridimensionales. ..................................... 125 Figura 55 Estado No visible objetos tridimensionales. ................................ 125 Figura 56 Casilla de Verificación. ................................................................ 126 Figura 57 Estado Casilla de Verificación. .................................................... 127 Figura 58 Casilla de Verificación seleccionado solo Esqueleto. ................. 128 Figura 59 Casilla de Verificación no seleccionado. ..................................... 129 Figura 60 Verificación seleccionado (Árbol Objetos Cuerpo Humano)....... 129 Figura 61 Modelo tridimensional sector A. ................................................. 130 Figura 62 Movimientos de mouse encima modelo tridimensional. ............ 131 Figura 63 Mouse arrastre botón derecho. .................................................. 132 Figura 64 Mouse arrastre botón izquierdo. ................................................ 133 Figura 65 Rueda mouse 1. .......................................................................... 134 Figura 66 Rueda mouse 2. .......................................................................... 135 v RESUMEN La presente tesis está encaminada en explicar los diferentes pasos que se desarrollaron para esquematizar e implementar un aplicativo que presenta dentro de entorno virtual un modelo tridimensional de la anatomía del cuerpo humano, teniendo como meta permitir que el usuario explore y manipule todos los componentes del modelo tridimensional del cuerpo humano y así facilitar el estudio del cuerpo humano de una forma fácil y eficaz. Se destaca el análisis de los resultados obtenidos al presentar el aplicativo a un grupo muestral de estudiantes de la Facultad de Medicina de la Universidad Tecnológica Equinoccial, quienes evaluaron los principales objetivos: diseñar y crear un modelo tridimensional de la anatomía del cuerpo humano, implementar las funcionalidades de acercar, alejar, girar y desplazar aplicadas al modelo tridimensional del cuerpo, crear una interfase amigable que permita la interacción del usuario con el entorno de realidad virtual. 1 ABSTRACT This thesis aims to explain the different steps that were developed to schematize and implement an application that presents inside a virtual environment a three dimensional model of the human anatomy, aiming to allow the user to explore and handle all the components that the three dimensional model has. This would make the study of the human body easier and more effective than other traditional ways. It emphasizes the analysis of the results obtained by submitting the application to a sample group of the students form the Faculty of Medicine of the U.T.E University, who evaluated the main objectives: to design and create a three dimensional model of the human body, implement zoom functionality and also rotate and move the three dimensional model of the human body, created a friendly interface that allows the user to have and interaction with the virtual reality environment. 2 INTRODUCCIÓN 1 INTRODUCCIÓN En los últimos 5 años se ha observado el desarrollo a pasos agigantados de las tecnologías informáticas capaces de generar representaciones de la realidad (Realidad Virtual), teniendo en cuenta lo interesante de este tipo de desarrollo gráfico la cual permite al usuario final la comprensión y manipulación de realidades ficticias que simulan la realidad y cuya aplicación puede ser implementada en un sin numero de tareas de distracción o de trabajo para el ser humano. Aprovechando de una forma práctica y sencilla este tipo de desarrollo; la siguiente investigación como uno de los principales ítems, se intenta analizar e implementar las diferentes tecnologías que se encuentren a disposición para diseñar entornos virtuales y así aplicar específicamente a la visualización un modelo tridimensional de la anatomía del cuerpo humano con posibles aplicaciones en el campo de la medicina. El uso de la tecnología Java y Java3 fue primordial para el proyecto ya que permite cumplir con el requerimiento de desarrollar e implementar una aplicación de uso libre y fácil implementación en los principales sistemas operativos. Otro de los aspectos es el diseño gráfico de un modelo tridimensional del cuerpo humano que se asemeje en lo más posible a un cuerpo humano real, esto fue logrado gracias a la herramienta de diseño 3d Studio Max que gracias a sus características nos permite crear los modelos de las diferentes partes del cuerpo humano además de presentarnos una gran gama de herramientas que nos ayudan a esta finalidad. Otra premisa de nuestro proyecto fue crear una interface que permita la fácil interacción entre el modelo del cuerpo humano y el usuario final, para lo cual fue desarrollado una interface lo más intuitiva posible que permite la exploración del cuerpo humano utilizando como herramienta principal al mouse. Cabe destacar que el proyecto es un aporte conjunto con la Fundación Consorcio Ecuatoriano para el Desarrollo de Internet Avanzado (CEDIA) través del Concurso Ecuatoriano de Proyectos en Redes Avanzadas (CEPRA), en el cual el proyecto descrito se complementara a otras investigaciones como parte de un sistema integral llamado “Sistema de entrenamiento virtual para medicina”. 1 1.1 OBJETIVO GENERAL Diseñar e implementar un entorno de realidad virtual que incluye un modelo tridimensional del cuerpo humano, además de estar compuesto de acuerdo a su fisiología de órganos y huesos correspondientes, el cual podrá ser manipulado y explorado por un usuario a través de una interface creada explícitamente para este propósito. 2 1.2 OBJETIVOS ESPECÍFICOS 1. Analizar el desempeño y funcionalidad de las más relevantes tecnologías de realidad virtual. 2. Diseñar y crear un modelo tridimensional de la anatomía del cuerpo humano con sus respectivos órganos internos. 3. Implementar las funcionalidades de acercar, alejar, girar y desplazar aplicadas al modelo tridimensional del cuerpo humano para la manipulación por el usuario. 4. Crear una interface amigable que permita la interacción del usuario con el entorno de realidad virtual desarrollado en el aplicativo. 3 MARCO TEÓRICO 2 MARCO TEÓRICO El marco teórico está dividido en tres secciones, clasificadas así por sus distintas áreas temáticas: Software.- se hablará de los conocimientos básicos de software necesarios para comprender los siguientes capítulos con definiciones tales como realidad virtual, Java, Java 3D. Anatomía Humana.- se aclarará conceptos básicos sobre la anatomía humana, dando un especial énfasis sobre los modelos tridimensionales de los órganos y estructuras del cuerpo humano que son presentados en nuestro aplicativo. Metodología de Desarrollo.- estarán expuestas las definiciones y aclaraciones de la metodología que se implementa a lo largo del desarrollo del proyecto 2.1 AMBIENTES VIRTUALES Es una interfaz que permite a las personas visualizar e interactuar con ambientes generados por medio de computadoras en tiempo real. (Grigore C. Burdea. 2003). Un sistema de realidad virtual cuenta con los siguientes elementos: • Efectores: Son los sensores tanto de entrada como de salida que permiten la interacción entre el usuario y el motor de realidad. 5 • Motor de realidad: Es el sistema de computación y su hardware asociado que le da a los efectores la información necesaria para interactuar. • Aplicación: Es el software que define el contexto de la aplicación y las leyes de interacción entre los objetos y los usuarios. • Geometría: Es la información que describe los atributos de los objetos. Esta información es procesada por la aplicación para crear el mundo virtual. Las principales razones para construir un ambiente virtual son: • Lo real es muy caro para construir. Ejemplo: Sistema de entrenamiento para una estación espacial. • Lo real implica muchos peligros para trabajar. Ejemplo: una planta nuclear. • Lo real está desapareciendo paulatinamente. Ejemplo: reconstrucción de sitios arqueológicos. Puesto que en un ambiente virtual es necesario estimular los sentidos del usuario, se necesitan interfaces que permitan interactuar al motor de realidad con el usuario. Los principales interfaces son: (Grigore C. Burdea. 2003). • Interfaz visual. • Interfaz de movimiento. 6 2.3 MODELO GENÉRICO DE UN SISTEMA DE REALIDAD VIRTUAL. Las partes básicas de un sistema de realidad virtual son: el modelo de simulación, la presentación del ambiente virtual, la entrada/salida y por supuesto el usuario. Se detalla en la siguiente gráfica. Figura 1 Flujo sistema de realidad virtual. (Sun Microsystems. Java 3D 1.3 API Specification Guide 2005) 2.3.1 MODELO DE SIMULACIÓN. El modelo es la representación matemática del sistema que se está analizando. Un modelo de simulación virtual necesita responder dinámicamente en respuesta de la entrada del usuario. Se pueden crear modelos matemáticos sofisticados de realidad virtual, pero lo importante, es la manera en que estos modelos están asociados con un sistema visual y auditivo. 7 Entrada Los dispositivos de entrada se utilizan para interactuar con el ambiente virtual como puede ser el teclado o el mouse, un joystick o guantes, pedales, entre otros. Salida La salida se refiere a la tecnología mediante la cual el usuario percibe estímulos, esta tecnología abarca un amplio rango y va desde aparatos de despliegue visual, sistemas sonoros, sistemas sensoriales, entre otros. Usuario El usuario es la razón de existir de un sistema de realidad virtual pues es él quien recibe los estímulos de parte del sistema y a su vez se encarga de retroalimentarlo y definir su comportamiento. 2.4 LENGUAJE DE PROGRAMACIÓN Es un lenguaje artificial diseñado para describir un conjunto de acciones y procesos que se llevan a cabo para controlar el comportamiento físico y lógico de una máquina, especialmente una computadora, para expresar algoritmos con precisión, o como modo de comunicación humana. Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. (Wilson, Leslie B. 2003). 8 Programación Se define como el proceso de desarrollo de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos: (Wilson, Leslie B. 2003): El desarrollo lógico del programa para resolver un problema en particular. Escritura de la lógica del programa empleando un lenguaje de programación específico. (codificación del programa). Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina. Prueba y depuración del programa. 2.5 JAVA Es un lenguaje de programación que esta elaborado a partir de lenguajes orientados a objetos anteriores como C++, añadiendo nuevas funcionalidades como programación multi-hilo y manejo de memoria a cargo del lenguaje. (K Arnold, J Gosling, D Colin. 2006). Uno de los aspectos claves para el desarrollo de Java, es lograr que las aplicaciones se escriban una sola vez sin la necesidad de modificarlas para que se puedan ejecutar en plataformas diferentes. Esta independencia se consigue compilando el código fuente para generar un código intermedio llamado bytecodes, similar para cualquier plataforma. Posteriormente, la máquina virtual interpreta dicho código. Además no se tendrá que realizar ningún cambio en el código, o si se hace, será mínimamente. Por lo que evita tener que generar distintas versiones dependiendo del sistema operativo que se utilice. (K Arnold, J Gosling, D Colin. 2006). 9 La plataforma de Java se compone de tres módulos: - El API (Application Programming Interface) de Java, que contiene las clases básicas que utiliza el lenguaje. Las clases se organizan en paquetes o librerías dependiendo de su funcionalidad. - El JRE (Java Runtime Environment) o entorno de ejecución, el cual es necesario para poder ejecutar las aplicaciones. - El JDK (Java Development Kit), que incluye un conjunto de herramientas para desarrollar las aplicaciones. Entre ellas están el compilador de Java a código bytes, un generador de documentación, el depurador de programas, etc. Otro punto positivo de Java es su facilidad para crear interfaces gráficas, ya que proporciona librerías gráficas muy útiles, como se describe a continuación. (K Arnold, J Gosling, D Colin. 2006). 2.5.1 BIBLIOTECAS GRÁFICAS DE JAVA. Java proporciona dos paquetes especializados en el diseño de aplicaciones gráficas: AWT (Abstract Windowing Toolkit) y SWING. AWT es una librería formada por un conjunto de clases Java, que permite crear elementos básicos para la interfaz gráfica. Posteriormente, AWT ha sido mejorada dando lugar al paquete javax.swing. (K Arnold, J Gosling, D Colin. 2006) La estructura básica del AWT se basa en Componentes (botones, etiquetas, Paneles, etc.) y contenedores (Panel, Frame, Applet, etc.). Estos últimos contienen componentes, de forma que los Eventos pueden tratarse tanto en contenedores como en componentes. 10 2.6 JAVA3D Java 3D es una interfaz de programación de aplicación utilizada para escribir aplicaciones y applets con gráficos en tres dimensiones. (Andrew Davison, 2007). Se utilizan constructores de alto nivel para crear y manipular geometrías 3D y para construir las estructuras utilizadas en el renderizado de dichas geometrías. Se pueden describir grandes mundos virtuales utilizando estos constructores, que proporcionan a Java 3D la suficiente información como para renderizar dichos mundos de forma eficiente. (Andrew Davison, 2007). Java 3D es parte del conjunto de APIs JavaMedia, lo cual hace que esté disponible en un gran número de plataformas. También, se integra correctamente con Internet ya que tanto los applets como las aplicaciones escritas utilizando Java 3D tienen acceso al conjunto completo de clases de Java. 2.6.1 OBJETOS DE LA SUPER ESTRUCTURA DEL GRAFO DE ESCENA En Java 3D los objetos de superestructura del grafo de escena, VirtualUniverse y Locale, se utilizan para contener los distintos sub-grafos que forman el grafo de escena. (K Arnold, J Gosling, D Colin. 2006). • Objeto VirtualUniverse. Un objeto VirtualUniverse consiste en una lista de objetos Locale que contienen una serie de nodos del grafo de escena que existen en el universo. • Objeto Locale. Contiene un conjunto de sub-grafos del grafo de escena cuya raíz se corresponde con un nodo del tipo BranchGroup. Un objeto Locale también define la localización del universo virtual. 11 2.6.2 OBJETOS DE AGRUPACIÓN DE NODOS Los nodos de agrupación son los elementos de unión que se utilizan para construir un grafo de escena. Todos los nodos de agrupación pueden tener un número variable de nodos hijos incluyendo otros nodos de agrupación y nodos hoja. (K Arnold, J Gosling, D Colin. 2006). • Nodos Group. Los objetos Group son nodos de agrupación de propósito general, tienen un solo padre y un número arbitrario de hijos. Entre las operaciones que proporciona este objeto están las de añadir, eliminar y enumerar los hijos del grupo. Las subclases de este objeto añaden semánticas adicionales. • Nodos BranchGroup. Un nodo Branch-Group es la raíz de un subgrafo de una escena que puede compilarse como una unidad, unirse a un universo virtual o incluirse como hijo de un nodo de agrupación en otro sub-grafo. - Se puede compilar invocando a su método de compilación. Esta operación hará que se compile el sub-grafo completo así como cualquier otro nodo de tipo Branch-Group contenido en dicho sub-grafo. (además de todos sus descendientes). - Se puede insertar dentro de un universo virtual conectándolo con un objeto Locale. Entonces se dice que el sub-grafo completo está vivo. • Nodos Transform-Group. Los nodos Transform-Group especifican una transformación espacial sencilla utilizando un objeto Transform3D que puede colocar, orientar y escalar todos sus hijos. 12 2.6.3 OBJETOS NODOS HOJA Los nodos hoja (Leaf) forman una clase abstracta para todos los nodos del grafo de escena que no tienen hijos. Proporcionan enlaces y capacidades de instanciación para compartir grafos de escena. (Andrew Davison, 2007) • Nodos Shape3D. Da soporte a la creación de objetos geométricos. Contiene dos componentes: una referencia a la forma geométrica y a su componente de apariencia. • Nodos View-Platform. Se definen una plataforma de visualización que se referencia mediante un objeto View. La posición, orientación y escala de las transformaciones desde el grafo de escena hasta el nodo ViewPlatform especifican la localización del punto de vista y hacia qué dirección está orientado. • Nodos Behavior. Los nodos hoja Behavior permiten que una aplicación modifique el grafo de escena en tiempo de ejecución. Behavior es una clase abstracta que define propiedades comunes a todos los objetos de comportamiento de Java 3D. • Nodo Background. Este nodo define un fondo para la aplicación. Además puede ser, bien un color fijo o una imagen que se utiliza para rellenar la ventana utilizada. • Nodo Light. Es una clase abstracta que define las propiedades comunes a todos los nodos de luz. Cada luz tiene asociado un color, un estado (encendida o apagada) y un objeto de límites que especifica la región de influencia de la luz. 13 2.6.4 JERARQUÍA NODOS JAVA3D Figura 2 Jerarquía nodo Java3d. Fuente: Sun Microsystems. Java 3D 1.3 API Specification Guide 14 2.6.5 SISTEMA DE COORDENADAS EN JAVA3D. Los sistemas de coordenadas en Java 3D son, por defecto “diestros”, de tal forma que la parte positiva del eje de ordenadas es el sentido ascendente de la gravedad, la parte positiva del eje de abscisas es horizontal hacia la derecha y la parte positiva del eje z está dirigido hacia el observador. (Andrew Davison, 2007) En el siguiente grafico se puede ver esta distribución. Figura 3 Coordenadas en Java3d. (Microsystems Sum. Java 3D 1.3 API Specification Guide 2005). 2.6.6 Movimiento en Java 3D A continuación se describen los fundamentos básicos que proporciona el API de Java 3D para transformar la situación inicial de las figuras en una escena. (Andrew Davison, 2007). 15 Traslaciones y rotaciones en Java 3D Con anterioridad se introdujeron las clases Transform-Group y Transform3D. Estas dos clases son el germen para realizar modificaciones sobre la posición y orientación por defecto de una figura 3D. (Andrew Davison, 2007). La clase Transform3D brinda métodos que permiten realizar translaciones de una figura desde un punto del espacio a otro, rotaciones respecto a un eje determinado y con un ángulo dado. En una palabra, va a encapsular toda la lógica de procesamiento de matrices implicada en el proceso de transformación gráfica. Un objeto Transform3D realiza una sola operación de transformación básica. Como consecuencia de esa transformación, la figura afectada dentro del grafo de escena mostrará una nueva posición o una nueva orientación o ambas cosas. Concepto de capacidad El proceso descrito en el punto anterior, se realiza de forma previa a la compilación de la rama generada y la visualización de la escena. Es decir, se hace en tiempo de diseño del universo. Sin embargo, una vez creada la escena, ésta es totalmente estática. (Andrew Davison, 2007). Para evitar que tras la compilación de una rama, los valores definidos para cada figura se establezcan inmutables, se define el concepto de bit de capacidad (capability bit). A través de estos bits no sólo se puede establecer que una figura pueda ser objeto de transformaciones una vez incluida en el grafo de escena, sino que además decidir que sólo sea susceptible de ciertos tipos de transformaciones. (Andrew Davison, 2007). 16 Comportamientos (Behavior) El comportamiento se articula en torno a una clase denominada Behavior, esta clase se encarga de modificar los objetos de la escena 3D ante distintos estímulos, y en particular estímulos procedentes de la interacción del usuario. Las modificaciones que se pueden realizar a través de la clase Behavior y sus descendientes están únicamente limitadas por las capacidades de cada uno de los objetos del grafo de escena. (Andrew Davison, 2007). El objetivo final de una instancia de la clase Behavior es la modificación de un determinado objeto. Este objeto se conoce como objeto de cambio. Por supuesto, la instancia encargada de la gestión del comportamiento debe tener una referencia al objeto susceptible de ser cambiado. Esta referencia se debe incluir en el momento de construcción del grafo de escena. De hecho, es uno de los parámetros del constructor. Funcionamiento El comportamiento posee un método específico que lo inicializa: initialization, este método es responsable de cargar el disparador (trigger) encargado de responder al evento y la condición para que dicho evento se dispare El disparador es un objeto de la clase WakeupCondition o una combinación de objetos de dicha clase. (Andrew Davison, 2007). Una vez que el comportamiento está activado y dispuesto para recibir eventos, dicho comportamiento será capaz de capturar el evento producido mediante el método process-Stimulus. 17 2.6.8 INTERACCIÓN CON EL USUARIO Ya conocidos los primeros pasos para incorporar transformaciones en una escena 3D, es necesario analizar cómo realizar dichas transformaciones ante eventos generados por la interacción del usuario con el universo creado. De todas las clases que descienden de la clase Behavior, las implicadas en la interacción con el usuario son las que se muestran a continuación. Clases de comportamiento implicadas en la interacción con el usuario Figura 4 Behavior Java3d (Sun Microsystems. Java 3D 1.3 API Specification Guide 2005) 18 2.6.9 GESTIÓN DEL RATÓN Java 3D proporciona los comportamientos necesarios para controlar los distintos eventos que puede generar el ratón. (Andrew Davison, 2005). Los eventos no se disparan por el hecho de pulsar un botón sino por pulsar y desplazar el ratón sin soltar el botón pulsado. Por defecto, cada uno de los botones del ratón tiene un efecto preestablecido que es controlado por una clase diferente en cada caso: ● La pulsación del botón izquierdo acompañada de movimiento provoca que el objeto visual rote, este evento lo controla la clase comportamiento MouseRotate. ● El desplazamiento del ratón manteniendo pulsado el botón derecho provoca que la figura se desplace siguiendo una trayectoria paralela al plano de imagen. Este evento lo controla la clase MouseTranslate. ● La pulsación del tercer botón del ratón con desplazamiento de este provoca una alteración del zoom de la imagen, o lo que es lo mismo, desplaza la imagen en un plano ortogonal al plano de imagen. Este evento lo controla la clase MouseZoom. 19 2.3 ESTADO DEL ARTE En la actualidad existen varias aplicaciones web o de escritorio desarrolladas sobre el tema de la visualización de la anatomía del cuerpo humano en forma tridimensional y cada una de ellas difiere en sus características tanto de visualización, detalle o información, etc. En las siguientes tablas se resume de una forma más clara cuáles son los aplicativos más relevantes, además de sus características técnicas más importantes. Tabla 1. Programas Cuerpo Humano 3d Nombre Pagina web Aplicación ejecutable Lenguaje Bonelab www.nextd.com WinXP/Vista Inglés Visiblebody www.visiblebody.com No Inglés No Inglés Human-body-maps www.healthline.com/humanbody-maps Google Body Browser bodybrowser.googlelabs.com No Español/inglés visionmedicavirtual www.visionmedicavirtual.com No Español 3D Muscles Teacher www.nextd.com WinXP/Vista Inglés 20 Tabla 2. Comparativa Programas Cuerpo Humano 3d Nivel Vista de Detalles modelo Modelo Solo Bajo Huesos Estado Actual Desarrollo Gratuito Información Soporte Cuerpo Técnico Humano desarrollo Demo No No Visiblebody Completo Alto Activo Demo Si No Human-bodymaps Completo Medio Activo Si Si Si Completo Alto Abandono Si No No Nombre Bonelab Google Browser Body visionmedicavirtual Completo Profesional Activo No Si Si 3D Teacher Demo Si Si Muscles Músculos Medio Activo Además de lo descrito anteriormente existen programas que se especializan en una cierta área o sistema del cuerpo humano, como por ejemplo la visualización del cerebro con un alto nivel de detalle, pero ya que este tipo de detalle abarcaría una cantidad exagerada de información no relevante en este caso no se profundizará en ella. Con la información que se encuentra disponible para el desarrollo del tema de investigación, se puede determinar que al momento existe un cantidad importante de aplicativos a disposición, aunque la mayoría de estos son versiones que exigen un pago para su uso y además que la tendencia esta encaminada hacia el desarrollo como aplicativos web. 21 2.7 CONOCIMIENTOS ANATOMÍA HUMANA 2.7.1 EL CUERPO HUMANO El cuerpo humano es un gran conjunto de billones de células, estas a su vez agrupadas en tejidos y organizadas en aparatos los cuales son: locomotor, respiratorio, digestivo, excretor, circulatorio, endocrino, nervioso y reproductor, cabe recalcar que se toma como referencia la clasificación establecida por Wang y Col, 1992. 2.7.2 SISTEMA ÓSEO El cuerpo humano está conformado por más de 200 huesos, un centenar de articulaciones y más de 650 músculos los cuales actúan coordinadamente gracias a la grandiosa máquina que llega a ser en totalidad la estructura del ser humano. (Wang y Col, 1992). El conjunto de huesos y cartílagos forma el esqueleto. Los huesos son la combinación de células vivas y materias inertes, tales como el calcio, los que permiten que el cuerpo se sostenga firmemente. A continuación se hará un detalle de los huesos contenidos en el esqueleto del ser humano y por ende en el modelo realizado en 3D. En el cuerpo humano existen 208 huesos: 26 en la columna vertebral 8 en el cráneo 14 en la cara 8 en el oído 1 hueso hioides 22 25 en el tórax 64 en los miembros superiores 62 en los miembros inferiores Huesos del cráneo Los huesos del cráneo son ocho, cuatro son impares y de situación media, y los otros dos son pares y de situación lateral simétrica. (Wang y Col, 1992). ● Frontal ● Parietal 2 ● Temporal 2 ● Occipital ● Esfenoides ● Etmoides Huesos de la cara Los huesos de la cara son los huesos de la cabeza que se encuentran debajo del cráneo. (Wang y Col, 1992). ● Palatino 2 ● Vómer ● Lagrimar o unguis 2 ● Cornete inferior o conchas ● Malar 2 ● Maxilar superior 2 ● Maxilar inferior ● Huesos propios de la nariz 2 23 Huesos del tórax Los huesos del tórax en total suman 25 constituidos por: (Wang y Col, 1992). ● Costillas verdaderas 14 ● Costillas falsas 6 ● Costillas flotantes 4 ● Esternón 1 Huesos de la pelvis ● Coxal Huesos del miembro superior Cada una de las extremidades que se fijan a la parte superior del tronco. Se compone de cuatro segmentos: cintura escapular, brazo, antebrazo y mano. Se caracteriza por la movilidad y capacidad para manipular y sujetar. Tiene en total 32 huesos. (Wang y Col, 1992). ● Clavícula 2 ● Escapula 2 ● Humero 2 ● Radio 2 ● Cubito 2 24 Huesos de la mano ● Ganchoso 2 ● Pisiforme 2 ● Piramidal 2 ● Semilunar 2 ● Grande 2 ● Escafoides 2 ● Trapecio 2 ● Trapezoide 2 Metacarpo ● Primer metacarpiano 2 ● Segundo metacarpiano 2 ● Tercer metacarpiano 2 ● Cuarto metacarpiano 2 ● Quinto metacarpiano 2 Hueso de la mano ● Trapecio ● Trapezoide ● Grande ● Ganchoso ● Pisiforme ● Piramidal ● Semilunar ● Escafoides 25 Columna Vertebral ● Vertebras cervicales 7 ● Vertebras dorsales 12 ● Vertebras lumbares 5 ● Columna sacra y coxis 2 Huesos de la pierna En anatomía humana, la pierna es el tercer segmento del miembro inferior o pelviano, comprendida entre el muslo y el pie. (Wang y Col, 1992). ● Rotula 2 ● Tibia 2 ● Peroné 2 ● Tarso 14 ● Metatarso 10 ● Falanges 28 ● Fémur 2 26 Esqueleto Humano. Figura 5 Esqueleto humano. Fuente: Guyton y Hall, 2004. 27 2.7.3 SISTEMA MUSCULAR ● Los músculos son el tejido que genera movimiento en las personas. Generan movimiento al contraerse. En el cuerpo humano los músculos están asociados al esqueleto, siendo los responsables de su movimiento. ● El cuerpo humano tiene más de 600 músculos. ● Las principales funciones del sistema muscular son: - El movimiento del cuerpo o de alguna de sus partes. - Producción de calor. Los músculos producen un 40% del calor corporal en reposo y hasta un 80% durante el movimiento. - El mantenimiento de la postura. Músculos de la cabeza ● Músculos mímicos ● Frontal: levanta las cejas y arruga la frente. ● Risorio: tiran de la unión bucal lateralmente. ● Orbicular de los párpados: cierran los ojos. ● Orbicular de los labios: cierran la boca. ● Músculos masticadores ● Masetero: cierran la boca y aprietan los dientes. ● Temporal: cierran la boca, aprietan los dientes y retraen el maxilar inferior. 28 Músculos del cuello ● Esternocleidomastoideo: rotación y flexión de la cabeza. Músculos del tronco Cara anterior ● Pectoral mayor: flexión del brazo. Colabora con el dorsal ancho en la aducción del brazo. ● Serratos anteriores o mayores: desplazan los hombros hacia adelante. ● Intercostales: situados entre las costillas. Intervienen en los movimientos respiratorios. ● Diafragma: separa las cavidades torácica y abdominal. Interviene en los movimientos respiratorios. ● Recto mayor del abdomen: flexión del tronco y compresión del contenido abdominal. ● Oblicuo externo o mayor del abdomen: flexión del tronco y compresión del contenido abdominal. Cara posterior ● Trapecio: intervienen en la aducción y abducción del brazo. ● Dorsal ancho: extensión del brazo. Colabora con el pectoral en la aducción del brazo. ● Redondo mayor: extensión, aducción y rotación interna del brazo. ● Redondo menor: aducción y rotación del brazo hacia fuera. 29 Músculos de las extremidades superiores Hombro ● Deltoides: abducción del brazo. Participa también en la flexión y extensión del brazo. Músculos Brazo ● Bíceps braquial: flexión y supinación del antebrazo. Flexión del brazo. ● Braquial anterior: flexión del antebrazo. ● Tríceps braquial: extensión del antebrazo. Una porción interviene en la extensión del brazo. Músculos Antebrazo ● Pronador: pronación del antebrazo y la mano. ● Supinador: supinación del antebrazo y la mano. ● Cubital anterior: flexión de la mano. ● Palmar: flexión de la mano sobre el antebrazo. ● Flexores y extensores de los dedos: flexión y extensión de los dedos. Músculos Mano Músculos cortos de la mano: mueven los dedos. Músculos de las extremidades inferiores Muslo y nalgas ● Glúteo mayor: extensión del muslo. ● Glúteo mediano: abducción del muslo. 30 ● Iliopsoas: flexión del muslo y el tronco. ● Pectíneo: flexión y aducción del muslo. ● Sartorio: flexión, aducción y giro del muslo hacia fuera. Flexión de la pierna. ● Recto interno: aducción del muslo y flexión de la pierna. ● Aductor mayor: aducción de las piernas. ● Aductor mediano: aducción de las piernas. ● Cuádriceps femoral: incluye el vasto externo, el vasto intermedio (que no se observa en el dibujo), el vasto. ● Interno y el recto anterior. Extensión de la pierna. ● Bíceps femoral: flexión de la pierna y extensión del muslo. ● Semitendinoso: flexión de la pierna y extensión del muslo. ● Semimembranoso: flexión de la pierna y extensión del muslo. Pierna ● Tibial anterior: flexión dorsal del pie. ● Soleo: junto con los gemelos permiten levantar el cuerpo sobre la punta de los pies. ● Gemelo: flexión plantar del pie y flexión de la pierna. Este músculo se inserta en el hueso calcáneo mediante el tendón de Aquiles. ● Peroneo lateral largo: gira hacia fuera el pie. ● Flexores y extensores de los dedos del pie: flexionan o extienden los dedos del pie. ● Músculos cortos del pie: mueven los dedos del pie. 31 Figura 6 Músculos del cuerpo humano. Fuente: Guyton y Hall, 2004. 32 2.7.4 ÓRGANOS DEL SER HUMANO Los órganos son estructuras corporales de tamaño y forma característicos, que están constituidos por masas celulares llamadas tejidos y que llevan a cabo funciones vitales específicas. (Wang y Col, 1992). Los sistemas de órganos son grupos coordinados de órganos que trabajan juntos en amplias funciones vitales. Los órganos se agrupan en once sistemas o aparatos y son: Sistema Muscular Sistema Óseo Sistema Respiratorio Sistema o aparato Digestivo Sistema Excretor o Urinario Sistema Circulatorio Sistema Hormonal o Endocrino Sistema Nervioso Aparato Reproductor Sistema Linfático Sistema inmunológico Sistema respiratorio: Está formado por órganos huecos que constituyen una especie de tubería. ● Faringe ● Laringe ● Tráquea ● Bronquios ● Pulmones 33 Sistema o aparato digestivo: Está constituido por los siguientes órganos: ● Boca ● Faringe ● Esófago ● Estomago ● Intestino delgado ● Intestino grueso Sistema urinario: El sistema urinario esta constituido por los siguientes órganos ● Riñones ● Uréteres ● Vejiga ● Uretra Sistema circulatorio El órgano que realiza las principales funciones es el corazón Órganos de los sentidos Ojos Oído Boca Lengua Piel Nariz 34 Órganos del ser humano Figura 7 Órganos de cuerpo humano. Fuente: Guyton y Hall, 2004. 35 2.8 CONOCIMIENTO METODOLOGÍA DE DESARROLLO La elección de la metodología de software a ser usada esta detallada en un estudio en base de los objetivos y requerimientos que se presentan para el desarrollo del tema de tesis, tal estudio se lo presenta en el Anexo I para su justificación. A continuación se presentan los conceptos principales sobre la metodología Microsoft Solutions Framework agile, que implementa al desarrollo del proyecto de tesis y este tema se describe gracias a la referencias bibliográficas Jim Highsmith. Agile Software Development, 2002. 2.8.1 METODOLOGÍA FRAMEWORK AGILE DESARROLLO MICROSOFT SOLUTIONS Es del tipo de metodologías de desarrollo de software agiles; Está enfocada a dirigir proyectos de innovación, en ella no se detalla ni se hace énfasis de la organización de los recursos humanos, está mas bien centrada en la gestión y administración del proyecto para lograr el impacto deseado. (Jim Highsmith, 2002). Envuelve indudablemente la calidad, ya que provee liberar una solución si esta aún tiene fallos o desperfectos. Para ello propone seleccionar un grupo de prueba piloto el cual es una VERSION BETA y cumplido un tiempo de prueba ya es liberada la versión formal o VERSION ALFA en la cual está garantizada la calidad. Los principios fundamentales de MSF incluyen: ● Promoción de la comunicación abierta entre los equipos de trabajo ● Trabajar en torno a una visión común ● Otorga autoridad y poder de decisión a los equipos de trabajo ● Establecer claramente los compromisos personales "accountability" y la responsabilidad compartida 36 ● Foco en entregar valor de negocio a través de los proyectos ● Mantenerse ágiles, y esperar el cambio ● Invertir en la calidad ● Aprender de las experiencias 2.8.2 CARACTERÍSTICAS Adaptable: Es parecido a un compás, usado en cualquier parte como un mapa, del cual su uso es limitado a un específico lugar. Escalable: Puede organizar equipos tan pequeños entre 3 o 4 personas, así como también, proyectos que requieren 50 personas a más. Flexible: Es utilizada en el ambiente de desarrollo de cualquier cliente. Tecnología Agnóstica: Porque puede ser usada para desarrollar soluciones basadas sobre cualquier tecnología. 37 2.8.3 FASES DE LA METODOLOGÍA Figura 8 Fases metodología. (http://www.epmpartners.com.au/our-methodology/) Visión: En esta fase se debe aplicar un estudio de lo que pretendemos en el futuro que haga nuestra aplicación o nuestro proyecto. Para ello debemos realizar un documento de estrategia y alcance de donde debe quedar pactada la necesidad de funcionalidad y servicio que se debe contar en la solución. Planificación: En esta fase básicamente debemos concretar claramente como va a estar estructurada nuestra solución para ello debemos crear un documento de planificación y diseño de la arquitectura, diseñar las pruebas de concepto donde se plantean los diferentes escenarios para probar la validez de los criterios utilizados para el diseño, debemos establecer métricas. 38 Desarrollo: En la etapa de desarrollo debemos codificar las aplicaciones y realizar las configuraciones necesarias para que la solución funcione. Es importante realizar pruebas continuamente, así se verifica la calidad del producto continuamente a lo largo del desarrollo y no únicamente al final del proceso. Estabilización: En esta fase podemos seleccionar el entorno de prueba piloto y lo que pretendemos con esto es identificar las deficiencias con un grupo reducido de usuarios para corregirlas y así en el futuro no tener problemas cuando se use la solución por todos. La etapa se le da el nombre de BETA y en la cual se realiza una revisión de documentación final de la arquitectura y la elaboración del plan de despliegue o implementación. Implementación: En esta etapa final ya se ha comprobado la calidad de la solución por lo cual est lista para ser publicada. En este sentido debemos liberar la solución y crear un registro de mejoras y sugerencias, revisar las guías y manuales y entregar proyecto final. Figura 9 Metodología. 39 Este ciclo se puede llevar a cabo de forma iterativa, de manera que cuando liberamos una solución podemos iniciar nuevamente la metodología para darle más funcionalidad. (Pressman R, 1997). 40 METODOLOGÍA 3 METODOLOGÍA A continuación se detallará las fases de desarrollo siguiendo la metodología de desarrollo MSF ágil debidamente justificada en el Anexo I pág. 121 (Selección de Metodología) del documento. 3.1 VISIÓN A continuación se define cuál es la visión general del aplicativo, lo que se pretende a futuro que haga la aplicación, además de la estrategia y alcance para llegar a la solución del problema. 3.1.1 VISIÓN DEL PROYECTO Desarrollar un escenario virtual en el cual se presente un modelo tridimensional del cuerpo humano, con la finalidad de que el modelo del cuerpo humano pueda ser manipulado y explorado (acercar, alejar, girar y desplazar) por el usuario que lo ejecute. La visión se fundamenta en base a lo acordado en el Anexo I pág. 117 que define detalladamente los requerimientos y antecedentes que se desea implementar para el proyecto de tesis. 3.1.2 ALCANCE Crear una herramienta que aporte a la enseñanza y aprendizaje para profesionales de la medicina, los estudiantes y cualquier persona que esté interesado en la anatomía del cuerpo humano en general. 3.2 PLANIFICACIÓN En esta fase esencialmente se concretará la estructurada de la solución, además de las pruebas de concepto teniendo en cuenta nuestros objetivos principales y sus alcances. 3.2.1 ESTUDIO TÉCNICO DE LENGUAJE A IMPLEMENTAR En este paso se especifica cuáles son las opciones de lenguajes de programación que se tienen a disposición para el desarrollo del proyecto y sus principales ventajas y desventajas con respecto a su funcionalidad con respecto a los requerimientos del proyecto. A continuación se las detalla: Características Adobe Flash En Flash no existe 3D. No cuenta con las capacidades 3D inherentes, ni herramientas de dibujo ni comandos de programación. Pero sí es capaz de mostrar formas vectoriales y calcular expresiones, con eso se puede hacer mucho si se está dispuesto a considerar 3D desde otro punto de vista. Es necesario desarrollar programas en ActionScript para simular espacios 3D, la traslación de las cámaras, etc. Características Adobe Director Director incluye una serie de herramientas accesibles desde el lenguaje de programación Lingo específico. Permite acceder a componentes 3D (cámaras, luces, modelos, texturas…) como elementos de un lenguaje orientado al objeto completo. Además, Director añade funciones para tratamiento de ficheros XML y funciones de accesibilidad. 41 Características Microsoft Silverlight Tiene capacidades y sintaxis propias para implementar “3D real” en lenguaje XAML pero se implementa una interacción “2D sobre 3D”. En un alto nivel, la interacción con “2D sobre 3D” se consigue realmente interactuando con una versión escondida en 3D de ese contenido en 2D. El 2D se posiciona de tal manera que el punto en el 3D sobre el que se posiciona el ratón está exactamente en el mismo punto en el que está el ratón sobre la versión 2D oculta. Características Java Java para trabajar con 3D puede utilizar las siguientes combinaciones: “Java+VRML”, “Java+X3D” y Java3D, aunque éste último puede combinar las anteriores. Las dos primeras son fruto de la evolución de los lenguajes de marcas para especificar escenas 3D. Además hacen uso de un API Java para manipular las escenas definidas. En el caso de “Java+VRML”, el API se denomina External Authoring Interface (EAI) y manipula nodos VRML. “Java+X3D” utiliza el API Scene Authoring Interface (SAI) que manipula nodos X3D. Sin embargo, Java3D es un API en el que se define interacción, comportamiento y otros elementos de la escena que en las dos primeras son definidos en los lenguajes de marcas. Las tres opciones proveen soporte para construir entornos virtuales a gran escala gracias a una descripción dinámica de escenas 3D, comportamiento y animación de cámara. Se pueden usar herramientas externas para definir elementos 3D y tras ello exportarlos a VRML o X3D e importarlos en desarrollos realizados bien con las APIs EAI o SAI o bien con el API Java3D. 42 A continuación se presentan dos tablas en las cuales se resume las características de cada una. Tabla 3. Comparativa Lenguajes de Programación Adobe Flash Microsoft Ajax Java Adobe Director Media (Misma Rica Muy rica Silverlight Riqueza Gráfica Muy rica Rica que HTML) Contenedor Ligero Ligero Muy ligero (en el Pesado Ligero navegador) de Lento Descarga Rápido Rápido Lento OK Pobre (a menos OK Lento Aplicación Soporte Audio/Video Excelente Excelente que use ActiveX) Disponibilidad Ms. Consistencia en Windows, Ms. Windows, Ms. Windows, Ms. Windows, Mac Ms. Windows, Mac Linux, Mac OS3 Linux, Mac OS Mac OS OS, Linux OS Muy consistente Relativamente Varía Relativamente te Muy consistente en consistente Ms. Windows y Mac Diferentes Entornos sobre Ms. Windows consistente fuera Informáticos Requisitos y Mac OS X del Si (Flex u Open Servidor Laszlo) Plug-in/Requisitos Flash (Player) de Ejecución en el de Ms. IE OS X Microsoft .NET Ninguno Ninguno Microsoft Plug-in para Java Runtime (JRE) Shockwave (Player) Silverlight X3D y Plug-in para Cliente Lenguaje de Ninguno VRML/X3D ActionScript C#, Visua Basic JavaScript Java, JavaScript Lingo, JavaScript programación Desafío de Relativamente fácil Ms.Visual Studio o Complejo sin Relativamente te Relativamente fácil Desarrollo con las Ms. Expresión herramientas fácil con la con la herramienta herramientas Blend tales como herramienta Director. TIBCO Nexaweb CSS, XML, XML, VRML/X3D, XSLT, DOM, Java3D Adobe Flex u Open Laszlo Conocimientos de XML, DOM, desarrollo JavaScript Coste de Licencia SI - ActiveX, X3D SI NO NO SI 43 Tabla 4. Comparativa Lenguajes de Programación en base objetos 3d Adobe Flash Microsoft Ajax Java Silverlight 3D Adobe Director “3D emulado” “3D real” “3Dreal” “3D real” (Swift3D) (XAML) (X3D) (VRML/ X3D/ Implementado - Capacidades Capacidades “3D real” (W3D) Java3D) Modelos 3D, luces y con cámaras ActionScript Propias de Propias de X3D Java3D, Completo VRML o X3D Texturas Importadas de Capacidades Capacidades Capacidades otras propias de propias de propias de herramientas XAML X3D Java3D, Completo VRML o X3D Animaciones A través de Programables Programables Programables Incluidas en los fotogramas modelos y clave e programables interpolaciones Grupos - - Capacidades Capacidades Definición Propias de propias de Jerárquica del X3D Java3D, mundo VRML o X3D Cinemática - - - - inversa Incluye bones y un Xtra Havok Interacción 2D OK, 3D “2D gráfica emulada 3D” Dispositivos NO - sobre de OK OK OK A través de A través de Soporta joysticks X3D VRML/X3D interacción complejos Visualización Spatialview - estereoscópica Proyectos Papervision3D CodePlex A través de A través de X3D VRML/X3D AJAX3D XMMVR - Away3D 44 Se puede concluir que cada tecnología presentada ofrece ventajas e inconvenientes según el criterio básico a considerar pero debemos tener en cuenta que la riqueza de todas reside en la posibilidad de combinarlas y de integrarlas con otras tecnologías. 3.2.2 ELECCIÓN DE LENGUAJE DE PROGRAMACION En base a los requerimientos y antecedente del proyecto que se detallan en el Anexo I y además de lo explicado en el anterior estudio, se ha optado por escoger el lenguaje de programación Java, por la razón de que este lenguaje respalda por completo los requerimientos funcionales necesarios para cumplir los objetivos propuestos en la tesis. 3.2.3 ESTUDIO DE TECNOLOGÍAS VRML SOPORTADAS POR JAVA EN BASE A LOS OBJETIVOS DEL PROYECTO Una vez escogido el lenguaje de programación a utilizar (Java), será necesario analizar todas las tecnologías (API’s) de desarrollo de ambientes virtuales que trabajan con Java. Las tecnologías más relevantes son: • VRML (Virtual Reality Modelling Language). • X3D (Extensible 3D). • Java3D. Características Generales VRML: Es un formato de archivo que permite la creación de objetos y mundos tridimensionales interactivos, fue diseñado para cumplir con los siguientes requerimientos básicos: Habilitar la posibilidad del desarrollo de programas para crear, editar y mantener archivos VRML, además de programas para la importación 45 y exportación del formato VRML a otros formatos gráficos tridimensionales. Aportar la capacidad de utilizar, combinar y reutilizar objetos dinámicos tridimensionales dentro de un mismo mundo VRML. Incorporar la capacidad de crear nuevos tipos de objetos no definidos específicamente como parte de VRML. Resaltar la importancia del funcionamiento interactivo en una amplia variedad de plataformas existentes. Permitir la creación de mundos tridimensionales de cualquier tamaño. VRML es un lenguaje jerárquico de marcas que usa Nodos, Eventos y Campos para modelar realidades virtuales tanto estáticas, como dinámicas. Los Nodos, que se usan para instanciar alguna de las 54 primitivas del lenguaje, no son más que una colección de Campos que contienen los atributos básicos de la primitiva. Las primitivas del VRML se agrupan según función, en nueve colecciones distintas: • Agrupación de nodos • Grupos especiales • Sensores • Geometría • Propiedades de geometría • Apariencia de la geometría • Interpoladores • Nodos excluyentes • Nodos comunes 46 JAVA3D El API de Java 3D. Es un conjunto de clases para crear aplicaciones y applets con elementos 3D. Ofrece a los desarrolladores la posibilidad de manipular geometrías complejas en tres dimensiones. La principal ventaja que presenta este API 3D frente a otros entornos de programación 3D es que permite crear aplicaciones gráficas 3D independientes del tipo de sistema. Es parte de la API JavaMedia y por tanto puede hacer uso de la versatilidad del lenguaje Java, así como soportar un gran número de formatos como VRML, CAD, OBJ, etc. Java 3D usa un conjunto de clases, interfaces y librerías de alto nivel que permiten aprovechar la aceleración gráfica por hardware que incorporan muchas tarjetas gráficas, ya que las llamadas a los métodos de Java 3D son transformadas en llamadas a funciones de OpenGL o Direct3D. Aunque Java3D no soporte directamente cada posible necesidad 3D, sí proporciona la capacidad de implementarlo a través del código Java. En otros casos se provee de cargadores (de VRML, X3D...) que traducen ficheros de ese formato en objetos apropiados en Java3D. X3D: es un estándar abierto XML, un formato de archivo 3D que habilita la creación y transmisión de datos 3D entre distintas aplicaciones y, especialmente, aplicaciones en red. Sus principales características son: • X3D esta integrado en XML: esto representa un paso fundamental a la hora de conseguir una correcta integración en: ● Servicios Web. ● Redes Distribuidas. 47 ● Sistemas multiplataforma y transferencia de archivos y datos entre aplicaciones. •X3D es Modular (tiene componentes): esto permite la creación de un núcleo 3D más ligero ajustado a las necesidades de los desarrolladores. •X3D es Extensible: permite añadir componentes para ampliar las funcionalidades según las necesidades del mercado. •X3D es Perfilado: se pueden escoger distintos grupos de extensiones apropiadas según las necesidades específicas de la aplicación. • X3D es Compatible con VRML: se mantiene el desarrollo, el contenido y la base de VRML. X3D, en lugar de mantener una única especificación amplia y estática, como VRML, que requiere la completa adopción de la misma para conseguir la compatibilidad con X3D, ha optado por una arquitectura basada en componentes que da soporte para la creación de diferentes perfiles, los cuales pueden ser individualmente soportados. 3.2.4 COMPARACIÓN DE TECNOLOGÍAS QUE MANEJAN IMÁGENES 3D EN JAVA A continuación se detalla las diferencias y similitudes que se tiene con VRML, X3D y Java3d (D. Selman, 2002). VRML y X3D Las grandes diferencias que se observan se pueden especificar en tres acciones distintas que tratan con conceptos abstractos, formatos de archivo y accesos al lenguaje de programación. 48 Los cambios importantes se pueden resumir en: • Expansión de las capacidades gráficas. • Un modelo de programación de aplicaciones revisado y unificado. • Múltiple codificación de archivos para describir un modelo abstracto, incluyendo XML. • Arquitectura modular que permite tener rangos de niveles de adopción y soporte para los distintos tipos de mercado existentes. • Expansión de la estructura de la especificación. La gráfica de la escena X3D, el corazón de una aplicación X3D, es idéntica a la gráfica de la escena VRML. El diseño original de la estructura gráfica de VRML y sus tipos de nodos estaba basado en tecnología establecida ya existente para gráficos interactivos. X3D tiene una única interfaz de programación de aplicaciones unificada (API). Esto difiere de VRML el cual tenía una API interna de scripting API además de un API externa. La API unificada de X3D's agiliza y resuelve muchos de los problemas que existían con VRML como resultado de una implementación más robusta. X3D tiene soporte para múltiples codificaciones de archivos: VRML, XML (Extensible Markup Language) y binario comprimido. El formato binario comprimido esta actualmente en desarrollo. X3D emplea una arquitectura modular para dar una mayor extensibilidad y flexibilidad. Desde un punto de vista más funcional los cambios más importantes introducidos en X3D son los siguientes: • Los archivos se estructuran para definir las necesidades de capacidad como parte del encabezado o inicio. 49 • Los externprotos definen información externa del archivo X3D. No pueden ser usados como mecanismos de extensión de los navegadores. La forma de hacerlo es a través de componentes personalizados. • Acceso a los nombres de los campos atendiendo a los cambios realizados desde eventIn, eventOut, field y exposedField, a inputOnly, outputOnly, initializeOnly y inputOutput, respectivamente. • Los Scripts pueden tener campos inputOutput (exposedFields). • El modelo Runtime para interactuar entre el contenido de un script y la gráfica de la escena está rigurosamente definido y muy controlado. VRML permitía un script multi-threaded para cambiar arbitrariamente la escena gráfica en un momento dado, sin embargo X3D define sólo un punto específico donde se realizarán los cambios. • El modelo Runtime y de programación para scripting es consistente entre los lenguajes de programación, esté dentro o fuera del navegador (una API define las reglas de ambos). • Un conjunto estrictamente definido de tipos abstractos para nodos. VRML/X3D y JAVA3D Una de las diferencias entre VRML/X3D y Java3D, es que Java3D se define como un lenguaje de programación de escenarios 3D a bajo nivel. En concreto la creación de objetos y elementos tridimensionales en Java3D requiere no sólo la formación de los elementos 3D, sino también la definición de todos los aspectos relacionados con la visualización y control de las capacidades del escenario. Esto trae ventajas e inconvenientes. Por ejemplo, para la creación del escenario más simple, el código en Java3D es superior al necesario en VRML/X3D, pero por otro lado el control de los distintos elementos presentes en el sistema es superior y más natural en Java3D. Esto quiere decir que al utilizar VRML es mucho más complicado 50 controlar el mundo virtual en especial para la interacción con el usuario. Para ello, en primer lugar, es necesario elegir entre el uso de programación interna dentro del propio código VRML/X3D o de programación externa. Además se está sujeto a la implementación de la especificación VRML/X3D que haya realizado el creador del visor VRML/X3D que se esté empleando. Por ejemplo a nivel de implementación del EAI, algunos visores de VRML como CosmoPlayer se basan en la Máquina Virtual Java de Sun’s Microsystem y otros como BS Contact se apoyan en la versión de Microsoft. Otro aspecto a tomar en cuenta es la pérdida de velocidad y prestaciones en el caso de Java3D frente a otros visores de VRML/X3D desarrollados en C/C++ y empleando directamente Direct 3D u OpengGL. A continuación se presentan las principales diferencias para ser comparadas entre estas tecnologías. Tabla 3. Comparativa en prestaciones Java (D. Selman ,2002) Elementos usados Cálculo Retardo Respecto a C++ C++ (sin 3D) 0.9×1+0.1×1 1.0(0% más lento) Java puro (sin 3D) 0.9×1.35+0.1×3.25 1.54 (54% más lento) Mixto Java/C++ (sin 3D) 0.9×1+0.1×3.25 1.225 (22.5% más lento) C++ (con 3D) 0.4×1+0.54×1+0.06×1 1.0 (0% más lento) Java puro (con 3D) 0.4×2.5+0.54×1.35+0.006×3.25 1.924 (92.4% más lento) Mixto: Java/C++ (con 3D) 0.4×1+0.54×1.35+0.06×3.25 1.32 (32% más lento) 51 3.2.5 CONCLUSIÓN USO DE TECNOLOGÍA Tras el estudio que se desarrolló en el anterior ítem se ha optado por el uso de Java3d por las siguientes razones: 1. Gráficos 3D son relativamente fáciles de crear y de programar. 2. Java3d normalmente requieren un plugin de pequeño tamaño para su visualización (aunque alguna tecnología no requiere ninguno). 3. Válido para diferentes plataformas (PC, Mac, Unix etc.). 4. Calidad sorprendente de imagen. 5. Efectos de sombreado (reflexiones, anti-aliasing, sombras, etc.). 6. Facilidad para su integración en páginas web. 7. Basados en estándares. 8. Utilización de sistemas de compresión para que la descarga por el usuario resulte ágil. 52 3.2.6 ARQUITECTURA EN CAPAS DE SOFTWARE Para la creación de la arquitectura software es necesario distinguir las diferentes capas que puede tener nuestra aplicación, tal como se demuestra en el grafico siguiente Figura 10 Arquitectura en Capas de Software.(J. Bouvier, 1999) Como se puede apreciar podemos distinguir tres capas software y un hardware. La primera capa es la Máquina Virtual de Java se encarga de interpretar nuestro programa. 53 La segunda capa es el motor 3D de nuestra aplicación. Es el conjunto de clases que realizamos para manejar toda la funcionalidad del programa. Estas clases se apoyan en la Java API y en Java3D para lograr su propósito. La tercera capa es el GUI, que es el conjunto de clases que realizamos para hacer que el usuario pueda de una manera sencilla manejar la funcionalidad que implementamos en la capa motor 3D. La Ultima capa hardware es la plataforma donde vamos a ejecutar el programa, y como se detalla en el Anexo I el aplicativo será embebido en una pagina web. Como se muestra en el gráfico, en el recuadro más grande se encierra las dos capas superiores, ya que las dos inferiores nos vienen dadas por la plataforma y el lenguaje a utilizar. Por otra parte intentaremos separar lo más posible las capas que nos toca implementar, de manera que si se diera el caso, podríamos encargar a un equipo de desarrollo realizar una capa y a otro equipo la otra, con el único dato del interface que las comunica. De esta forma se consigue un diseño modular, que es altamente modificable y reutilizable. 54 3.2.7 DIAGRAMA DE ACTIVIDAD El siguiente diagrama está basado en el estudio de los requerimientos y antecedentes que se presenta en el Anexo I del documento, con la finalidad de saber las actividades principales que debe cumplir el aplicativo. Figura 11 Diagrama de Actividades. 55 3.2.8 DEFINICIÓN DE FUNCIONALIDAD. En esta etapa se define las estructura de métodos y funcionalidades que se van a utilizar en el proyecto del cuerpo humano, tales como la interfaz, carga de modelos, despliegue de información entre otras. Diseño conceptual El objetivo es definir el esquema y funcionamiento del aplicativo. Esta etapa se centra en el aspecto de la implementación de la aplicación, además de la arquitectura de la interfaz gráfica que se despliega al usuario y su funcionalidad, en la cual se manejan las ventanas principales y los eventos de integración del usuario, como mover el Mouse, eventos de teclado, eventos de render, entre otros. Para llevar a cabo un buen diseño de los contenidos se deben tener en cuenta los siguientes aspectos: ● El usuario debe tener el control del sistema, no se puede limitar su actuación. ● La interfaz debe seguir estándares de diseño utilizados ampliamente. Cuanto más se parezca al resto de interfaces graficas, mas fácil de usar resultará para los usuarios. ● La GUI debe ser fácil de usar para usuarios, pero también proporcionar opciones avanzadas para usuarios expertos. ● Cualquier tipo de información que no sea relevante para el usuario y que sobrecargue la interfaz debe ser eliminada. ● Lo ideal es que la herramienta se pueda utilizar sin necesidad de ayuda o documentación. Sin embargo, el usuario siempre debe tener acceso a ella. ● La información de cada una de las partes del cuerpo humano que se exhiba dentro de nuestro aplicativo debe ser fácil de ubicar y leer. 56 Función Principal El principal objetivo de nuestro proyecto es la presentación de un modelo computacional tridimensional de cuerpo humano con sus partes, para que el usuario pueda manipularlo y explorarlo. Esta funcionalidad conlleva más que una simple presentación de un objeto tridimensional, es decir que se necesitan varias características específicas y requerimientos para llegar a cumplir nuestra funcionalidad principal, por lo cual a continuación se definirán las sub-funciones que se estima deberá contener nuestro aplicativo: Crear el ambiente virtual Antes de que se pueda presentar nuestro modelo se debe considerar que este debe estar contenido en un ambiente virtual, por lo tanto al crear esta funcionalidad se deberá tomar en cuenta la creación del ambiente virtual que solo es necesario crearlo una vez y que sus características serán en base al modelo del cuerpo humano que será contenido dentro del espacio virtual. Llamada a Objetos (3d) Como definimos anteriormente, los modelos tridimensionales serán desarrollados con una herramienta de diseño gráfico de modelos en 3d (3D Max Studio) por lo cual se deberá hacer una llamada de cada uno de estos objetos para poder ser renderizados dentro de nuestro aplicativo. Cabe recalcar que cada uno de nuestros modelos 3d son creados de una forma autónoma, es decir que al ser renderizados se debe especificar varios atributos individuales para cada uno y así ser acoplados para formar una solo estructura. 57 Atributos Objeto Al renderizar los modelos 3d dentro de nuestro aplicativo, estos pasan a ser parte de los objetos que serán utilizados y manipulados por nuestro aplicativo por lo que será necesario que se apliquen ciertas características y permisos para su uso, esto en base a el lenguaje de programación que este en uso (java y java3d). Como se especifica en el capitulo del marco teórico: Java3d maneja una estructura en forma de árbol para crear y generar los diferentes objetos. Los cuales serán aplicados a nuestros objetos ya anteriormente renderizados. Navegación en espacio virtual En el ambiente del espacio virtual creado será necesario aplicar reglas y características que se deberán utilizar para que el usuario pueda navegar con facilidad dentro del mundo virtual. Estas reglas deben ser pensadas para que la interacción con el usuario sea lo mas amigable posible y no afecte en su mayoría a la estabilidad del aplicativo Comportamiento Objeto Al tener ya creados todos nuestros objetos (modelos 3d) dentro de nuestro proyecto es necesario aplicar a cada uno de estos un comportamiento que nos permita explorar al objeto. Este tipo de exploración nos permitirá mover, rotar, cambiar de apariencia, eliminar, entre otras funcionalidades en el caso que sean necesarias. Por lo que esta sub-funcionalidad definirá todos estos tipos de comportamiento de cada objeto. 58 Interface Usuario Esta funcionalidad estará encargada de la interacción con el usuario, es decir que permitirá la comunicación del usuario con el aplicativo. Cabe mencionar que el uso del api java3d facilitará la creación de esta interface ya que el api, el cuál tiene definidas varias clases que facilitan la interacción. Información Objeto Esta funcionalidad se encargará de recolectar y almacenar la información que se dispondrá de cada uno de nuestros objetos (modelos 3d) y se definirá la forma en que esta información será presentada ante el usuario. Planificación prototipo de software Diseñar el prototipo significa llevar acabo los casos de uso de manera eficiente. Debe tener en cuenta los elementos de interfaz de usuario necesarios y los diferentes requerimientos que se han descrito anteriormente para la aplicación de nuestro proyecto. Durante la realización del prototipo se tuvo en cuenta que debería proporcionarse una apariencia amigable; que aspectos como el color y tamaño de imágenes fueran adecuados y que hubiera facilidad de comprensión y sea intuitivo para el manejo del usuario. A Continuación se detalla los pasos seguidos para la creación de nuestro prototipo: 59 Implementación Modelado Cuerpo Humano Como se describe en el capítulo II (Marco Teórico) pág. 24 Java3d la investigación de los modelos 3d que se pueden implementar o crear dentro del api de java3d, se pudo confirmar que el lenguaje tiene la posibilidad de crear modelos predefinidos de estructuras sencillas como por ejemplo: cubos, circunferencias , pirámides, puntos , líneas. Estos elementos a su vez pueden recrear casi cualquier tipo de figura en tres dimensiones, pero con el uso de estas estructuras primitivas de java3d el tiempo de creación de modelos es significativamente alto. Otros de los puntos que arrojó este rastreo de información, es que java3d permite invocar modelos creados con diferentes tipos de formato como por ejemplo (obj, model, 3ds). Actualmente, los cargadores (diseño) disponibles en Java 3D sirven para aplicaciones como: 3D-Studio, Solid Works, Imagine, AutoCad Drawing Interchange File, WaveFront, Imagine, blender, etc. Se pueden presentar modelos que no son expresamente nativos de java 3d gracias a la función Loaders como se lo explica en el capitulo del Marco Teórico, resaltando que Java3d permite el total manejo de estos modelos sin que estos presenten algún impedimento o error en su renderización y deformación si el caso la ameritara. Se debe tomar en cuenta que estos tipos de archivos son creados con un sin numero de programas especializados en desarrollar ambientes y modelos 3d de una manera fácil y amigable con el usuario, permitiendo así separar de una manera muy puntual el proceso de programación en java3d y el diseño del cuerpo humano y sus partes en un programa de diseño gráfico especializado. 60 Tomando en cuenta estos ítems se empleará un formato de archivo externo .obj para generar los modelos. Este archivo contiene los vértices de las líneas y puntos empleados para generar el modelo gráfico en 3d y los números para enlazar los vértices entre sí y así poder renderizar dichos modelos en java3d con una mayor agilidad y eficacia. La herramienta para generar nuestros modelos será 3D Studio MAX, que permite asignar tipos específicos de vistas del modelo tridimensional diseñado, tal y como se puede observar en este proyecto 3D Studio MAX facilita la importación y exportación de escenarios gráficos a formato obj el cual, apoyado en un visor, permite realizar un recorrido interactivo a través del ambiente virtual. 3.2.9 MODELADO Modelar en 3d. Para el modelado se emplean dos reglas generales para determinar cuales son los objetos que se crean mejor en 3D Studio Max. Objetos Suaves. Estos objetos no tienen que ser necesariamente suaves al tacto, si no que tienen aristas más suaves y no rectilíneas. En este tipo de objetos entran rocas, árboles y paisajes. Objetos Bézier. Se trata de objetos con formas helicoidales o curvas complejas. 3D Studio Max es útil para crear aquellos objetos en los que haya que alinear los materiales con su curvatura. 61 En el caso de las NURBS (son representaciones matemáticas de geometría en 3D capaces de describir cualquier forma con precisión) tenemos una gran cantidad de polígonos, para evitar todo este peso se optimiza cada una de las partes que conforman nuestros modelos. Gráficos 3D Los gráficos 3D requieren mucho menos espacio de almacenamiento que los gráficos 2D, porque no están dibujados previamente. Las mallas y la animación se guardan como una matriz de formulas, a las que se invoca cuando se necesita. Dado que el programa dibuja estas imágenes en la pantalla conforme se va viendo, y no antes, la computadora tiene que procesar mucho más y a mayor velocidad que con las imágenes 2D. A la hora de modelar en tres dimensiones, lo más importante es la tecnología que utilizamos ya que el modelo final es gracias al proceso de diseño creativo. En nuestro caso empleamos dos métodos de modelado diferentes, que son las tecnologías que nos ofrece 3D Studio Max: ● Poligonal ● Nurbs Modelado Poligonal. Este tipo de modelado es el más antiguo. Nos permitió controlar explícitamente las características que dan forma al modelo. La más básica de estas características son los puntos (vértices), que definen con exactitud el aspecto que tendrá un modelo. En este tipo de modelado comenzamos primero con objetos de poco detalle (primitivas). 62 Diseño de un objeto con Modelado Poligonal Los objetos poligonales están compuestos por una serie de puntos de control. La construcción de modelos poligonales consiste, básicamente, en conectar vértices. En el siguiente gráfico se muestra un objeto paramétrico cuyos atributos se controlan por medio de variables, como son el radio y sus segmentos. En la figura su variación. Figura 12 Forma primitiva de un círculo en 3D. Figura 13 Modificando parámetros de radio y segmentos. 63 El objeto que se forma es tridimensional, pero los componentes que lo forman tienen dos dimensiones en un mundo 3D. En este caso todas las caras del modelo comparten una arista con al menos otras tres caras, por lo tanto este es un modelo cerrado. Posteriormente trabajamos con el modo sub-objeto para revisar y modificar los parámetros base del objeto. Ya que se encuentran en este modo, modificamos los vértices de acuerdo a la forma que deseemos. Figura 14 Movimiento de vértices de acuerdo a coordenadas. Terminado el modelo procederemos a guardar el objeto como un archivo (obj). Cabe recalcar que al utilizar el api de Java3d el proceso de dar textura, color y material al objeto se lo realizará directamente cuando se compile el proyecto. Modelos que conforman Cuerpo Humano 3D A continuación se define la forma y constitución de nuestro modelo del Cuerpo humano y sus partes. 64 Utilizando lo aprendido en la fase de investigación, nuestro cuerpo humano no solo será un modelo, sino la agrupación de varios modelos 3d, Cada una de las partes del cuerpo humano serán diseñadas gráficamente como un modelo independiente uno de el otro, dando a cada modelo la facultad ser modificado sin que se afecte a los demás modelos A continuación enumeraremos todos los modelos creados que conformarán nuestro modelo del cuerpo humano con una pequeña descripción: ● (esqueleto.obj) modelo de los huesos. ● (musculos.obj) modelo de los músculos del cuerpo humano excepto del cuello hacia arriba. ● (musculos_rostro.obj) modelo que contendrá los músculos que el cuello y el cráneo. ● (diafragma.obj) modelo del diafragma. ● (pie_tendones_derecho.obj) modelo que contendrá los tendones y ligamentos del pie. ● (pie_tendones_izquierdo.obj) modelo que contendrá los tendones y ligamentos del pie izquierdo. ● (pulmones.obj) modelo de los pulmones. ● (cerebro.obj) modelo del cerebro. ● (traquea.obj) modelo de la tráquea. ● (corazon.obj) modelo del corazón. ● (venas_corazon.obj) modelo de las venas y arterias que rodean al corazón. ● (estomago.obj) modelo del estomago humano. ● (intestinodelgado.obj) modelo del intestino delgado. ● (intestinogrueso.obj) modelo del intestino grueso. ● (rinones.obj) modelo de los riñones. ● (higado.obj) modelo del hígado. ● (pancreas.obj) modelo del páncreas. ● (ojo_derecho.obj) modelo del ojo derecho. 65 ● (parte_ojo_derecho.obj) modelo de la cornea del ojo derecho. ● (ojo_izquierdo.obj) modelo del ojo izquierdo. ● (parte_ojo_izquierdo.obj) modelo de la cornea del ojo izquierdo. ● (cuerpo.obj) modelo de la piel que recubre al ser humano excepto del cuello hacia arriba. ● (rostro1.obj) modelo de la piel que recubre el rostro y el cuello. 3.2.9.1 Etapas de un Programa con Java 3D. Para todo proyecto que este utilizando el lenguaje de Java3D, hay que programar por etapas cada pieza del diagrama de la escena y después conectar cada etapa entre sí para formar el programa final. Si el orden no se lleva a cabo de forma correcta, la visualización no es posible, a pesar de que puede ser que el código compile. El orden de las etapas es el siguiente: 1- Crear el objeto Soporte con la clase Canvas3D, la cual simula una ventana donde se van colocando los objetos que se van creando. 2- Crear el objeto Universo Virtual. 3- Crear el punto de referencia. 4- Construir la Rama de Representación. 5- Construir la Rama de Contenido. 6- Compilar el diagrama de la escena. 7- Insertar sub-grafos (otras ramas) dentro del punto de referencia. Sin embargo, existe otra posibilidad que requiere menos líneas de código, en la que se incluye la clase SimpleUniverse. Al usar esta clase se evita tener que crear la Rama de Representación, por lo que el diagrama de la escena general queda reducido al esquema mostrado en la figura 15. Los nuevos pasos a seguir con esta alternativa son: 1- Crear objeto SimpleUniverse. 2- Crear el objeto Soporte con la clase Canvas3D. 3- Construir la Rama de Contenido. 66 4- Compilar el diagrama de la escena. 5- Insertar la Rama de Contenido dentro del punto de referencia del objeto SimpleUniverse. Creación del Escenario. La programación de aplicaciones que utilizan Java 3D se basa en el modelo de grafos de escena o SceneGraph. Dicho modelo conecta objetos separados en una estructura de árbol que incluye los datos geométricos, los atributos y la información de visualización, los cuales proporcionan una descripción completa de la escena y facilitan el control de las capacidades del escenario. El camino que lleva a cada nodo de la estructura arbórea define completamente la información del estado de la hoja y su representación gráfica sirve como herramienta de diseño y como documentación para programas Java 3D. Los grupos de transformación se pueden enlazar con otro grupo de transformación, siempre que el primero de ellos se una a un grupo de rama o Branch-Group. Éste, a su vez, se debe enlazar a un punto de referencia (Locale) que dependerá del universo virtual (VirtualUniverse). Por tanto, cualquier escenario gráfico debe disponer de un VirtualUniverse, que a su vez tiene un único objeto Locale, el cual proporciona referencias a un punto en el escenario virtual y sirve de raíz para varios sub-gráficos. Por último, destacar que los objetos Branch-Group son la raíz de los subgráficos y se dividen en dos categorías: por un lado está la rama de contenido gráfico, que especifica el contenido del universo virtual y por otro lado está la rama de vista. 67 Diagrama general de ejecución Figura 15 Diagrama general de ejecución. (J Joan, 2003) 68 3.3 DESARROLLO En esta etapa de desarrollo, debemos codificar la aplicación y realizar las configuraciones necesarias para que la solución funcione. Es importante realizar pruebas continuamente, así se verifica la calidad del producto continuamente a lo largo del desarrollo y no únicamente al final del proceso. 69 3.3.1 DIAGRAMAS DE CLASES Figura 16 Diagramas de clases. 70 Descripción de Clases A continuación se detallan las principales funciones y atributos de cada una de las clases que esta presentes en nuestro diagrama de clases: Main Class Figura 17 Main Clase. Es la clase encargada de invocar los métodos para ejecutar al Applet Tabla 4. Atributos Main Class Nombre Detalle Entero width Recibe un entero con el que se configurar el ancho del Applet. Entero height Recibe un entero con el que se configurar la altura del Applet. 71 Tabla 5. Métodos Main Class Nombre Detalle init () Se invoca cuando se carga el Applet y se usa para inicializar el Applet. creacionUniverse(): Se crea el ambiente virtual en donde se adicionara el modelo tridimensional, además de la estructura y parámetros necesarios del ambiente virtual. creacionScene(int cena) Se crea el grafo necesario para graficar los modelos tridimensionales dentro del ambiente virtual. Clase Cuerpo_ Humano Figura 18 Cuerpo_ Humano Clase. Clase principal la cual se encarga de crear nuestro modelo tridimensional además de setear todos sus atributos, el objeto creado servirá como base y raíz para la creación del resto de los objetos a crearse. 72 Tabla 6. Atributos Clase Cuerpo_ Humano Nombre Detalle Cadena Nombre Nombre que se le otorga al objeto tridimensional a crearse. Appearance app Atributos de color, texturas, etc. que se le dará a nuestro modelo. Ruta en la cual se encontrara el archivo (obj) con la cual se dará la estructura a nuestro modelo. Cadena Path BranchGroup objRoot Objeto en el cual se almacenara la estructura y atributos de nuestro modelo tridimensional raíz. Tabla 7. Métodos Clase Cuerpo_ Humano Nombre Detalle crearApariencia () Encargado de setear todos los atributos con respecto a la apariencia y posición de nuestro objeto tridimensional raíz. getFormGroup () Retorna el objeto tridimensional raíz setFormGroup () Setea el objeto tridimensional raíz. 73 Clase Parte_cuerpo Figura 19 Parte_cuerpo Clase. Clase encargada de crear y añadir todos los objetos tridimensionales hijos que formaran parte del objeto principal raíz. Tabla 8. Atributos Clase Parte_cuerpo Nombre Detalle Vector3f posición Vector float con tres parámetros que servirá para dar la posición del modelo tridimensional con respecto al modelo raíz. Vector3f Color Vector float con tres parámetros que servirá para dar color en formato (RGB) al modelo tridimensional. double Escala Valor decimal que servirá para setear la escala que se le dará al modelo tridimensional con respecto al modelo raíz. double Transparencia Valor decimal que servirá para setear el grado de transparencia que tendrá el modelo tridimensional. cadena path Ruta en la cual se encontrará el archivo que proporciona la estructura de cada uno de las figuras 3d (obj). 74 Tabla 9. Métodos Clase Parte_cuerpo Nombre Detalle CrearApariencia () Encargado de setear todos los atributos con respecto a la apariencia y posición de nuestro objeto tridimensional. getFormGroup () Retorna el objeto tridimensional. setFormGroup () Setea el objeto tridimensional. aderir_parte_cuerpo ( String Nombre, String path, float PocicionX, float Pociciony, float Pocicionz, float colorR, float colorG, float PocicionB, double brillo, doublé escala, doublé Transparencia ): Recibe todos estos parámetros por lo cual se crean la estructura y todos las atributos del objeto tridimensional hijo con respecto al objeto raíz, la estructura esta dada por un archivo (obj) que se lo localiza mediante el parámetro (Cadena Path). Clase Resources Figura 20 Resources Clase. Clase tipo ayuda cuya función es retornar la localización exacta de cualquier obj que se utiliza dentro de nuestro proyecto Atributos 75 Tabla 10. Métodos Clase Resources Nombre Detalle getResources( String filename ) Método que recibe la dirección real (dentro del sistema operativo) en donde se ubica cualquier archivo que este dentro del proyecto y lo transforma en una dirección virtual que pueda ser leída al compilar el proyecto y ser transferida dentro de un archivo jar. Clase Comportamiento Mouse Figura 21 Comportamiento Mouse Clase. Clase encargada de controlar y crear todos los comportamientos del periférico Mouse para la interacción del usuario con nuestro modelo tridimensional 76 Tabla 11. Atributos Clase Comportamiento Mouse Nombre Detalle PickCanvas pickCanvas Parámetro nativo del api Java3d que permite encontrar y manipular con mayor facilidad cualquier componente que sea hijo de un objeto creado dentro del entorno virtual de java3d. Shape3d presionadoShape Objeto visual (forma) del cual se descompone un objeto tridimensional creado en java 3d; Cabe recalcar que cada uno de esto objetos creados como objetos tridimensionales puedé estar constituidos por varios Shapes (formas) o por un único Shapes (formas). BranchGroup dataBranchGroup Objeto java3d en el cual el proyecto se define como el objeto raíz y en el cual se encuentra definido todos los demás modelos tridimensionales. Canvas3d canvas Lienzo en el cual está creado nuestro modelo tridimensional y nos permite acceder a funcionalidades que permiten modificar y manipular el entorno gráfico de nuestro ambiente virtual. TransformGroup d1 y Transform3D form3D Instancia un objeto de la clase nodos TransformGroup que permitirá una transformación espacial sencilla utilizando además un objeto Transform3D que puede colocar, orientar y escalar todos sus hijos. La transformación especificada ha de poder realizarse en los objetos en los que se aplica. JSObject j_s Se instancia el objeto de la clases JSObject cuya función es abrir un puerto de comunicación entre el Applet creado y JavaScript 77 Tabla 12. Métodos Clase Comportamiento Mouse Nombre Detalle Initialize (): Método nativo de java3d en donde se instancia todos los objetos necesario para la captura del comportamiento del mouse y su interacción con el ambiente virtual. processStimulus (Enumeration criteria): Método nativo de java3d que captura los eventos (criteria) disparados por el mouse y teclado con el cual se configurara la interactividad que se tendrá entre el modelo tridimensional del cuerpo humano y el usuario. envio_detalle_shape (): Método que se encarga de enviar información (nombre y detalle) de un objeto tridimensional que se haya instanciado anteriormente. creacion_Arbol_Contenido (JPanel Mapa) Método encargado de recorrer el objeto Jtree y anexar todos los nodos hijos o padres los cuales representa gráficamente en forma de árbol todos los objetos tridimensionales creados. creacion_Arbol_Contenido (JPanel Mapa) Método encargado de recorrer el objeto Jtree y anexar todos los nodos hijos o padres los cuales representa gráficamente en forma de árbol todos los objetos tridimensionales creados. anexar_hijo (DefaultMutableTreeNode node) Método encargado de recorrer y encontrar un objeto específico dentro del objeto Jtree para añadir su estructura designada (Geometry). retirar_hijo (DefaultMutableTreeNode node): Método encargado de recorre y encontrar un objeto especifico dentro del objeto Jtree para eliminar su estructura. imageIcon createImageIcon (String path): Método encargado de renderizar el icono que se le asigna a cada uno de los nodos Jtree que representan a cada uno de los modelos tridimensionales en el ambiente virtual. 78 Clase Elemento Figura 22 Clase Elemento. Clase encargada de crear un objeto personalizado cuya función es agregar y manejar datos adicionales de cada uno de los objetos tridimensionales creados dentro del proyecto. A cada uno de estos objetos, se les asignará un nombre, id, detalle y padre. Esta información adicional servirá para la interactividad con el usuario además de crear una jerarquía entre estos objetos. Tabla 13. Atributos Clase Elemento Nombre Detalle Cadena Elementos Variable creada para almacenar el id del objeto tridimensional renderizado dentro del ambiente virtual. Cadena Nombre Variable creada para almacenar un nombre personalizado para cada uno de los objetos tridimensional renderizado dentro del ambiente virtual. Cadena Detalle Variable creada para almacenar un detalle personalizado para cada uno de los objetos tridimensional renderizado dentro del ambiente virtual. Cadena Padre Variable creada para almacenar el nombre del objeto padre, permitiendo crear una estructura jerárquica de todos los objetos. 79 Tabla 14. Métodos Clase Elemento Nombre Detalle GetElemento (): Retorna variable tipo String elemento. SetElemento (String e) Configura variable tipo String elemento. GetNombre () Retorna variable tipo String nombre. SetNombre (String e) Configura variable tipo String nombre GetDetalle () Retorna variable tipo String detalle. SetDetalle (String e) Configura variable tipo String detalle. GetPadre () Retorna variable tipo String padre. SetPadre (String e) Configura variable tipo String padre. Clase Array_data_xml Figura 23 Array_data_xml Clase. Clase encargada de crear, leer, escribir y buscar en un archive XML todos los datos creados bajo la estructura del objeto elemento de cada uno de los objetos tridimensionales que se renderiza dentro de el ambiente virtual. 80 Tabla 15. Atributos Clase Array_data_xml Nombre Detalle Vector Vector_xml Variable inicializada tipo Vector que permitirá crear un array de objetos tipo elemento. Element rootNode Variable inicializada, nativa de JDOM que permite manejar objetos tipo XML. Document doc Variable inicializada, nativa de JDOM que permite crear y manipular documentos XML. Tabla 15. Métodos Clase Array_data_xml Nombre Detalle GetVector_xml () Método encargado de retornar array de objetos tipo elementos. SetVector_xml () Método encargado de setear array de objetos tipo elementos. NumeroElementos () Método encargado de retornar el número de elementos existente en el documento XML. Anexar_element_xml (elemento var) Método encargado de añadir un objeto tipo elemento al array Vector_xml. Guardar_elementos_xml () Método encargado de guardar en el documento XML todos los elementos creados en nuestro arreglo Vector_xml. Cargar_elemento_xml (String elemento) Método encargado de buscar con un parámetro String dentro del array Vector_xml un objeto con el atributo elemento igual al parámetro y retornarlo. 81 Clase Map_cuerpo Figura 24 Map_cuerpo Clase. Clase encargada de crear un objeto personalizado cuya función es adherir y manejar datos adicionales de cada uno de los objetos creados como nodos de un objeto Jtree, Cada uno de estos objetos tendrá embebido un objeto Map_cuerpo con el cual tendremos un control de la jerarquía y estado de cada uno de los objetos tridimensionales renderizados dentro del ambiente virtual. 82 Tabla 16. Atributos Clase Map_cuerpo Nombre Cadena id Detalle Variable creada para guardar el parámetro id dentro de un nodo tipo Jtree que permitirá la identificación del objeto tridimensional al que representa dentro de la jerarquía del árbol del cuerpo humano. Cadena Nombre Variable creada para guardar el parámetro Nombre dentro de un nodo tipo jtree que permitirá la identificación del objeto tridimensional al que representa dentro de la jerarquía de el árbol del cuerpo humano. Cadena flagIcon Variable creada para guardar el parámetro icono con la cual representara si el objeto tridimensional esta activo o desactivado dentro del ambiente virtual. Cadena estado Variable creada para guardar el parámetro con el cual se controlará el estado en el que se encuentra el nodo tipo Jtree. Cadena padre Variable que guarda el parámetro padre del nodo tipo Jtree Tabla 17. Atributos Clase Map_cuerpo Nombre Detalle getId () Retorna variable tipo String id. setId (String e) Retorna variable tipo String nombre. getNombre () Retorna variable tipo String nombre. setNombre (String e) Configura variable tipo String nombre. getPadre () Retorna variable tipo String padre. setPadre (String e) Configura variable tipo String padre. getEstado () Retorna variable tipo String estado. setEstado (String e) Configura variable tipo String estado. 83 3.3.3 Diagrama de Secuencia El siguiente diagrama muestra la interacción de los objetos en la solución a través del tiempo incluyendo los objetos y clases que se usan para implementar el escenario, y mensajes intercambiados entre los objetos. El diagrama examina la descripción del caso de uso y detalla los objetos necesarios para la implementación del escenario. Tal como se describió en cada caso de uso, se usa una secuencia de varios pasos que describe su secuencia de ejecución. 84 Figura 25 Diagrama de Secuencia. 85 3.4 ESTABILIZACIÓN La fase de estabilización se enfocará a la realización de pruebas, para identificar y corregir las deficiencias de la solución. A continuación se describirá por medio de pruebas de caso de uso las pruebas realizadas. 3.4.1 PRUEBAS DE CASO DE USO A continuación se desarrolla pruebas de caso de uso al aplicativo. Estas pruebas son evaluadas por un usuario quien testeó el aplicativo para poder tener un resultado veraz y correcto. Estas son documentadas en el Anexo III del documento. Carga del modelo tridimensional Figura 26 Diagrama de secuencia Carga. Como se aprecia en el diagrama se describe la carga del aplicativo que se ejecuta al momento de la petición que realiza el usuario. 86 Ejecución de prueba Carga Figura 27 Ejecución de prueba Carga 1. Figura 28 Ejecución de prueba Carga 2 Para confirmar la ejecución correcta del aplicativo se configuró la impresión por consola de mensajes que se ejecutan cada vez que se carga y adiciona correctamente una parte del cuerpo humano, tal como se lo puede observar en el siguiente gráfico. 87 Figura 29 Consola de confirmación carga objetos. Al finalizar la prueba de carga, se confirma que no ha existido ningún problema en el transcurso de la carga del modelo. Ejecución Evento Mouse (Sobreponer mouse encima modelo Cuerpo Humano) Figura 30 Diagrama secuencia Evento Mouse (hover). Esta funcionalidad se ejecuta automáticamente cuando el mouse se sobrepone en alguna parte al modelo del cuerpo y se encarga de presentar en pantalla la información (nombre y detalle) correspondiente a ese objeto especifico. 88 Figura 31 Evento Mouse (hover). Para confirmar la ejecución de la prueba, como se puede observar en la imagen anterior, simplemente se confirma que al pasar el mouse sobre alguna parte del cuerpo humano esta parte cambia de apariencia, además de cambiar el contenido del cuadro de diálogo que se presenta en la parte derecha de la pantalla. Ejecución Evento Mouse (doble click encima modelo Cuerpo Humano) Figura 32 Diagrama de secuencia Doble click. 89 Esta funcionalidad se ejecuta cuando el mouse se sobrepone en alguna parte del modelo del cuerpo y se presiona el click derecho dos veces causando que la parte del cuerpo humano en donde se encuentra sobrepuesto el mouse desaparezca. Figura 33 Doble click. Para confirmar la ejecución de la prueba como se puede observar en la imagen anterior simplemente se confirma que al tener el mouse encima de alguna parte del cuerpo humano y presionando el click derecho dos veces esta parte del cuerpo desaparece. 90 Ejecución Evento Mouse (Arrastre Mouse y click derecho) Figura 34 Diagrama de secuencia click derecho y arrastre. Esta funcionalidad se ejecuta cuando el mouse está dentro de los límites del entorno virtual, además de mantener el click derecho presionado y arrastrando el mouse dentro del entorno virtual. Esto causará que todo el modelo del cuerpo humano se desplace acorde al movimiento del mouse. Figura 35 Mouse click derecho y arrastre 1. 91 Figura 36 Mouse click derecho y arrastre 1. Para confirmar la ejecución de la prueba se confirma que el modelo se mueva al arrastrar el mouse, como se lo puede observar al evaluar las dos imágenes anteriores que describen el desplazamiento del modelo del cuerpo humano hacia la derecha. Ejecución Mouse (click derecho encima del ítem del árbol de jerarquía Cuerpo humano) 92 Figura 37 Diagrama secuencia mouse click ítem árbol Jerarquía. Esta funcionalidad se ejecuta cuando se presiona el click derecho del mouse encima de uno de los ítems que se encuentra dentro del árbol de jerarquía del lado izquierdo de la pantalla. Cabe recalcar que cada uno de estos ítems representa una parte del modelo tridimensional del cuerpo humano. Figura 38 Mouse click ítem árbol Jerarquía 1. 93 Figura 39 Mouse click ítem árbol Jerarquía 2. Para confirmar la ejecución de la prueba, se espera que al presionar el click derecho encima de uno de los ítems cambie su estado dependiendo del estado anterior, además de causar que el objeto al que representa dentro del cuerpo humano aparezca o desaparezca dependiendo de su estado. 94 RESULTADOS Y DISCUSIÓN 95 4. RESULTADOS Y DISCUSIÓN En este capítulo se presenta el análisis e interpretación de resultados a través de la presentación del aplicativo a un grupo de estudiantes de la Facultad de Medicina de la Universidad Tecnológica Equinoccial, los cuales accedieron a responder un cuestionario para evaluar los objetivos planteados en el proyecto de tesis. En el anexo IV se presenta a forma de documentación los cuestionarios resueltos por lo estudiantes. A continuación se destacan el procedimiento que se siguió para la presentación de los resultados obtenidos. Tamaño de muestra Para estimar el tamaño de muestra necesaria para realizar una encuesta sobre la ponderación del aplicativo se tomo la siguiente fórmula basada en un nivel de confianza aceptable de 81% y tomado por referencia al libro estadístico Elementos de probabilidad y estadística de HERNÁNDEZ LERMA 355 p : n z 2 pq E2 Donde n = Tamaño de la muestra z = 1.36 para el 81% de confianza (tabla de distribución normal z) p = Probabilidad de captación (0.96) q = 1 – p (0.04) E = Precisión o error admitido (0.08) 94 Tabla 18. Tabla calculo del tamaño de una muestra. TABLA DE APOYO AL CALCULO DEL TAMAÑO DE UNA MUESTRA POR NIVELES DE CONFIANZA Certeza 95% 94% 93% 92% 91% 81% 80% 62.27% 50% Z 1.96 1.88 1.81 1.75 1.69 1.36 1.28 1 0.6745 3.84 3.53 3.28 3.06 2.86 1.85 1.64 1.00 0.45 0.05 0.06 0.07 0.08 0.09 0.19 0.20 0.37 0.50 E 0.0025 0.0036 0.0049 0.0064 0.0081 0.043 0.04 0.1369 0.25 KISH, Leslie. Muestreo de encuestas, 3ª, 1982. Resolucion n 1.36 2 x0,96 x0,04 0.082 n = 11.06 El resultado final del tamaño de la muestra es de 11.06, Esto quiere decir que sera necesario encuestrar almenos a 11 estudiantes para que los resultados que se obtengan de la encuesta tengan una validez estadistica real. Interpretación de Encuestas El cuestionario consta de 4 preguntas y la calificación de cada pregunta recibe un puntaje que va del 1 al 10, las encuestas se presentan en el Anexo IV. 95 A continuación se detalla los pasos para interpretar y analizar cada pregunta: 1. Formulación la pregunta. 2. El objetivo por el cual se formuló la pregunta. 3. La tabla con la frecuencia y porcentaje de las respuestas. 4. Grafico donde se muestran los porcentajes alcanzados. 5. Análisis e interpretación de los datos. 96 Pregunta Uno ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el numero mayor de calificación, el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo esta diseñado de acuerdo a la realidad de la anatomía del cuerpo humano? Objetivo: Evaluar si se ha cumplido el objetivo planteado “Diseñar y crear un modelo tridimensional de la anatomía del cuerpo humano con sus respectivos órganos internos”. Tabla con la frecuencia y porcentaje Pregunta Uno Tabla 19. Frecuencia y porcentaje Pregunta Uno Nota Frecuencia Valor Total 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 1 7 8 1 8 9 3 27 10 6 60 Total 102 Porcentaje aceptación 93 Nivel Error 7 Nota: Valores establecidos para la calificación de pregunta. Frecuencia: Numero de alumnos que han calificado la pregunta con una nota especifica Valor: Resultado Nota por Frecuencia 97 Gráfico Porcentajes Pregunta Uno. Figura 40 Porcentaje Número de Alumnos por Calificación. Interpretación de datos Pregunta Uno En base de la tabulación de las encuestas realizadas, los resultados de la pregunta uno se muestran en la tabla y el grafico, representando una ponderación total de 93 sobre 100, con lo cual se concluye que el modelo tridimensional de la anatomía del cuerpo humano que se visualiza en el aplicativo sí alcanza el objetivo planteado de crear un modelo tridimensional de la anatomía del cuerpo humano, guardando semejanza a la anatomía real del cuerpo humano. Cabe recalcar que en el futuro se podría mejorar el nivel de detalle de capa parte que conforma el modelo, ya que el nivel de error no sobrepasa el 10% del total según las encuestas, pero se abre una pauta para mejorar este objetivo como trabajo futuro y disminuir el nivel de error. 98 Pregunta Dos ¿En la escala del 1 al 10, Califique qué tan fácil fue entender el modo de uso el aplicativo, siendo 1 el número mas bajo de calificación y 10 el numero máximo de calificación? Objetivo: Evaluar si se cumplió el objetivo planteado “Crear la interface amigable que permita la interacción del usuario con el entorno de realidad virtual”. Tabla 20. Frecuencia y porcentaje Pregunta Dos Nota Frecuencia Valor Total 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 2 14 8 1 8 9 1 9 10 7 70 Total 101 Porcentaje aceptación 92 Nivel Error 8 Nota: Valores establecidos para la calificación de pregunta. Frecuencia: Numero de alumnos que han calificado la pregunta con una nota especifica Valor: Resultado Nota por Frecuencia 99 Gráfico Porcentajes Pregunta Dos. Figura 41 Porcentaje Número de Alumnos por Calificación. Interpretación de datos Pregunta Dos En base de la tabulación de datos recolectados para la evaluación de la pregunta dos que se muestran en la tabla y el grafico, se obtiene una ponderación total de 92 sobre 100 con lo cual se concluye que el aplicativo sí cumple con el objetivo de implementar una interface amigable con el usuario ya que el nivel de error no sobrepasa 10% del total según las encuestas, pero se abre una pauta para mejorar este objetivo como trabajo futuro y disminuir el nivel de error. 100 Pregunta Tres ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo 1 el número más bajo de calificación y 10 el numero máximo de calificación? Objetivo: Evaluar si se cumplió el objetivo planteado “Implementar las funcionalidades de acercar, alejar, girar y desplazar aplicadas al modelo tridimensional del cuerpo humano para la manipulación por el usuario”. Tabla 21. Frecuencia y porcentaje Pregunta Tres Nota Frecuencia Valor Total 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 1 7 8 5 40 9 2 18 3 30 10 Total 95 Porcentaje aceptación 86 Nivel Error 14 Nota: Valores establecidos para la calificación de pregunta. Frecuencia: Numero de alumnos que han calificado la pregunta con una nota especifica Valor: Resultado Nota por Frecuencia 101 Gráfico Porcentajes Pregunta Tres. Figura 42 Porcentaje Número de Alumnos por Calificación. Interpretación de datos Pregunta Tres En base de la tabulación de datos recolectados para la evaluación de la pregunta tres que se muestran en la tabla y el gráfico, se obtiene una ponderación total de 88 sobre 100 con lo cual se concluye que las funcionalidades de acercar, alejar, girar y desplazar el modelo tridimensional se las cumple correctamente ya que el nivel de error no sobrepasa el 15% según la encuesta, pero se abre una pauta para mejorar este objetivo como trabajo futuro y disminuir el nivel de error. Pregunta Cuatro ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada una de las partes del cuerpo humano señaladas por el mouse, siendo 1 el número más bajo de calificación y 10 el número máximo de calificación? 102 Objetivo: Evaluar si se cumplió el objetivo planteado “Crear la interface amigable que permita la interacción del usuario con el entorno de realidad virtual”. Tabla 22. Frecuencia y porcentaje Pregunta Cuatro Nota Frecuencia Valor Total 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 1 7 8 1 8 9 1 9 10 8 80 Total 104 Porcentaje aceptación 95 Nivel Error 5 Nota: Valores establecidos para la calificación de pregunta. Frecuencia: Numero de alumnos que han calificado la pregunta con una nota especifica Valor: Resultado Nota por Frecuencia 103 Gráfico Porcentajes Pregunta Cuatro. Figura 43 Porcentaje Número de Alumnos por Calificación. Interpretación de datos Pregunta Cuatro En base de la tabulación de datos recolectados para la evaluación de la pregunta cuatro que se muestran en la tabla y el gráfico, se obtiene una ponderación total de 94 sobre 100 con lo cual se concluye que se llega a tener una aceptable información de cada una de las partes que conforman el modelo tridimensional del cuerpo humano ya que el nivel de error no sobrepasa el 10% según las encuestas, pero se abre una pauta para mejorar este objetivo como trabajo futuro y disminuir el nivel de error. Resultados Elección de Tecnología de desarrolló. Otra premisa necesaria para la presentación de sus resultados y discusión es la elección de la tecnología de desarrollo (Java y Java3d) que se uso para llegara cumplir los objetivos del proyecto la cual fue justificada tras la valoración de los requerimientos para el proyecto de tesis (Anexo I) y que se detalla en el Capitulo 3 en la sección de Estudio Técnico. 104 Ya que los resultados expuestos con anterioridad en la tabulación de los resultados de las preguntas realizadas de cada uno de los objetivos tenían implícitamente que ser obtenidas en base a la presentación del aplicativo y este a su ves confirmaba que el aplicativo debía estar configurado y funcional se puede concluir que la elección de la Tecnología de desarrolló seleccionada a cumplido a manera cabal con el propósito por la cual fue seleccionada 105 CONCLUSIONES Y RECOMENDACIONES 105 5. CONCLUSIONES Y RECOMENDACIONES 5.1 CONCLUSIONES Tras el desarrollo del aplicativo de la anatomía del cuerpo humano, es necesario recalcar los siguientes aspectos a manera de conclusiones generales: ● El análisis realizado de las tecnologías mas relevantes para el desarrollo de ambientes virtuales permite confirma que existen varios caminos para el desarrollo de modelos de la anatomía del cuerpo humano, pero se diferencian en su nivel de detalle y su dificultad para ser usados por un desarrollador. ● Para diseñar modelos tridimensionales que se basen en la anatomía del cuerpo humano se necesita tener una gran cantidad de información en especial información grafica de los aspectos de cada una de las partes del cuerpo humano y que además de requerir un minucioso y metódico diseño para ser implementados y agrupados entre si guardando similitud con la anatomía del cuerpo humano. ● El uso de Java3d para la creación de un aplicativo con este tipo de características ha demostrado su gran utilidad ya que dispone de una gran cantidad de documentación y ejemplos de código, Además de implementar varias clases nativas que facilitan la creación de las funcionalidades planteadas para la manipulación del modelo tridimensional del cuerpo humano. 106 5.2 RECOMENDACIONES Como trabajo futuro en base a este proyecto se ha pesado muchas formas en las cuales se podrá mejorar el aplicativo e incluso desarrollar diferentes tipos de aplicativos que no estén encaminados en la misma rama en la cual se encuentra el proyecto actual, pero si en uso de imágenes tridimensionales. A continuación se detallaran las principales ideas propuestas para trabajos futuros para mejorar el aplicativo: A pesar de ya disponer de un modelo del cuerpo humano bastante detallado, se podrá desarrollar más componentes del cuerpo y ofrecer un nivel mas especifico de cada uno de los componentes. Desarrollar más de un modelo del cuerpo humano, es decir que se incluya un cuerpo femenino y masculino con sus principales diferencias. Incluir un menú de herramientas dentro del aplicativo que permita al usuario tener un control más exacto del modelo. Implementar una forma mas eficiente de como el modelo se presenta en pantalla ante el usuario que permita una carga mas rápida y mejorar los recursos utilizados. Implementar más información educativa que se pueda presentar al usuario al usar el aplicativo. Crear una versión del Aplicativo en la cual el Usuario pueda guardar información “apuntes” en cada uno de los componentes del cuerpo humano. 107 Crear una interface que permita que el modelo del cuerpo humano sea manipulado por el acelerómetro de un Smartphone. Además de las ideas propuestas para mejorar el aplicativo a continuación se detallaran las ideas propuestas para desarrollar aplicativos que se basen en este proyecto: Desarrollar un aplicativo que permita cargar cualquier tipo de objeto 3d con el formato obj además de poder modificar los atributos del objeto. Desarrollar un aplicativo que permita explorar entornos virtuales que estén basados en lugares existentes. Desarrollar un aplicativo que permita crear estructuras arquitectónicas en base a objetos básicos que se disponga al usuario. 108 ANEXOS 109 ANEXO I Análisis de Requerimientos Este documento contiene la recolección y análisis de requerimientos necesarios para cumplir con la finalidad del proyecto, su utilidad principal es establecer un enfoque concreto de todo lo que se desea alcanzar; Para definir los requerimientos principales del proyecto de tesis fue necesaria la recolección de información mediante el método de entrevista Cabe recalcar que el aplicativo desarrollado en base a este tema de tesis forma parte de proyecto del Concurso Ecuatoriano de Proyectos en Redes Avanzadas (CEPRA) llamado “Sistema de entrenamiento virtual para medicina” y del cual el Ing. Fausto Freire está encargado de la dirección y coordinación. En base a esta información se aclara que las entrevistas se las hizo directamente con el Ing. Fausto Freire, quien nos brindó la información de los requisitos y que a continuación se los describe. Requerimientos funcionales 1. Crear un modelo del cuerpo humano tridimensional con sus respectivos órganos y huesos. 2. El modelo del cuerpo humano debe ser cargado en un entorno virtual que permita su presentación ante el usuario. 3. Descripción de funcionalidad y nombre de cada una de las partes del modelo del cuerpo humano. 4. Usar mouse y teclado para la manipulación del modelo cuerpo humano. 5. Aplicativo multiplataforma. es decir podrá ser ejecutado el los principales sistemas operativos (Lunix, Windows y Mac). 6. EL aplicativo embebido dentro de una página web para su visualización. 110 Requerimientos no funcionales 1. Cualquier lenguaje o herramienta que se use dentro del desarrollo e implementación del aplicativo no puede ser propietario. Requerimientos del Usuario. 1. Manipular y explorar el modelo tridimensional; Entre las principales funciones que se toman en cuenta al referirse a manipulación son: acercar, alejar, girar y desplazar. 2. Crear una interface grafica fácil de utilizar por cualquier tipo de usuario. 3. Desplegar la información en pantalla de cada parte del modelo del cuerpo humano que el usuario desee. 4. Disponer de un manual de uso. Arquitectura Como se lo menciona con anterioridad, el aplicativo desarrollado como parte de la tesis forma parte del proyecto llamado “Sistema de entrenamiento virtual para medicina” en el cual también se implementara un servidor web en un sistema Clúster de computadores y en el cual se deberá localizar el aplicativo para su distribución o uso. Por lo cual la arquitectura por default es Cliente-Servidor. 111 Antecedentes adiciónales Otro ítems a tomar encuentra antes de comenzar el desarrollo del aplicativo es que a pesar de tener definidos los principales requerimientos, se mantendrán reuniones semanales con el director del proyecto, con la finalidad de mantener un constante flujo de información sobre novedades de cambios o parámetros fijados durante el transcurso del desarrollo del proyecto y que podrían modificar los parámetros establecidos con anterioridad. Además que se especifica que al ser un proyecto de investigación que trata de innovar en el aspecto de uso nuevas tecnologías aplicadas a la medicina, no se regirá a tener un resultado concreto sino que se espera un resultado flexible a los cambios en el futuro. Casos de uso. A continuación se define el caso de uso basados en los requerimientos y antecedentes del proyecto de tesis explicados con anterioridad en este anexo. Primer paso Para definir el caso de uso es necesario definir a su actor, ya que este será el encargado de interactuar con el aplicativo: En este caso en particular solo existirá un actor que se lo definirá con el nombre de Usuario, ya que al estudiar los requerimientos no se hace una diferenciación entre otros tipos de actores. 112 Segundo Paso El siguiente paso será definir los eventos realizados por el sistema, en los que se rinde resultado observable de valor a un actor. Eventos Petición de ejecución: cuando el usuario desee utilizar el aplicativo deberá abrir la página web donde esta embebido el aplicativo, la cual producirá la ejecución del aplicativo y la carga de todo el entorno virtual con el modelo tridimensional de la anatomía del cuerpo humano. Manipulación del modelo: cuando el usuario desee manipular el cuerpo humano (acercar, alejar, girar y desplazar) el modelo tridimensional del cuerpo humano. Petición de detalle de parte del Cuerpo humano: cuando el usuario desee obtener información (nombre y detalle) de cada parte del cuerpo humano. Diagramas de casos de uso. Caso de Uso: Petición de ejecución Aplicativo Cargar Cuerpo Humano Figura 44 Caso de uso Petición de ejecución Aplicativo. 113 Caso de Uso: Petición de ejecución Aplicativo Actor: Usuario 1) El usuario ingresa a la página web en donde se encuentra el aplicativo embebido 2) Aplicativo presenta en pantalla la barra de progreso de carga del modelo 3d del cuerpo humano 3) Aplicativo despliega en pantalla del modelo 3d del cuerpo humano Caso de Uso: Petición de detalle de parte del Cuerpo humano Petición de detalle de parte del Cuerpo humano Figura 45 Caso de uso Petición de detalle de parte del Cuerpo . Caso de Uso: Petición de detalle de parte del Cuerpo humano Actor: Usuario 1) Se recibe petición de usuario para detalle de una parte de el modelo 2) Aplicativo recepta información de cual es la parte del cuerpo y envía información requerida (Nombre y detalle) del cuerpo humano. 3) Aplicativo despliega de forma grafica el nombre y detalle de la parte del cuerpo humano. Caso de Uso: Petición Manipulación del modelo Manipulación del modelo Figura 46 Caso de uso Petición Manipulación del modelo. 114 Caso de Uso: Petición Manipulación del modelo Actor: Usuario 1) Se recibe petición de usuario para manipular modelo del cuerpo humano (Alejar, acercar, desplazar y girar). 2) Aplicativo recepta información necesaria (coordenadas, tipo de evento, velocidad) para cumplir la petición del cliente y ejecuta la acción. 3) Aplicativo despliega de forma grafica el cambio que se ejerce en el modelo. Metodología Para seleccionar la metodología que mejor se adapte a los requerimientos de desarrollo del proyecto de tesis se debe basar en el análisis de requerimientos previamente realizado. Cabe mencionar que existe una gran gama de metodologías que se ajustan a la diversidad de propuestas y diferencias en el grado de detalle, información disponible y alcance de cada una de ellas. Por lo cual considerando su filosofía de desarrollo, se las puede clasificar en aquellas metodologías con mayor énfasis en la planificación y control del proyecto, en especificación precisa de requisitos y modelado, y que reciben el apelativo de Metodologías Tradicionales. Otras metodologías, denominadas Metodologías Ágiles, están más orientadas a la generación de código con ciclos muy cortos de desarrollo y se dirigen a equipos de desarrollo pequeños; Hacen especial hincapié en aspectos humanos asociados al trabajo en equipo e involucran activamente al cliente en el proceso. A continuación se revisan brevemente cada una de estas categorías de metodologías. (Pressman R, 2002). 115 Metodologías tradicionales (no ágiles) Las metodologías no ágiles son aquellas que están guiadas por una fuerte planificación durante todo el proceso de desarrollo; Se denominan también metodologías tradicionales o clásicas, donde se realiza una intensa etapa de análisis y diseño antes de la construcción del sistema. (Prentice Hall. 2001). Metodologías ágiles Un proceso es ágil cuando el desarrollo de software es incremental (entregas pequeñas de software, con ciclos rápidos), cooperativo (cliente y desarrolladores trabajan juntos constantemente con una cercana comunicación), sencillo (el método en sí mismo es fácil de aprender y modificar, bien documentado), y adaptable (permite realizar cambios de último momento) (Abrahamsson, P., Salo, O., Ronkainen, J., Agile Software Development Methods. Review and Analysis, VTT, 2002). 116 Comparación Metodologías Las principales diferencias de las metodologías ágiles con respecto a las tradicionales se las ha descrito en la siguiente tabla. Tabla 23. Diferencias entre metodologías ágiles y no ágiles (Prentice Hall. 2001) Metodologías Agiles Metodologías Tradicionales Basadas en heurísticas de prácticas de producción de código durante el proyecto menos controlado, en normas provenientes de estándares seguidos por el entorno de desarrollo Especialmente preparados para cambios Proceso Basadas con pocos principios No existe contrato tradicional o al menos es bastante flexible El cliente es parte del equipo de desarrolló Cierta resistencia a los cambios Procesos mucho mas controlado, con numerosas políticas/normas Existe un contrato prefijado El cliente interactúa con el equipo de desarrolló mediante reuniones Grupos pequeños Grupos grandes y posiblemente distribuidos Pocos artefactos Mas artefactos Pocos roles Mas roles Menos énfasis en la arquitectura de software La arquitectura de software es esencial y se expresa mediante modelos 117 Selección de Metodología Si se toma encuentra de todos los ítems anteriores especialmente de los requerimientos y antecedentes del proyecto, se podrá confirmar que será necesario escoger una metodología Ágil para el proyecto de tesis, ya que el desarrollo del proyecto tiende a ser flexible en cada uno de sus requerimientos. Diferencias entre metodologías ágiles: Cabe recalcar que existen varias metodologías agiles que se podrían implementar por lo cual a continuación se Identificará en una tabla las tres metodologías agiles mas relevantes y con mas presencia en internet en la actualidad. Tabla 24. Diferencias entre metodologías ágiles. (Pekka Abrahamsson, Outi Salo y Jussi Ronkainen .2002). SCRUM Las iteraciones son de dos a cuatro semanas y se conocen como Sprint. EXTREME PROGRAMMING Las interaciones de entrega de una a tres semanas (algo más rápidas). MSF Ágil Las interaciones son adaptables a los requerimientos del cliente, además de variar según sea necesario en el transcurso de las fases del proyecto Al finalizar un Sprint, las tareas que se han realizado del Sprint Backlog y en las que el Producto Owner ha mostrado su conformidad ya no se vuelve a tocar en ningún momento. "Lo que se termina, funciona y esta bien, se aparta y ya no se toca". Cada miembro de Scrum Team trabaja de forma individual El Scrum Team trata de seguir el orden de prioridad de marca el Producto Owner en el Sprint Backlog pero si ven que es mejor modificar el orden de prioridad para el desarrolló de las tareas, pueden hacerlo. EL Scrum es una metodología de desarrolló ágil mas basada en la administración del proyecto Las tares que se van terminando en las diferentes entregas al cliente son susceptibles a modificaciones durante el transcurso de todo el proyecto, incluso después de que funcione correctamente. Cada tarea que se termina, esta basada en un ciclo de vida del software (ciclo vital del desarrollo/diseño de sistemas) que es una guía adaptable basada en experiencias, mejora y practicas Los miembros programan parejas en un proyecto XP. en Cada miembro del grupo de trabajo desarrolla en forma individual El equipo de desarrolló sigue estrictamente el orden de prioridad de las tareas definido por el cliente (aunque el equipo de desarrolló les ayude a decidir, ellos son lo que mandan). Dependiendo del tamaño del proyecto, cada rol puede ser asignado a un individuo o a un grupo, o bien un individuo o grupo puede desempeñar más de un rol. En cambio, el Extreme Programming se centra más en la propia programación o creación del producto. MSF apoya proceso de múltiples enfoques, por lo que se puede adaptar y apoyar cualquier proyecto, independientemente de su tamaño o complejidad. 118 Conclusión Metodología Como se detalla en la tabla se muestra las principales características que se tiene en cada una de las metodologías agiles y que a pesar de compartir la mayoría de atributos si existen diferencias. Por lo cual teniendo en cuenta esta referencia se ha optado por escoger la metodología MSF Ágil ya que se ajusta a los requerimientos expresados en ítems anteriores, además de brindar la flexibilidad y abierta al cambio constante necesaria para el proyecto, así como permitir la construcción y el mantenimiento de sistemas a bajo costo, de entrega más rápida y de calidad. (Jim Highsmith. 2002). 119 ANEXO II Manual de Uso A continuación se detallará el uso de las diferentes herramientas y acciones que se tienen a disposición para la manipulación de la anatomía del Cuerpo Humano. Para la mejor comprensión del uso del aplicativo procedimos a dividir en tres sectores la aplicación, como se detalla en la siguiente grafica. Figura 47 Detalle Uso Aplicativo. Como se puede observar en el gráfico, cada sector esta identificado con un recuadro que lo limita, además de tener un pequeño grafico en forma de nota en la cual se señala el título de cada sector. 120 A continuación se detalla cada sector: Sector C Figura 48 Detalle Uso Sector C. Descripción: Es el sector más pequeño y tiene la funcionalidad de abrir un cuadro de dialogo dentro de nuestra pagina en donde se desplegará el nombre y el detalle de la parte del cuerpo humano en donde se está desplazando el mouse; Cabe recalcar que esta función es automática y ocurre cada vez que el mouse pase encima de una parte del cuerpo humano, además de componerse de texto, cuadro de dialogo y un botón cuya funcionalidad se detalla a continuación: Text: “Si deseas una pequeña desc.....”: Simplemente su utilidad es informativa. Botón “¡Haz click aquí!”: al hacer click se desplegara el cuadro de dialogo. Cuadro de dialogo: su funcionalidad es la de mostrar la información del nombre y descripción de la parte del cuerpo sobre la cual se esta desplazando el mouse, esta compuesto de tres partes titulo, descripción y un pequeño botón para cerrar el dialogo 121 Sector B Figura 49 Detalle Uso Sector B. Localización Es la zona ubicada en la sección izquierda de la imagen del cuerpo humano, este sector del aplicativo se despliegan en forma jerarquía todas las partes en las que lo hemos dividido a la anatomía del cuerpo humano, además de clasificara por su tipo (Órganos, Huesos, Músculos, etc). 122 Funcionalidad Su principal función es representar en el sector A al objeto tridimensional que tiene asignado el mismo nombre y que se ha seleccionado. Figura 50 Función Sector B. Como se puede observar en el gráfico anterior los tres lugares que están señalados en los recuadros en la imagen representan al mismo objeto tridimensional. En el cuadro de dialogo se observa el nombre y detalle de objeto, en el árbol de objetos vuelve a parecer el nombre del objeto y en el gráfico tridimensional que aparece en el recuadro, se muestra al objeto tridimensional llamado tórax. Ítems Además de que cada ítem consta con su nombre correspondiente aparece con un icono asignado en la parte izquierda del nombre, como se puede observar en el siguiente gráfico. Figura 51 Detalle Ítem Sector B. 123 Los iconos asignados al objeto pueden ser solo de dos tipos: El primero es un circulo verde con un signo positivo (+) en el medio de la circunferencia, el cual representa que el objeto tridimensional al que representa esta visible en el modelo tridimensional. Figura 52 Ítem activos. El segundo es un circulo rojo con un signo negativo (-) en el medio de la circunferencia, el cual representa que el objeto tridimensional al que representa no esta visible en el modelo tridimensional. Figura 53 Ítems desactivados. El tipo de estado (visible o no visible) del objeto tridimensional puede ser variado simplemente dando click con el mouse encima del nombre del objeto del ítem, causando que este aparezca y desaparezca dinámicamente dependiendo de las necesidades del usuario, en conclusión esto nos ayuda a llevar un control exacto de lo que se ha quitado o esta presente en el modelo tridimensional. 124 Ejemplo Figura 54 Estado visible objetos tridimensionales. Figura 55 Estado No visible objetos tridimensionales. 125 Al estudiar las dos graficas anteriores, las cuales representan a la misma zona del modelo tridimensional; Se observará que en el primer gráfico la mayoría de los ítems tienen un estado visible, lo cual también se refleja en los objetos tridimensionales del modelo; de igual manera en el segundo gráfico en el cual la mayoría de ítems están en un estado no visible y los modelos tridimensionales están en un estado no visible. Casilla de Verificación Figura 56 Casilla de Verificación. Cave recalcar que cada uno de los ítems tiene un nodo padre una Casilla de Verificación con su respectivo nombre dentro de nuestro árbol jerárquico. Este agrupa a estos ítems de acuerdo a sus características y la funcionalidad de casilla de verificación es desvanecer o aparecer a todos los ítems hijos que están a su encargo, a continuación un ejemplo: 126 Figura 57 Estado Casilla de Verificación. Como se observa en la gráfica, las casillas de verificación que no están seleccionadas hacen que en el modelo del cuerpo humano se desvanezcan los ítems que están a su cargo jerárquicamente, a su vez los que están seleccionados aparecen claramente en nuestro modelo; Esta funcionalidad esta pensada para que sea mucho mas fácil controlar para el usuario el explorar y manipular los objetos tridimensionales de que está compuesto nuestro cuerpo humano, además de dar un nivel mas exacto de control para el usuario. Cabe recalcar que para poder seleccionar o dejar de seleccionar una casilla de verificación es necesario proceder a hacer doble click encima de la casillas de verificación que se desee manipular. 127 Figura 58 Casilla de Verificación seleccionado solo Esqueleto. Casilla de Verificación (Árbol Objetos Cuerpo Humano) Como se observa en el siguiente grafico, la Casilla de Verificación (Árbol Objetos Cuerpo Humano) es el nodo padre que contiene a todos los demás nodos e ítems que tiene el árbol jerárquico del cuerpo humano y su función primordial es que se encarga de cargar o descargar todos los modelos de la anatomía del cuerpo humano el aplicativo, es decir que si el usuario desea cargar o desvanecer todos los modelos a pesar que el usuario haya manipulado cualquiera de los ítems al hacer doble click en el nodo, se pueda volver a cargar o desvanecer el ítem sin importar su condición actual. 128 Figura 59 Casilla de Verificación no seleccionado (Árbol Objetos Cuerpo Humano). Figura 60 Verificación seleccionado (Árbol Objetos Cuerpo Humano). 129 Sector A Es el sector principal del aplicativo, en donde se despliega el modelo tridimensional de la anatomía del cuerpo humano y sus órganos, además de que los otros sectores dependen directamente del comportamiento que se desarrollará en este sector. Figura 61 Modelo tridimensional sector A. Como se puede observar en el gráfico anterior en este sector se nos presenta el modelo tridimensional y por ende a esta zona se la doto de algunas características interesantes para ser manipulado por el usuario principalmente con el uso del mouse. A continuación se los describe con detalle: 130 Funciones Mouse Mover el mouse Simplemente con el hecho de mover el mouse encima de cualquier parte de nuestro modelo causará que automáticamente la parte del modelo del cuerpo humano cambie de color a un tono azulado indicándonos que parte exactamente se está señalando. A continuación un ejemplo grafico Figura 62 Movimientos de mouse encima modelo tridimensional. 131 Mouse movimiento de arrastre botón derecho Al generar un movimiento del mouse además de mantener presionando su botón derecho, causará que el modelo tridimensional gire de acuerdo hacia donde se lo dirija el mouse, es decir que si se mueve el mouse hacia la izquierda el modelo tridimensional gira hacia la izquierda. Esto también ocurrirá si se arrastra el mouse de arriba hacia abajo y viceversa. Cabe recalcar que no es necesario tener el mouse encima del modelo tridimensional, solo será necesario mantener el mouse dentro del sector A, como se muestra en el ejemplo: Figura 63 Mouse arrastre botón derecho. Como se observa en el gráfico anterior, se ha arrastrado el mouse hacia la derecha manteniendo presionado el botón derecho causando que el modelo tridimensional gire aproximadamente unos 45 grados con respecto a su vista anterior 132 Mouse movimiento de arrastre botón izquierdo Al generar un moviendo del mouse además de mantener presionando el botón izquierdo del mouse causara que el modelo tridimensional sea desplazado de su posición de acuerdo hacia donde se lo dirija el mouse, es decir que si se mueve el mouse hacia la izquierda el modelo tridimensional se moverá hacia la izquierda. Esto también ocurrirá si se arrastra el mouse de arriba hacia abajo y viceversa. Cabe recalcar que no es necesario tener el mouse encima del modelo tridimensional, solo será necesario mantener el mouse dentro del sector A, e incluso el modelo tridimensional no esta limitado para que se mantenga dentro del foco de la pantalla es decir que el modelo puede salir fuera de foco dependiendo de la manipulación del usuario, como se muestra en el siguiente ejemplo. Figura 64 Mouse arrastre botón izquierdo. Como se observa en el gráfico anterior, se ha arrastrado el mouse hacia arriba manteniendo presionado el botón izquierdo, causando que el modelo tridimensional sea desplazado hacia arriba de la pantalla con respecto a la vista anterior 133 Rueda Mouse Otra de las funcionalidades que se ejecutan con el mouse, es con el uso la rueda. Esta acción permite al usuario acercar o alejar el modelo dependiendo de la necesidad, es decir que manteniendo el mouse encima del sector A y girando la rueda del mouse hacia adelante causara que el modelo tridimensional sea visualizado como un aumento en el zoom o girando la rueda para atrás causará que el modelo tridimensional sea visualizado con una disminución del zoom, como se muestra en el siguiente ejemplo: Figura 65 Rueda mouse 1. 134 Figura 66 Rueda mouse 2. Si se observa con detalle los gráficos anteriores se podrá observar que se a aumentado el zoom a nuestro modelo tridimensional solo moviendo hacia adelante la rueda del mouse, de igual manera se puede disminuir el zoom simplemente moviendo hacia atrás la rueda del mouse, esto a conveniencia del usuario. 135 ANEXO III Pruebas de Campo Aplicativo A continuación se documentarán varias pruebas realizadas al aplicativo con la finalidad de poder aprobar o identificar deficiencias que pudieran existir en la aplicación; Hay que considerar que el aplicativo se encuentra embebido en una página web, por lo cual para comenzar a generar las pruebas será necesario simplemente acceder a dicha página. Para la evaluación de los test de pruebas será necesario definir un actor (Usuario) que evalué en forma ecuánime y desinteresada todas las pruebas que se presentan a continuación. Para lo cual se ha tomado en consideración al Director del trabajo de titulación, Ing. Galo Ramos, quien ha llevado a cabo la evaluación. 136 Quito Ecuador, 4 de Mayo de 2012 A QUIEN CONCIERNE: Sirva la presente para certificar que el Ing. Galo Ramos, coordinador de la carrera de ingeniería Informática y ciencias de la computación de la Universidad Tecnológica Equinoccial, con cédula de identidad 1708020548, realizó el cuestionario de puedas practicas para la evaluación del aplicativo realizado para el proyecto de tesis del señor Bernardo Morales aspirante a ingeniero en informática y ciencias de la computación. _________________ Ing. Galo Ramos CC. 170802054-8 137 Test de Carga del modelo Aplicativo. 1. ¿Unos segundos después de abrir la página web en donde se encuentra embebido el aplicativo aparece la barra de progreso de carga de Java? Nota:______________________________________________________ __________________________________________________________ 2. ¿Al llenarse la barra de progreso de Java en la página web se presenta en pantalla una imagen de un cuerpo humano? Nota:______________________________________________________ __________________________________________________________ 3. ¿La imagen que se presenta en pantalla de un modelo tridimensional del cuerpo humano tiene alguna irregularidad fuera de lo común o algo que no pareciere estar de acuerdo con el resto del cuerpo humano? Nota: ______________________________________________________ __________________________________________________________ 138 Test de Eventos Mouse sobre Modelo Tridimensional del cuerpo humano. 4. ¿Al colocar el mouse encima del modelo tridimensional, presionar el click derecho del mouse y arrastrar el mouse de un lado al otro, el modelo tridimensional se mueve acorde al movimiento del mouse? Nota: ______________________________________________________ __________________________________________________________ 5. ¿Al colocar el mouse encima del modelo tridimensional, presionar el click izquierdo del mouse y arrastrar el mouse de un lado al otro, el modelo tridimensional gira acorde al movimiento del mouse? Nota: ______________________________________________________ __________________________________________________________ 6. ¿Al colocar el mouse encima del modelo tridimensional y presionar la rueda del mouse hacia abajado o hacia arriba, en el entorno virtual aumenta o disminuye el zoom? Nota: ______________________________________________________ __________________________________________________________ 139 7. ¿Al colocar el mouse encima del modelo tridimensional sin presionar ningún botón de mouse, la parte especifica de modelo tridimensional del cuerpo humano en donde se esta señalando con el mouse cambia su aspecto a otro color? Nota: _____________________________________________________ __________________________________________________________ 8. ¿Al colocar el mouse encima del modelo tridimensional, presionar dos veces el click izquierdo del mouse, la parte especifica de modelo tridimensional del cuerpo humano en donde se esta señalando con el mouse desaparece? Nota: _____________________________________________________ _________________________________________________________ 140 Test árbol de jerarquía Cuerpo humano. 1. ¿Al colocar el mouse encima de cualquiera de las ítems hijos que están en el dado izquierdo de la pantalla y presionar dos veces el click izquierdo del mouse, este cambia su icono a uno diferente dependiendo su estado actual, al igual que el objeto al que representa dentro del cuerpo humano aparezca o desaparezca dependiendo del estado actual del ítem? Nota:______________________________________________________ __________________________________________________________ 2. ¿Al colocar el mouse encima de cualquiera de las casillas de verificación padre que están en el dado izquierdo de la pantalla y presionar dos veces el click derecho del mouse, este cambia su estado de selección además de provocar que todos los ítems hijos también cambien su estado acorde al estado de la casilla de verificación padre y también causando que todos los objetos a los que representa estos ítems del cuerpo humano aparezca o desaparezca dependiendo del estado actual de la casillas de verificación? Nota:______________________________________________________ __________________________________________________________ 141 3. ¿Al colocar el mouse encima de cualquiera de las casillas de verificación principal identificada con el nombre Árbol Objetos Cuerpo humano que están en el dado izquierdo de la pantalla y presionar dos veces el click izquierdo del mouse, este cambia su Índice de Figuras excepción también cambien su estado acorde al estado de la casilla de verificación y también causando que todas las partes del cuerpo humano aparezcan o desaparezcan dependiendo del estado actual de la casillas de verificación? Nota: _____________________________________________________ __________________________________________________________ 142 Test Cuadro de Dialogo Información 1. ¿Al presionar el botón identificado con el nombre “Has click aquí” que aparece en la parte superior de la pàgina provoca que aparezca un cuadro de dialogo en pantalla? Nota: _____________________________________________________ __________________________________________________________ 2. ¿Al estar el cuadro del dialogo presente en pantalla y colocar el mouse encima de una de las partes modelo tridimensional provoca que en el cuadro de dialogo despliegue el nombre y detalle de la parte del cuerpo humano que se esta colocando el mouse? Nota: _____________________________________________________ __________________________________________________________ 143 ANEXO IV A continuación se presentan en forma de documentación 10 cuestionarios que fueron evaluados por 10 estudiantes de medicina de la Universidad Tecnológica Equinoccial con la finalidad que analizar los resultados del aplicativo desarrollado como tema de tesis. 144 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 3. 6 7 8 9 10 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 145 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 3. 6 7 8 9 10 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 146 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 3. 6 7 8 9 10 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 147 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 3. 6 7 8 9 10 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 148 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 3. 6 7 8 9 10 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 149 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 3. 6 7 8 9 10 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 150 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 3. 6 7 8 9 10 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 151 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 3. 6 7 8 9 10 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 152 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 3. 6 7 8 9 10 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 153 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 3. 6 7 8 9 10 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 154 UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA CARRERA DE INGENIERÍA INFORMATICA Y CIENCIAS DE LA COMPUTACIÓN Objetivo: evaluar la funcionalidad del modelo del cuerpo humano realizado en java 3d Instrucciones: Lea detenidamente la pregunta y conteste según corresponda 1. ¿En la escala del 1 al 10, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación califique el modelo 3d de la anatomía del cuerpo humano que se observa en el aplicativo, esta diseñado de acuerdo a la anatomía real del cuerpo humano? 1 2 3 4 5 2. ¿En la escala del 1 al 10, califique que tan fácil fue entender el funcionamiento del uso el aplicativo, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 3. 6 7 8 9 10 4 5 6 7 8 9 10 ¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con las funcionalidades como acercar, alejar, girar y desplazar el modelo 3d del cuerpo humano, siendo el 1 el numero mas bajo de calificación y 10 el numero máximo de calificación? 1 2 3 4 5 6 7 8 9 10 4 .¿En la escala del 1 al 10, califique si el aplicativo cumple correctamente con la funcionalidad de presentar información correcta (Nombre y Detalle) de cada uno de las partes de cuerpo humano en donde el mouse señala, siendo el 1 el número mas bajo de calificación y 10 el número máximo de calificación? 1 2 3 4 5 6 7 8 9 10 155 ABREVIATURAS JDK: Java development Kit. API: Application Program Interface. JRE: Java Runtime Environment. SDK: Software Development Kit. VRML: Virtual Reality Model Language. NURBS: (acrónimo inglés de non-uniform rational B-spline) es un modelo matemático muy utilizado en la computación gráfica para generar y representar curvas y superficies. 156 GLOSARIO API (Interfaz de Programación de Aplicaciones): es un protocolo de comunicación entre componentes de software y hardware; éste representa un método para conseguir abstracción en la interoperabilidad de la programación. Aplicación: Programa de software diseñado para realizar una tarea o conjunto de tareas especificas solicitados por el usuario. Bytecode Java: es el tipo de instrucciones que la máquina virtual Java ejecuta, su bytecode. Usualmente es el resultado de utilizar un compilador del lenguaje de programación Java (como javac), pero puede ser generado desde otros lenguajes. Compilador: Un compilador es un programa que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es código máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación Lenguaje de Programación. GUI: La interfaz gráfica de usuario, conocida también como GUI (del inglés graphical user interface) es un programa informático que actúa de interfaz de usuario, utilizando un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz. Hardware: El hardware consiste de dispositivos físicos que forman parte de un sistema de RV y son los que estimulan al usuario en distintas maneras. Estos estímulos son los que le permiten alimentar los sentidos del usuario, y así, inducirlo a un mundo creado para él. Loader: Esta interfaz define una serie de métodos que permiten determinar la localización del fichero desde el cual cargar la escena, así como un conjunto de flags que determina que elementos del fichero se desean cargar. 157 Plataforma: es una combinación de hardware y software usada para ejecutar aplicaciones; en su forma más simple consiste únicamente de un sistema operativo, una arquitectura, o una combinación de ambos. La plataforma más conocida es probablemente Microsoft Windows en una arquitectura x86; otras plataformas conocidas son GNU/Linux y Mac OS X (que ya de por sí son multiplataforma). Periféricos de E/S: Los periféricos de entrada y salida son aquellos dispositivos que permiten la salida o entrada de datos, por ejemplo, el teclado permite la entrada de datos a la computadora, a su vez el monitor permite la salida de datos de ésta. Los periféricos de E/S son los que permiten al usuario la interacción con la computadora. Realidad Virtual: es un espacio en tres dimensiones desarrollado y simulado mediante ordenador, donde los objetos son interactivos. En estos mundos virtuales el usuario podrá adentrarse, eligiendo entre varias perspectivas, e interactuar con los objetos que allí se encuentran. Renderizacion: es un término usado en jerga informática para referirse al proceso de generar una imagen desde un modelo. Este término técnico es utilizado por los animadores o productores audiovisuales y en programas de diseño en 3D. Simulación: es el proceso de diseñar un modelo de un sistema real y llevar a término experiencias con él, con la finalidad de comprender el comportamiento del sistema o evaluar nuevas estrategias. Software: Conjunto de que se pueden ejecutar en una computadora, así como toda la información, utilerías y recursos necesarios para su diseño, instalación, operación, mantenimiento y refinamiento programas. View: El objeto View especifica la información necesaria para renderizar el grafo de escena. VRML (Virtual Reality Modeling Language) Lenguaje para Modelado de Realidad Virtual: formato de archivo normalizado que tiene como objetivo la representación de escenas u objetos interactivos tridimensionales; diseñado particularmente para su empleo en la web. Se usa por medio de comandos en inglés, los cuales agregan y determinan las características. 158 BIBLIOGRAFÍA Andrew Davidson, Java 6 3D Game Development, 2007. Boehm, Spiral Model of Software Develpment, IEEE Computer, 1988. Bouvier, J. Dennis. Getting Started with the Java 3D API, 1999. Daniel Selman. Java 3d programming, 2002. Grigore C. Burdea, Philippe Coiffet, Virtual Reality Technology, Segunda Edition, John Wiley & Sons 2003. Guyton CA y Hall JH, Tratado de fisiología médica, 2004. Huang Z, 3D agent-based virtual communities, ACM 2002. Jacaboson, Booch, G., Rumbaugh J., El Proceso Unificado de Desarrollo de Software, Addison Wesley 2000. Joan J. Pratdepadua, Programación en 3D con Java 3D, Pearson Educación, 2002. Jim Highsmith, Agile Software Development Ecosystems, AddisonWesley Professional, 2002. Ken Arnold, James Gosling, David Holmes, The Java Programming Language, Fourth Edition, Addison-Wesley Professional, 2005. KISH, Leslie. Muestreo de encuestas, 3ª reimp, México, Trillas, 1982. Pressman, Ingeniería del Software: Un enfoque práctico, McGraw Hill 1997. Schwaber, K., Beedle, M., Agile Software Development, Prentice Hall, 2002. Selman, D (2002) Java 3D programing Independent Publishers Group. Sun Microsystems. Java 3D 1.3 API Specification Guide. http://java.sun.com/products/javamedia/3D/forDevelopers/J3D13API/j3dguide/index. html. June 2002. Walsh & Gehringer, Prentice Hall, Aug 2001. Zi-Mian Wang y Scott Going, Human Body Composition, Segunda Edition, 1992. Wilson, Leslie B, Robert George Clark. Comparative programming languages, Addison-Wesley 2003. 159