Professional Documents
Culture Documents
Febrero 2010
NDICE
Agradecimientos...................................................................................... Resumen................................................................................................. 1.- Introduccin...................................................................................... 1.1.- Origen del trabajo..................................................................
5 6
8
8
1.2.- Antecedentes generales.......................................................... 9 1.2.1.- Informacin anatmica: Cervicalgias............................... 9 1.2.2.- Sistemas de valoracin funcional.................................... 11 1.3.- Antecedentes tcnicos............................................................ 15 1.3.1.- Modeladores grficos 3D............................................... 16 1.3.1.1.- Blender.......................................................... 16 1.3.1.2.- Maya............................................................. 17 1.3.1.3.- 3ds Max......................................................... 18 1.3.2.- Motores grficos 3D...................................................... 19 1.3.2.1.- Ogre.............................................................. 19 1.3.2.2.- 3D Game Studio.............................................. 22 1.3.2.3.- Crystal Space.................................................. 23 1.4.- Objetivos del trabajo............................................................... 1.5.- Plan de trabajo.......................................................................
25 26
28
2.1.- Requerimientos....................................................................... 31 2.1.1.- Gestin de ficheros de prueba........................................ 32 2.1.1.1.- Abrir fichero de prueba..................................... 33 2.1.1.2.- Borrar fichero de prueba................................... 34 2.1.2.- Visualizacin de la animacin......................................... 35 2.1.2.1.- Cargar prueba................................................. 36 2.1.3.- Modificacin del momento de animacin.......................... 37 2.1.3.1.- Reproducir prueba........................................... 38 2.1.3.2.- Rebobinar prueba............................................ 39 2.1.3.3.- Pausar prueba................................................. 40 2.1.3.4.- Cambiar posicin de reproduccin de prueba........ 41 2.1.3.5.- Limitar rango de reproduccin........................... 42 2.1.4.- Modificacin de cmaras................................................ 43 2.1.4.1.- Cambiar cmara.............................................. 44 2.1.4.2.- Cambiar posicin............................................. 45 2.1.4.3.- Cambiar orientacin......................................... 46
2.2.- Diseo de la aplicacin............................................................. 47 2.2.1.- Arquitectura del proyecto.............................................. 47 2.2.1.1.- Animacin Ogre............................................... 48 2.2.1.2.- Interfaz.......................................................... 48 2.2.1.3.- Recursos externos........................................... 48 2.2.2.- Arquitectura de clases................................................... 49 2.2.2.1.- Clases Ogre.................................................... 49 2.2.2.2.- Clases Interfaz................................................ 51 2.2.2.3.- Clases externas............................................... 51 2.2.3.- Ficheros de prueba de pacientes..................................... 52 2.2.3.1.- Tipo y nomenclatura........................................ 52 2.2.3.2.- Estructura del contenido................................... 55 2.2.4.- Interfaz de usuario....................................................... 56 2.2.4.1.- Diseo y elementos.......................................... 57 2.3.- Desarrollo de la aplicacin......................................................... 60 2.3.1.- Blender....................................................................... 60 2.3.1.1.- Modelado de la malla........................................ 62 2.3.1.2.- Esqueleto....................................................... 64 2.3.1.3.- Mapeado de texturas........................................ 66 2.3.1.4.- Exportacin del modelo.................................... 67 2.3.2.- Ogre.......................................................................... 72 2.3.2.1.- Cargar el modelo............................................. 72 2.3.2.2.- Aadir materiales al modelo texturizado.............. 76 2.3.2.3.- Animacin del modelo....................................... 78 2.3.2.4.- Interaccin con el usuario................................. 81 2.3.3.- Visual Studio 2005: MFC............................................... 83 2.3.3.1.- Desarrollo bsico de la interfaz.......................... 83 2.3.3.2.- Gestin de ficheros de pacientes........................ 87 2.3.3.3.- Cargar animacin de Ogre................................. 88 2.3.3.4.- Capturar eventos de la interfaz.......................... 91 2.3.3.5.- Measurement Studio........................................ 94
100
101
4.- Conclusiones..................................................................................
109
111
BIBLIOGRAFA.....................................................................................
Listado de ilustraciones..............................................................................114 ANEXO.................................................................................................. 116 a) Manual del instalador................................................................. 116 b) Manual de usuario..................................................................... 123
AGRADECIMIENTOS
Quiero dar mi ms sincero agradecimiento al personal del Instituto de Biomecnica de Valencia (IBV), centro que me ha permitido desarrollar este proyecto final de carrera en sus instalaciones y me ha formado y guiado para llevarlo a cabo con xito. Tambin debo agradecer a mis tutores de proyecto, tanto de la Facultad de Informtica (ETSINF) de la Universidad Politcnica de Valencia como del IBV, sus consejos y directrices que han permitido trazar una lnea de proyecto marcada por la fluidez en la elaboracin de dicha tarea. Gracias a todos los que han hecho esto posible.
RESUMEN
El proyecto definido en la memoria se engloba dentro del mbito del diagnstico a travs de una valoracin funcional y, de forma ms concreta, en la valoracin de cervicalgias. Se trata de una herramienta de apoyo que otorga, a la persona encargada de realizar un diagnstico, de un punto de vista alejado de la rigidez de representacin de los datos, pero totalmente fiel a los mismos. Esto se basa en una gran premisa: una imagen vale ms que mil palabras. Extrapolar esta afirmacin al proyecto actual es inmediato: una animacin en tres dimensiones en muchas ocasiones es mucho ms til de cara al usuario de un programa que un gran compendio de datos numricos. La forma y velocidad en la que la informacin es recibida es totalmente distinta. Mientras que para sacar conclusiones de unos datos es preciso realizar un procesamiento y una interpretacin de los mismos, una animacin permite obtener una conclusin de forma prcticamente instantnea. Sin ser un experto cualificado en la materia a travs de una animacin se puede comprobar si el movimiento realizado por un paciente es relativamente normal o no, hecho que en algunas ocasiones no es posible al contemplar los datos en primera instancia. Para que la animacin tenga una fsica realista, se emplean ngulos calculados en funcin del tiempo, a travs de unos marcadores que se le colocan al paciente en puntos estratgicos y que permiten describir de forma matemtica los movimientos cervicales. Por tanto mediante la interpolacin de estos ngulos, se obtiene un movimiento fluido sobre un modelo en tres dimensiones, que dispone de la estructura necesaria para describir de forma precisa los movimientos del raquis cervical. Otro aspecto a tener en cuenta es la posibilidad de interaccin con la animacin. A diferencia de un vdeo en el que slo es posible cambiar el momento de reproduccin, la aplicacin aade una variable ms: la posibilidad de cambiar la orientacin y posicin espacial de la cmara que permite la visualizacin de la animacin. De esta forma es posible comprobar desde la mejor posicin posible un determinado gesto o movimiento realizado por el paciente sin necesidad de que repita la prueba o se coloque una cmara en la posicin de visualizacin deseada. En consecuencia y tras establecer las bases que describen el proyecto, los contenidos de la memoria estn estructurados siguiendo un orden cronolgico y causal argumentando los pasos para la realizacin del mismo. En primer lugar se describe el mbito en el que se encapsula el tema del proyecto elegido (cervicalgias y sistemas de valoracin funcional) y se analizan las herramientas que permiten desarrollar dicha actividad de la mejor forma posible. A continuacin, una vez elegidas las herramientas para realizar el proyecto (Ogre como motor grfico y Blender como modelador 3D), se plantea una serie requerimientos que se deben cumplir que conforman la funcionalidad bsica de que dispondr la aplicacin a crear. El siguiente paso es el anlisis y la justificacin de diseo, formato, nomenclatura y otros aspectos vinculados con el aspecto y la estructura de la aplicacin. En este punto se define la arquitectura general del proyecto y cmo se organiza la informacin, con el fin ltimo de mejorar la usabilidad y hacerla atractiva para el usuario.
Tras establecer un diseo, se analiza detenidamente y de forma lineal todas las estrategias y pasos seguidos para llevar a cabo la aplicacin. Se parte de aspectos y opciones relativas al modelado grfico con Blender, la utilizacin del modelo en Ogre y, por ltimo, su vinculacin con una interfaz funcional. Los ltimos pasos de la memoria defienden, muestran y analizan los resultados que se pueden obtener con la utilizacin de esta aplicacin. Se muestra la validez de dicha aplicacin, basndose en ejemplos para detectar posibles anomalas en pacientes con algn tipo de afeccin cervical. Posteriormente tambin se incluyen posibles ampliaciones consideradas y conclusiones a las que se ha llegado tras la realizacin de la misma. Por ltimo se incluye el conjunto de documentos y enlaces que se han empleado para llevar a cabo el proyecto, as como un anexo con un manual de instalacin de la aplicacin y un manual de usuario explicando los aspectos bsicos para utilizar eficientemente la aplicacin.
INTRODUCCIN
1.- Introduccin
1.1.- Origen del trabajo
Las cervicalgias, dolor en la regin cervical, son una afeccin muy frecuente en la poblacin actual. Alrededor del 50% de la poblacin adulta sufre en algn momento de su vida una cervicalgia. Son descritas en los cdigos CIE-9 en el epgrafe 723 y segn el manual elaborado por la Seguridad Social en el ao 2008, sobre tiempos estndar de baja laboral, el tiempo medio que un trabajador permanece de baja en Espaa se sita en los 43 das, y en relacin a las cervicalgias se sita en torno a 20 das, lo que repercute sobre el coste econmico que deriva de dicha situacin tanto a nivel personal como empresarial. Las causas para su aparicin tienen diferentes orgenes, pero las ms frecuentes derivan de mantener una postura incorrecta forzada y mantenida durante mucho tiempo que provoca una alteracin funcional que se manifiesta mediante dolor. Sin embargo hay un gran problema para su diagnstico: no siempre existe una correlacin entre los sntomas clnicos y las manifestaciones radiolgicas. Esto implica que una persona con una estructura sea impecable puede presentar dolores y limitacin de movilidad cervical. El origen de este problema radica en deficiencias musculares (sobreesfuerzo, estrs, deficiente higiene postural). Del mismo modo se pueden encontrar alteraciones patolgicas en pacientes que no han manifestado sntomas de cervicalgia, generalmente detectadas al realizar pruebas radiolgicas a pacientes asintomticos. Por este motivo en muchas ocasiones hay grandes dificultades para determinar un diagnstico correcto y sobre todo en el mbito de la patologa laboral, a la hora de valorar una incapacidad laboral ya sea transitoria o permanente. Con este propsito principal se ha creado NedCervical/IBV. Se trata de una aplicacin que permite la valoracin funcional del raquis cervical basndose en el estudio de la cinemtica de los movimientos que realiza el sujeto durante unas pruebas. De esta forma el personal encargado de realizar la valoracin obtiene ms informacin sobre el estado del paciente pudiendo determinar de una forma ms eficiente el grado y la etiologa de la afeccin. Adems es posible determinar el grado de colaboracin del paciente durante el estudio, por lo que se dispone una herramienta muy til en la medicina del trabajo para apoyar la decisin de otorgar una incapacidad laboral. Las bajas laborales suponen una gran prdida econmica para las empresas espaolas. Se calcula que en Espaa se producen ms de tres mil bajas laborales diarias, lo que ha provocado que se endurezcan las penas contra las bajas debidas a presentar una sintomatologa simulada o fingida. Adems el trastorno musculoesqueltico sustituy hace unos aos al accidente clsico (cadas, cortes, etc.) como primera causa de baja laboral. Por ello es necesario determinar en la medida de lo posible la veracidad o no de estas dolencias. NedCervical/IBV es, por tanto, una herramienta muy til para los profesionales de la salud laboral y en especial para las mutuas aseguradoras, que ayuda a obtener un diagnstico real de pacientes con posibles cervicalgias.
INTRODUCCIN
Antecedentes generales
En conjunto se encarga de transmitir y amortiguar las cargas, permitir una relacin ptima de grado de movilidad y rigidez, y proteger las estructuras neuronales contenidas en el canal.
Un anlisis ms profundo de la morfologa de las siete vrtebras cervicales permite diferenciar entre las vrtebras C1, C2 y un grupo con caractersticas similares formado por las vrtebras de la C3 a la C7. La primera vrtebra cervical (C1) o atlas tiene forma de anillo y se articula en su parte superior con el hueso occipital. La segunda vrtebra cervical (C2) o axis presenta como caracterstica principal una prolongacin sea vertical que nace del cuerpo del axis y penetra dentro del atlas (apfisis odontoides). Esta particular estructura permite, de manera efectiva, la rotacin del crneo. El resto de vrtebras cervicales (C3-C7) poseen todas ellas de un foramen transverso del que carecen las vrtebras del segmento dorsal y lumbar.
INTRODUCCIN
Antecedentes generales
Tras estas bsicas nociones anatmicas, se puede definir el concepto de cervicalgia: afeccin del segmento cervical con sntomas dolorosos. El dolor cervical es una causa frecuente de consulta mdica tanto en atencin primaria como en asistencia especializada. Sin embargo, la multiplicidad etiolgica responsable de los cuadros dolorosos cervicales dificulta en gran medida obtener un diagnstico correcto de forma eficiente. Se puede clasificar su etiologa en dos ramas atendiendo al estudio del cuadro lgico: dolor mecnico y dolor inflamatorio. El dolor mecnico se caracteriza por empeorar con la movilizacin, reproducirse de forma intermitente y mejorar con el reposo funcional. Las causas que pueden condicionar su aparicin son diversas: colocarse en una mala postura de forma mantenida, dormir sin un apoyo adecuado de la cabeza, cargar peso con un solo brazo Todas estas causas generan, en la mayora de los casos, una contractura muscular que provoca un dolor cervical. Dentro de este mbito de la cervicalgia mecnica tambin se encuentran los traumatismos cervicales. Cabe distinguir entre dos tipos de traumatismos: traumatismos directos y traumatismos indirectos. Los traumatismos directos se producen debido a un golpe producido sobre la regin cervical; en cambio los traumatismos indirectos se deben a una sacudida no localizada en la regin cervical que genera un movimiento forzado de la misma. En consecuencia, las lesiones producidas tienen su origen en un movimiento forzado por encima del sector fisiolgico de movilidad. Este rango de movilidad est relacionado con la edad del sujeto y con el tipo de movimiento realizado.
Edad Hasta 30 aos De 31 a 50 aos Ms de 50 aos Flexoextensin (flexin + extensin) 90 (20+70) 70 60 Rotacin (derecha + izquierda) 90 (45+45) 90 90 Lateralizacin (derecha + izquierda) 90 (45+45) 90 60
Por tanto, atendiendo al tipo de movimiento realizado se pueden producir lesiones por: - Extensin - Flexin - Compresin - Rotacin - Cizallamiento En contraposicin, la cervicalgia inflamatoria se presenta en muchas menos ocasiones y requiere un diagnstico ms amplio y complejo. El dolor es generalmente continuo y no cede con el reposo funcional. Las causas de este tipo de cervicalgia son por lo general ms graves ya que se deben a una sintomatologa inflamatoria originada por un proceso reumtico, tumoral o infeccioso. Sin embargo establecer un diagnstico de cervicalgia en una de estas dos ramas tiene una dificultad aadida: el dolor cervical puede tener su origen en otras zonas y, del mismo modo, una cervicalgia puede producir dolor en el brazo, regin escapular y regin pectoral.
10
Antecedentes generales
Los fundamentos conceptuales de la evaluacin funcional residen en los modelos de discapacidad propuestos por Nagi y Wood. El ms conocido es el de la OMS (1980) que distingue entre: - Deficiencia, toda prdida o anormalidad de una estructura o funcin psicolgica, fisiolgica o anatmica. (Nivel de rgano) - Discapacidad, toda restriccin o ausencia de capacidad para realizar una actividad en la forma o dentro del margen considerado normal para el ser humano. Representa, en definitiva, al conjunto de consecuencias motrices o psicolgicas de una persona afectadas por una deficiencia. (Nivel de mbito global de la persona) - Minusvala, la situacin desventajosa para un individuo determinado, consecuencia de una discapacidad, que limita o impide el desempeo de un rol que es normal en funcin de la edad, el sexo y los factores sociales y culturales. (Nivel social) La evaluacin funcional consiste en la medicin de las caractersticas dinmicas del individuo, incluyendo actividades, habilidades, actuaciones prcticas, condiciones ambientales y necesidades de dicho individuo. El estudio y la interpretacin de este conjunto de mediciones, recibe el nombre de valoracin funcional y se integra en el bloque de valoracin de discapacidades. Este compendio de sistemas y aplicaciones intentan objetivar la valoracin de un sujeto concreto realizando una serie de pruebas funcionales o movimientos establecidos. Por tanto su objetivo es servir de apoyo a un experto cualificado para tomar decisiones para establecer un diagnstico determinado. Su funcionamiento emplea como base mtodos estadsticos y conocimientos mdicos para realizar comparaciones entre patrones fisiolgicos catalogados como normales y los obtenidos en el sujeto de estudio. Esta comparacin genera una serie de resultados e informes cuyo destinatario final es el encargado de valorar el diagnstico del sujeto. Existen sistemas de valoracin funcional aplicados a bastantes tipos de dolencias motrices. Lumbalgias, movimientos articulares de hombro, rodilla y mueca son algunos entre muchos otros ejemplos para los que se puede encontrar aplicaciones que presentan informes obtenidos a partir de una valoracin funcional de los sujetos. A continuacin se realiza un anlisis de un sistema de valoracin funcional aplicado a la regin cervical.
NedCervical es un sistema diseado por el Instituto de Biomecnica de Valencia (IBV) que permite la valoracin del raquis cervical basado en la cinemtica de sus movimientos durante la realizacin de pruebas funcionales. Est avalado por el conocimiento de las necesidades de los especialistas clnicos de valoracin del dao corporal y tiene el fin principal de proporcionar una prueba complementaria, objetiva, fiable y de fcil interpretacin, que permita realizar una valoracin ms precisa y justa del dao de la columna cervical. Adems tambin permite observar la repercusin funcional en el paciente, as como realizar un seguimiento cercano de su evolucin. Integra la tecnologa biomecnica ms avanzada de anlisis de movimientos humanos para la valoracin funcional del raquis cervical y, de forma complementaria, utiliza una base de datos de normalidad a partir de la cual se
11
INTRODUCCIN
Antecedentes generales
permite la comparacin de los registros de los pacientes medidos para caracterizar su patrn de movimiento. Para la obtencin de los datos referentes al movimiento de los pacientes se utiliza el sistema de vdeo digital Kinescan/IBV. Este sistema se basa en el registro de muestras de al menos dos cmaras de unos marcadores reflectantes. Aumentar el nmero de cmaras, mejora la precisin de la obtencin de coordenadas 3D y permite evitar carencias ante marcadores que en algn momento se encuentren ocultos a la visin de dichas cmaras. Los marcadores empleados son simples esferas de corcho cubiertas de un material reflectante. Al tratarse de superficies esfricas, hay que tener en cuenta los ngulos de reflexin de la luz: ante una nica luz focal, la zona del marcador que refleja depende de la posicin del mismo. Para evitar este problema, las cmaras incorporan en la parte superior luces infrarrojas orientadas con la misma distribucin de ejes de la cmara. As la reflexin siempre se sita en el centro del marcador desde el punto de vista de cada cmara. Para obtener resultados ptimos es conveniente controlar las condiciones de luz que afectarn a la sala.
Otra caracterstica a tener en cuenta en el diseo de los marcadores es la posicin de los mismos en el paciente. Si se sitan ceidos a la cabeza, los movimientos mnimos realizados requieren de cmaras de alta sensibilidad para detectarlos. Sin embargo si se les aade un factor como la distancia, ante el mismo movimiento de la cabeza la posicin de los marcadores vara en mayor medida, siendo ms sencilla su deteccin.
12
INTRODUCCIN
Antecedentes generales
El sistema registra y analiza dos tipos de gestos: - Los lmites funcionales del movimiento en cada una de las direcciones del espacio (flexo-extensin, flexin lateral y rotacin). - Determinados gestos cuyo objetivo es simular movimientos de la vida diaria que comprometen a la columna cervical (en este caso, dichos gestos consisten en mirar hacia arriba hasta observar una figura sobre una lmpara que se ilumina para, posteriormente, cumplimentar un sencillo cuestionario). Finalmente incorpora un mtodo de clasificacin estadstico, basado en regresin logstica, que obtiene resultados mediante la comparacin de la cinemtica de movimientos del paciente con la base de normalidad. De esta forma, es capaz de diferenciar con alta sensibilidad y especificidad entre sujetos normales y patolgicos, y entre sujetos colaboradores en la valoracin y no colaboradores, con una elevada probabilidad de acierto. Todo el estudio realizado se recoge en un informe personalizado especficamente diseado.
13
INTRODUCCIN
Antecedentes generales
La utilizacin del sistema de vdeo digital Kinescan/IBV como tecnologa base para el anlisis de movimientos de la columna cervical, proporciona gran versatilidad frente a cualquier tipo de estudios de anlisis de movimientos que puedan realizarse en un futuro inmediato. As por ejemplo, estudios de nuevos protocolos de valoracin de rodilla o de hombro, en los que el IBV trabaja actualmente, podrn ser llevados a cabo utilizando la misma instrumentacin base.
14
INTRODUCCIN
Antecedentes tcnicos
A continuacin se va a realizar un estudio de las caractersticas principales de cada una de las herramientas de modelado y motores grficos mencionados.
15
Antecedentes tcnicos
Blender es un programa informtico multiplataforma de software libre, dedicado especialmente al modelado, animacin y creacin de grficos tridimensionales. Las caractersticas principales de este programa son: Multiplataforma, libre, gratuito y con un tamao de origen realmente pequeo comparado con otros paquetes de 3D, dependiendo del sistema operativo en el que se ejecuta. Capacidad para una gran variedad de primitivas geomtricas, incluyendo curvas, mallas poligonales, vacos, NURBS y metaballs. Junto a las herramientas de animacin se incluyen cinemtica inversa, deformaciones por armadura o cuadrcula, vrtices de carga y partculas estticas y dinmicas. Edicin de audio y sincronizacin de video. Caractersticas interactivas para juegos como deteccin de colisiones, recreaciones dinmicas y lgica. Posibilidades de renderizado interno verstil e integracin externa con potentes trazadores de rayos o "raytracer" libres como kerkythea, YafRay o Yafrid. Lenguaje Python para automatizar o controlar varias tareas. Blender acepta formatos grficos como TGA, JPG, Iris, SGI o TIFF. Tambin puede leer ficheros Inventor. Motor de juegos 3D integrado, con un sistema de ladrillos lgicos. Para ms control se usa programacin en lenguaje Python. Simulaciones dinmicas para softbodies, partculas y fluidos. Modificadores apilables, para la aplicacin de transformacin no destructiva sobre mallas. Sistema de partculas estticas para simular cabellos y pelajes, al que se han agregado nuevas propiedades entre las opciones de shaders para lograr texturas realistas.
Dispone de una interfaz grfica poco intuitiva y no basada en el clsico sistema de ventanas, por lo que ha sido bastante criticada. Sin embargo permite la personalizacin absoluta facilitando el trabajo y la disposicin de los mens para el usuario. Blender posee una herramienta muy til para aumentar la personalizacin: incorpora un intrprete de Python totalmente funcional. Esto le permite a cualquier usuario aadir funcionalidades a Blender escribiendo un simple script de Python.
16
INTRODUCCIN
1.3.1.2.- Maya
Antecedentes tcnicos
Maya es un programa que proporciona potente solucin integrada para el modelado, la animacin, la creacin de efectos visuales y la renderizacin en 3D distribuido por la empresa Autodesk. Est basado en una arquitectura abierta que permite programar o generar archivos de comandos para todo su trabajo con una API (interfaz de programacin de aplicaciones) completa y bien documentada, mediante uno de los dos lenguajes de comandos incorporados: Maya Embedded Language (MEL) o Python. Este carcter abierto, combinado con un conjunto de herramientas 3, le ayuda a hacer realidad una visin creativa para cine, televisin, desarrollo de juegos y proyectos de diseo. Las caractersticas principales de la versin 2009 de Maya Autodesk son: - Programa multiplataforma implementado por Autodesk con una experiencia de 10 aos respecto de la salida al mercado de la primera versin. - Se caracteriza por su potencia y las posibilidades de expansin y personalizacin de su interfaz y herramientas. Est diseado para permitir incorporar software de terceros, el cual puede cambiar completamente la apariencia de Maya. - Se comercializa en dos variantes: "Maya Complete" (una versin bsica que incluye los mdulos de modelado, animacin, render, dinmicas/partculas) y "Maya Unlimited" (la versin ms avanzada, que dispone de los mdulos de la versin "Maya Complete", ms los de Fluids, Hair, Cloth, el nuevo NCloth etc.). - Maya trabaja con cualquier tipo de superficie NURBS, Polygons, Subdivision Surfaces e incluye la posibilidad de convertir entre todos los tipos de geometra. - Respecto a anteriores versiones, las novedades incorporadas por la versin estudiada son: o Un sistema de seleccin flexible y un resaltado de preseleccin que implica un uso ms eficiente y sencillo del mismo. o Mejor flujo de modelado: ofrece mejoras de modelado intuitivas y productivas, como un modelado simtrico con uniones flexibles, un modo de ajuste para realizar modificaciones rpidas y una nueva fusin de vrtices que permite combinar partes de una malla. o Maya Assets: es una herramienta que permite organizar, compartir, referenciar y presentar eficazmente los datos complejos. o Animacin por capas: un nuevo y potente paradigma de animacin por capas, basado en tecnologa de Autodesk MotionBuilder, aumenta la flexibilidad al crear y editar animaciones de una forma no destructiva. o Maya nParticles: basado en el marco de simulacin unificado Maya Nucleus, este conjunto de herramientas ofrece un flujo de trabajo intuitivo y eficiente para simular gran variedad de efectos complejos, incluidos lquidos, nubes, humo, aerosol y polvo. o Maya Muscle: permite crear movimientos realistas de msculos y piel. o Mejoras en la disposicin UV: nuevas opciones de despliegue y disposicin de UV y optimizacin de su funcionamiento. o Render Proxy: permite sustituir elementos de la escena por una simple malla de baja resolucin y cargar slo los datos reconvertidos cuando hacen falta para renderizar. o Mejoras en Render Pass: permite un control exacto de la salida de renderizacin.
17
INTRODUCCIN
1.3.1.3.- 3ds Max
Antecedentes tcnicos
3ds Max, anteriormente conocido como 3D Studio Max, es un programa de creacin de grficos y animacin 3D desarrollado por Autodesk. Aunque creado por la misma compaa que Maya, tienen orgenes distintos y se presuma que se iban a fusionar en un hbrido; sin embargo se ha mantenido como un producto independiente. Es uno de programas de animacin 3D ms utilizados. Aunque generalmente se encuentra vinculado a desarrolladores de videojuegos, se emplea tambin en el desarrollo de proyectos de animacin como pelculas o anuncios de televisin, efectos especiales y en arquitectura. Las caractersticas principales de la versin 2009 de este programa son: - Slida capacidad de edicin, una omnipresente arquitectura de plugins y una larga tradicin en plataformas Microsoft Windows. - La primera versin data de 1990, lo que contribuye a un grado de perfeccionamiento muy alto por la gran experiencia acumulada. - Adems de las caractersticas bsicas de cualquier herramienta de modelado, da soporte a sombreadores avanzados (como la oclusin del ambiente y la dispersin de superficies), simulacin dinmica, sistemas de partculas, creacin y renderizado de mapas - Dispone de una interfaz intuitiva y totalmente personalizable y un lenguaje de script propio. - Est abierto para incorporar plugins de renderizacin de terceros, tales como V-Ray, Brazil r / s, Maxwell Render y finalRender. - Las mejoras respecto a versin anteriores son: o Renderizacin con Reveal: este sistema proporciona el control exacto necesario para refinar rpidamente las renderizaciones. Permite renderizar una escena entera excepto un determinado objeto, renderizar un nico objeto o incluso una regin especfica del bfer de fotograma. o Mejoras de Biped: esta tcnica permite animar de forma ms sencilla personajes cuadrpedos. o Mejor compatibilidad con OBJ y FBX: la mayor fidelidad al convertir el formato OBJ, junto con ms opciones de exportacin, facilitan el intercambio de datos entre 3ds Max y Mudbox, adems de otras aplicaciones de esculpido digital. Tambin ofrece mejor gestin de memoria de FBX y nuevas opciones de importacin que garantizan la interoperabilidad entre 3ds Max y otros productos de Autodesk, como Maya y MotionBuilder. o Edicin rpida de texturas UV: incorpora avanzadas herramientas de mapeado fciles de usar. La nueva funcin de mapeado de spline permite mapear objetos tubulares y tipo spline, como una carretera sobre un terreno. o Compatibilidad con .NET en el SDK que permite utilizar las API de interfaz de usuario de alto nivel de Microsoft para ampliar el software. o ProMaterials: 3ds Max cuenta con una nueva biblioteca de materiales basados en la fsica y fciles de utilizar. o Mejoras de iluminacin fotomtrica.
18
Antecedentes tcnicos
Ogre (Object-oriented Graphics Rendering Engine) es una librera grfica de cdigo abierto multiplataforma con un flexible motor grfico. Est diseada con el objetivo principal de permitir a los programadores producir aplicaciones utilizando grficos en 3D acelerados por hardware. Sin embargo, para aplicar otras caractersticas, como sonido, networking, AI, colisin, leyes fsicas se necesita vincular Ogre con otras libreras. Es, por tanto, un motor grfico base que provee un API muy amigable, apto para integraciones, permitiendo que el programador escoja otras libreras si as lo desea. Est construido de forma que no se compromete con una API en particular, puesto que el motor soporta tanto el uso de DX9 como de OpenGL. Teniendo en cuenta estos aspectos, no existen lmites intrnsecos del motor, pudiendo resultar algo confuso en un primer momento. El equipo programador base encargado del desarrollo de este motor es un grupo pequeo, compuesto por ingenieros de software experimentados. Adems la creciente comunidad de usuarios de Ogre, unida a la creacin de parches por parte de sta, permite crear una estructura fuerte entorno a este motor. Cada parche es sometido a una estricta prueba para confirmar su calidad y coherencia con el resto de los componentes del motor. Otro aspecto a comentar es que Ogre no asume qu tipo de programa (simulacin, juego, demo) se desea crear de antemano. Utiliza una flexible jerarqua de clases, la cual permite disear plugins para especializar la organizacin de escenas con el fin de crear cualquier tipo de programa que se desee. En definitiva, Ogre posee las siguientes caractersticas principales: - Diseo orientado a objetos. Interfaz simple y fcil de usar, diseada para que requiera poco esfuerzo el renderizado de escenas en tres dimensiones. - Arquitectura basada en plugins muy flexible que permite extender las funcionalidades del motor. - Sistema de Carga/Respaldo. Soporte de zip/pk3 para archivar. - Diseo limpio y bien documentado de las clases del motor. - Independiente de la API grfica, se puede utilizar OpenGL o DirectX. Adems tambin ofrece soporte en los siguientes elementos de un motor grfico: Renderizado o Material LOD. o Soporta la gama completa de operaciones de funcin fija como multitextura y multipass. o Blending y coordinacin de generacin de texturas. o Soporte para mltiples tcnicas de materiales. o Objetos transparentes gestionados automticamente. o Sistema de fuentes con fuentes TrueType y texturas pre creadas. o Sistema de GUI 2D con botones, listas, cajas de edicin, barras de desplazamiento, etc. (Usando CEGUI).
19
INTRODUCCIN
Antecedentes tcnicos
Gestin de escena o Altamente personalizable. Flexible gestin de escena no vinculada a ningn tipo de escena. Se puede usar las clases predefinidas o crear subclases propias para obtener un control total sobre la organizacin de la escena. o Grafo de escena jerrquico. o BSP, Octrees, Occlusion Culling y LOD. Texturizado o Bsico, multi-texturizado, bumpmapping, mipmapping, texturas volumtricas y proyectadas. o Texturizado proyectivo automtico entre vnculos con texturas unitarias a instancias Frustum. o Puede registrar texturas de fuentes externas. o Soporta PNG, JPEG, TGA, BMP y DDS como archivos de imagen. Iluminacin o Por vrtice, por pixel y Lightmapping. o Puede tener un nmero ilimitado de luces en la escena. o Soporte a travs de programas de vrtices y de fragmentos. Sombras o Shadow mapping y shadow volume. o Tcnicas soportadas: modulative stencil, additive stencil y modulative projective. o Mltiples estncils para optimizaciones de sombras, incluyendo programas de vrtices de extrusin, luz y sombras inteligentes, integracin con la malla LOD, mtodos zpass y zfail, estncils de doble cara y saturacin de recorte de regin. o Textura sombras que se desvanecen a larga distancia. Shaders o Vertex y pixel shaders de alto nivel. o Soporta programas de vrtices y de fragmentos de bajo nivel escritos en ensamblador, y programas de alto nivel en Cg, HLSL, y GLSL. Animacin o Cinemtica inversa, animacin esqueltica y animacin de mezcla. o Animacin del esqueleto, incluyendo la mezcla de mltiples animaciones y de peso variable de skinning de huesos. Mallas o o o o
Cargado de malla, skinning y progresivo. Aceleracin de skinning por hardware. Flexibilidad en los formatos de malla de datos aceptados. Exportadores para muchas herramientas de modelado incluidas Milkshape3D, 3D Studio, Max, Maya, Blender y Wings3D.
Curvas y superficies o Splines. o Caminos Bezier bicuadrados para superficies curvas Efectos especiales o Cartografa de medio ambiente, billboarding, sistema de partculas, motion blur, cielo, agua y niebla.
20
INTRODUCCIN
o
Antecedentes tcnicos
o -
Sistemas de partculas, incluyendo emisores fcilmente extensibles y affectors (personalizable mediante plugins). Los sistemas pueden ser definidos mediante scripts para un ajuste fcil. Soporte para skyboxes, skyplanes y skydomes.
Scripting o El lenguaje de script permite mantener los materiales fuera del cdigo mediante archivos .material. o Scripts de renderizado multipaso. Fsica o Fsica bsica, deteccin de colisiones y cuerpos rgidos. o Controladores que permiten organizar fcilmente los valores entre los objetos derivados. o Incluye bindings para mltiples sistemas de colisin/fsica de terceras partes, como ODE o Newton.
21
INTRODUCCIN
1.3.2.2.- 3D GameStudio
Antecedentes tcnicos
3D GameStudio es un kit de desarrollo para la realizacin de aplicaciones 2D y 3D. Est provisto de un motor 3D, un motor 2D, un editor de niveles y modelos, compilador de scripts y libreras de modelos, texturas, etc. El principal objetivo que esta aplicacin persigue es que el creador del juego no necesite ser un programador experimentado. Aboga por reducir al mximo el esfuerzo del creador a costa de perder flexibilidad en el diseo del juego. Ofrecen tres posibilidades para crear un juego: - Juegos diseados a base nicamente de ratn, para usuarios sin conocimientos de programacin. - Juegos o efectos diseados con algo de programacin utilizando C-scripts. - Juegos o efectos programados en C++ o Delphi, para programadores con experiencia. Las caractersticas de renderizado principales que implementa esta motor son: - Modelado o LOD geomtrico. o Modelado de terreno. - Visibilidad o rboles BSP, portales y PVS. - Iluminacin o Fuentes de luz estticas y dinmicas. o Sombras estticas y dinmicas. - Texturas o Texture Mapping y procedural para agua y lava. o Mip-mapping trilineal. - Efectos o Partculas, niebla coloreada y transparencia. o Transformacin y deformacin suave de mallas. - Otros o Efecto de movimiento lento/rpido. o Deteccin de colisiones. Otras caractersticas de este motor son: Importa multitud de formatos de ficheros grficos y de audio. Requiere DirectX8 o superior para hacer rendering por hardware. Requiere DirectX5 o superior para hacer rendering por software. No hay planeado soporte para OpenGL.
En cuanto a la posibilidad de incorporar archivos de algn modelador 3D, permite incorporar un plugin para crear modelos animados creados con 3ds Max.
22
INTRODUCCIN
1.3.2.3.- Crystal Space
Antecedentes tcnicos
Cristal Space es un kit de desarrollo de juegos 3D con licencia LGPL y portable escrito en C++. Se puede ejecutar en multitud de sistemas (GNU/ Linux, Windows, Windows NT, OS/2, BeOS, NextStep, OpenStep, MacOS/X Server, DOS, Macintosh) y da soporte a soporte para visualizacin a 8-bits, 16-bits y 32-bits, Direct3D, OpenGL, Glide, etc. Cristal Space, adems, soporta seis grados de libertad, luces de colores, mipmapping, portales, espejos, transparencias, superficies reflectivas, sprites 3D (basados en frames o animaciones de esqueleto), texturas procedurales, radiosidad, sistemas de partculas, halos, niebla volumtrica, lenguaje de script (Python y otros). Las caractersticas principales de renderizado que incorpora son: Modelado o Motor de terreno. o Motor de fsica. o Mallas 3D con animacin. Conversores desde los formatos Quake MDL and Quake II MD2 a Crystal Space. Importadores de objetos 3DS, MDL, MD2, OBJ, POV, y ASE. Las mallas son multirresolucin progressive meshes permitiendo LOD dinmicos. o Permite representar superficies curvas (nurbs, Bezier). o Modelado LOD general. Visibilidad o Sistema de visibilidad basado en la combinacin de portales, octrees, arboles BSP y c-buffer (coverage buffer). o Futuro trabajo en PVS. Iluminacin o Cielo iluminado dinmicamente, sol en movimiento. o Espejos. o Superficies brillantes y con reflejos con espejos y alpha mapping. o Luces estticas de colores con sombras reales (sombras precalculadas). o Luces dinmicas, de colores con sobras suaves. o Radiosidad precalculada sobre los ligthmaps. o Niebla volumtrica. o Luces con halo y lens-flares. Texturas o Texturas de cualquier dimensin y formatos GIF, TGA, PNG, BMP, JPG y otros. o Correccin perspectiva con interpolacin cada 16 pixels. o Texturas con canal alpha. o Mipmapping. o Soporte para texturas dinmicas. o Multitexuras con OpenGL.
23
INTRODUCCIN
-
Antecedentes tcnicos
Efectos o 2D sprites y sistemas de partculas utilizando esos sprites. Otros o Plugins para fuentes. o Sistema de deteccin de colisiones jerrquico. o Soporte para sonido 3D (DS3D, EAX, A3D) en varios formatos: WAV, MP3, Ogg/Vorbis, AU, AIFF, IFF y MOD. o Movimiento de objetos con un lenguaje de script. o Soporte de red simple para Windows, GNU/Linux y Unix (basado en sockets).
En cuanto a la posibilidad de importar modelos realizados con algn modelador 3D, Crystal Space incorpora un conversor de 3ds y permite aadir varios scripts importar mapas y modelos realizados en Blender.
24
INTRODUCCIN
25
INTRODUCCIN
Plan de trabajo
Plan de trabajo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Julio
Septiembre
Octubre
Noviembre
Diciembre
Enero
Febrero
26
INTRODUCCIN
Leyenda
Plan de trabajo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Presentacin del proyecto a desarrollar y de las herramientas a emplear Establecimiento de los objetivos a alcanzar Estudio del motor grfico Ogre Estudio del funcionamiento de Blender Adaptacin del modelo proporcionado en Blender y exportacin del mismo Elaboracin de la animacin mediante una ventana de Ogre independiente Adicin de materiales bsicos al modelo 3D Validacin de la animacin por parte del IBV Estudio de las clases MFC sobre Visual Studio Implementacin de la base de la interfaz Integracin de la ventana de Ogre en la interfaz base Validacin de la interfaz base por parte del IBV Creacin de la grfica y elaboracin del aspecto final de la interfaz Validacin de la aplicacin por parte del IBV Elaboracin de la memoria Mejora del modelo de Blender empleado y aadido de texturas Maquetacin del proyecto para la entrega Validacin final por parte del IBV Entrega del proyecto
27
MATERIAL Y MTODOS
28
MATERIAL Y MTODOS
Motor grfico 3D: Por qu Ogre? Los motivos por los que se ha elegido este motor grfico y no otro de los analizados son similares a los de la eleccin de Blender: se trata de software libre con una comunidad numerosa y activa. Aunque el motor grfico Crystal Space tambin pertenece al mundo de software libre, la comunidad que lo representa es bastante ms reducida que la de Ogre, lo que implica que exista una menor cantidad de actualizaciones y posibles ampliaciones a incorporar al motor. Adems otra razn para su eleccin es el hecho de que el modelador elegido permita exportar archivos que puedan ser empleados por el motor grfico. Blender cumple con este perfil, justificando la eleccin de ambas herramientas. Otro aspecto a comentar que ha facilitado emplear Ogre en el proyecto actual es el soporte al lenguaje C++, requisito con el cual parte el proyecto descrito. Adems sin en un futuro se deseara ampliar las funcionalidades de la aplicacin, la estructura en la que se dispone Ogre permitira realizar este paso de una forma ms o menos gradual, debido en gran medida a su programacin abierta a integrar nuevas funcionalidades y libreras. La versin de Ogre elegida en el proyecto actual es la 1.6.3.
Entorno de desarrollo: Por qu Visual Studio 2005? Elegidos el modelador y motor grficos, puesto que la aplicacin va a utilizar el lenguaje C++ se ha escogido uno de los entornos de desarrollo ms utilizados del mercado ante tales requisitos: Visual Studio 2005. La versin empleada depende de la disposicin de programas que ofrece la empresa en la que se ha realizado el proyecto.
Microsoft Visual Studio 2005 es un entorno de desarrollo integrado para sistemas operativos Windows. Soporta varios lenguajes de programacin tales como C++, C#, J#, ASP.NET y Visual Basic .NET, aunque actualmente se han desarrollado las extensiones necesarias para muchos otros. Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones web, as como servicios web en cualquier entorno que soporte la plataforma .NET (a partir de la versin net 2002). As se pueden crear aplicaciones que se intercomuniquen entre estaciones de trabajo, pginas web y dispositivos mviles. Este entorno permite la creacin de proyectos separando cada uno de los recursos de que se dispone: archivos de encabezado (archivos .h), archivos de cdigo fuente (.cpp para el caso de lenguaje C++) y otros archivos de recursos. La versin elegida en este proyecto es Microsoft Visual Studio 2005 Professional Edition. El entorno de desarrollo elegido presenta multitud de herramientas que se le pueden incorporar para aumentar sus funcionalidades. La aplicacin a desarrollar requiere dotarla de una interfaz funcional y de la visualizacin de unos datos en grficas. Visual Studio ofrece soluciones para ambos aspectos: la utilizacin de clases MFC y el empleo del paquete de clases Measurement Studio.
29
MATERIAL Y MTODOS
MFC (Microsoft Foundation Classes) es un conjunto de clases que provee un acceso ms sencillo a las API de Windows. Fueron introducidas por Microsoft en 1992 y desde entonces fueron apareciendo nuevas versiones con las nuevas versiones del entorno de programacin Visual C++. La utilizacin de clases MFC permite la creacin y manipulacin de forma sencilla de una interfaz a la que se le pueden aadir elementos mediante un entorno de ventanas.
Figura 10: Interfaz de ventanas mediante el uso de MFC en Visual Studio 2005
Measurement Studio es un paquete integrado de clases y controles para aplicaciones de pruebas, medidas y automatizacin en Microsoft Visual Studio 2008/2005/.NET 2003 y Visual Studio 6.0. Measurement Studio ha sido desarrollado por National Instruments y reduce drsticamente el tiempo de desarrollo de aplicaciones al proporcionar formularios de Windows, formularios Web y componentes de interfaz de usuario ActiveX. Est diseada para ingenieros, anlisis cientfico avanzado y adquisicin de datos y asistentes para control de instrumentos optimizados para pruebas. Basndose en ms de 20 aos de experiencia de medicin de programacin de National Instruments, Measurement Studio ofrece la posibilidad de una integracin sencilla para la adquisicin de datos y control de instrumentos en una interfaz.
30
MATERIAL Y MTODOS
Requerimientos
2.1.- Requerimientos
Los requerimientos para la realizacin del proyecto actual son coherentes con el tipo de programa a realizar: gestin de una serie de archivos para visualizar una animacin con la que es posible interactuar. De esta forma, los requisitos que se han tenido en cuenta se pueden clasificar, atendiendo a su funcionalidad, de la siguiente forma: - Gestin de ficheros de prueba - Visualizacin de la animacin - Modificacin del momento de la animacin - Modificacin de cmaras Un anlisis de cada uno de estos apartados tan generales permite realizar una clasificacin ms refinada: - Gestin de ficheros de prueba o Abrir ficheros de prueba o Borrar ficheros de prueba - Visualizacin de la animacin o Cargar prueba - Modificacin del momento de la animacin o Reproducir prueba o Rebobinar prueba o Pausar prueba o Cambiar posicin de reproduccin de prueba o Limitar rango de reproduccin - Modificacin de cmaras o Cambiar cmara o Cambiar posicin o Cambiar orientacin A continuacin se va a realizar un estudio pormenorizado y minucioso de cada uno de estos apartados a travs de la realizacin de los casos de uso correspondientes.
31
Requerimientos
Este mdulo debe permitir importar ficheros de prueba a la aplicacin, as como eliminar algunos ficheros que ya se encuentren cargados en la misma.
32
MATERIAL Y MTODOS
2.1.1.1.- Abrir fichero de prueba
Requerimientos
El usuario selecciona las pruebas a cargar a travs de un dilogo y, en caso de tratarse de ficheros vlidos, se importan al programa.
Flujo de eventos
a 1. 2. 3. 4. El usuario selecciona los ficheros a abrir. El sistema valida los ficheros seleccionados (nomenclatura y contenido). El sistema notifica al usuario el nmero de pruebas vlidas. El sistema extrae la informacin necesaria de los ficheros vlidos. El sistema incorpora la informacin de los ficheros a la interfaz. Intencin de Usuario El usuario pulsa el botn de Abrir Fichero. Obligaciones del Sistema
5. 6. 7.
Extensiones sncronas #1 #2
En 3 el usuario no selecciona ningn fichero y pulsa Abrir: El sistema vuelve a mostrar el dilogo. En 4 el sistema no encuentra ningn fichero vlido: El sistema se lo notifica al usuario y acaba el caso de uso.
33
MATERIAL Y MTODOS
2.1.1.2.- Borrar fichero de prueba
Requerimientos
Flujo de eventos
a 1. 2. 3. 4. Intencin de Usuario El usuario selecciona la prueba a borrar. El usuario pulsa el botn de Borrar Prueba. Obligaciones del Sistema
El sistema elimina la prueba de la interfaz. El sistema actualiza la posicin del resto de pruebas en la lista.
Extensiones sncronas #1
En 3 la prueba a borrar est cargada actualmente en la animacin: El sistema muestra un error y acaba el caso de uso.
34
Requerimientos
Este mdulo debe poseer la funcionalidad de interpretar los datos de los ficheros de prueba cargados y transformarlos en una animacin que permita una visualizacin en pantalla.
Visualizacin de la animacin
Cargar prueba
Usuario
Figura 12: Caso de uso para la visualizacin de la animacin
35
MATERIAL Y MTODOS
2.1.2.1.- Cargar prueba
Requerimientos
El usuario selecciona una prueba cargada en la interfaz y presiona el botn correspondiente a la carga de la prueba, visualizndose sta en la ventana de Ogre.
Flujo de eventos
a 1. 2. 3. 4. 5. 6. Intencin de Usuario El usuario selecciona una prueba de la interfaz. El usuario presiona el botn de Cargar Prueba. Obligaciones del Sistema
7. 8.
El sistema lee el contenido del fichero de prueba y almacena los datos. El sistema carga la grfica con los datos almacenados. El sistema interpreta los datos y crea la animacin. El sistema activa los elementos y eventos que pueden interactuar con la animacin. Se carga la cmara libre por defecto. Se inicia el bucle de renderizado.
Extensiones sncronas #1
En 2 el usuario presiona el botn Cargar Prueba sin tener un fichero seleccionado: El sistema muestra un error y acaba el caso de uso. En 2 el usuario presiona el botn Cargar Prueba teniendo el dilogo de apertura de pruebas abierto: El sistema muestra un error y acaba el caso de uso. En 3 el sistema tiene animaciones previas cargadas: El sistema libera recursos relacionados con las mismas y sigue su ejecucin. En 5 se produce algn error al emplear los recursos para la creacin de la animacin: El sistema muestra un error y acaba el caso de uso.
#2
#3 #4
36
Requerimientos
Este modulo encapsula toda la interaccin que el usuario realiza con la animacin para variar la reproduccin de la misma. Modificacin del momento de animacin
Reproducir prueba Rebobinar prueba Pausar prueba Cambiar posicin de reproduccin de prueba Limitar rango de reproduccin
Usuario
37
MATERIAL Y MTODOS
2.1.3.1.- Reproducir prueba
Requerimientos
El usuario pulsa en el botn correspondiente a reproducir una prueba y comprueba los movimientos que realiza el modelo en funcin de la prueba que se encuentre cargada.
Flujo de eventos
a 1. 2. Intencin de Usuario El usuario presiona el botn Reproducir Prueba. Obligaciones del Sistema
3.
El sistema interpola entre los datos interpretados de las pruebas para generar movimiento en la animacin. El sistema enlaza el momento de reproduccin con elementos de la interfaz.
Extensiones sncronas #1
En 1 el usuario presiona el botn Reproducir Prueba encontrndose el momento de reproduccin al final de la animacin: El sistema reinicia el momento de reproduccin y vuelve a comenzar. En 2 ocurre un problema al modificar el estado de la reproduccin en Ogre: El sistema muestra un error y acaba el caso de uso.
#2
38
MATERIAL Y MTODOS
2.1.3.2.- Rebobinar prueba
Requerimientos
El usuario pulsa en el botn correspondiente a rebobinar una prueba y comprueba los movimientos reproducidos en sentido inverso que realiza el modelo en funcin de la prueba que se encuentre cargada.
Flujo de eventos
a 1. 2. Intencin de Usuario El usuario presiona el botn Rebobinar Prueba. Obligaciones del Sistema
3.
El sistema interpola entre los datos interpretados de las pruebas para generar los movimientos en sentido inverso en la animacin. El sistema enlaza el momento de reproduccin con elementos de la interfaz.
Extensiones sncronas #1
En 1 el usuario presiona el botn Rebobinar Prueba encontrndose el momento de reproduccin al principio de la animacin: El sistema lleva al final el momento de reproduccin el momento de reproduccin y sigue su ejecucin. En 2 ocurre un problema al modificar el estado de la reproduccin en Ogre: El sistema muestra un error y acaba el caso de uso.
#2
39
MATERIAL Y MTODOS
2.1.3.3.- Pausar prueba
Requerimientos
El usuario pulsa en el botn correspondiente a pausar la reproduccin de una prueba y la animacin se detiene.
Flujo de eventos
a 1. 2. Intencin de Usuario El usuario presiona el botn Pausar Prueba. Obligaciones del Sistema
3.
El sistema detiene el momento de reproduccin si la animacin se encuentra en estado de reproducir o rebobinar prueba. El sistema enlaza esa detencin del momento de reproduccin con elementos de la interfaz.
Extensiones sncronas #1
En 2 ocurre un problema al modificar el estado de la reproduccin en Ogre: El sistema muestra un error y acaba el caso de uso.
40
MATERIAL Y MTODOS
2.1.3.4.- Cambiar posicin de reproduccin de prueba
Requerimientos
El usuario interacta con la barra de reproduccin o con la grfica modificando el momento de reproduccin de la prueba cargada.
Flujo de eventos
a 1. Intencin de Usuario El usuario pulsa con el botn izquierdo del ratn sobre un punto de la grfica o la barra de reproduccin. Obligaciones del Sistema
2.
3. 4.
El sistema calcula la correspondencia entre el punto pulsado y el tiempo de animacin correspondiente. El sistema traslada el momento de reproduccin al tiempo calculado. Se actualizan los elementos de la interfaz atendiendo al momento de reproduccin actual.
Extensiones sncronas #1 #2 #3 #4
En 1 la accin de pulsado se puede sustituir por pulsacin y arrastre, ejecutndose el caso de uso por cada variacin de pulsacin del ratn. En 1 tambin se puede modificar la posicin de reproduccin de la prueba pulsando en los botones correspondientes a ir al comienzo o ir al final. En 1 el momento de reproduccin tambin se puede variar mediante la interaccin con la rueda del ratn. En 1 el usuario pulsa en una regin inactiva de la grfica: El sistema traslada el momento de reproduccin a la posicin correspondiente al cursor lmite ms cercano. En 1 se encuentra activo el modo de rebobinar o reproducir prueba: El sistema da preferencia al caso de uso actual y, al finalizar la interaccin con ste, prosigue con el modo de reproduccin que se encontraba en ejecucin.
#5
41
MATERIAL Y MTODOS
2.1.3.5.- Limitar rango de reproduccin
Requerimientos
El usuario modifica la posicin de los cursores lmite de la grfica, variando el rango de reproduccin de la animacin.
Flujo de eventos
a 1. 2. Intencin de Usuario El usuario pulsa y arrastra sobre un cursor lmite de la grfica. Obligaciones del Sistema
3. 4. 5.
El sistema calcula la correspondencia entre la nueva posicin de arrastre y el tiempo de animacin. El sistema actualiza el rango de reproduccin de la animacin. Se actualiza el rea de la regin activa en la grfica. Se actualiza el rango entre el que se ejecuta la barra de reproduccin.
Extensiones sncronas #1
En 1 la posicin de arrastre del cursor lmite supera al cursor de animacin: El sistema llama al caso de uso Cambiar posicin de reproduccin de prueba para dejarlo siempre dentro de la regin activa. En 1 la posicin de arrastre del cursor izquierdo se intercambia con el derecho o viceversa: El sistema muestra un error, actualiza la posicin de los cursores y el momento de reproduccin a la posicin por defecto y acaba el caso de uso.
#2
42
Requerimientos
El usuario debe poder interactuar con las cmaras que permiten visualizar la animacin modificando la posicin y orientacin de visualizacin.
Modificacin de cmaras
43
MATERIAL Y MTODOS
2.1.4.1.- Cambiar cmara
Requerimientos
Flujo de eventos
a 1. Intencin de Usuario El usuario pulsa sobre alguna de las cinco cmaras disponibles para visualizar la animacin. Obligaciones del Sistema
2.
3.
El sistema identifica la cmara y la carga en la animacin para visualizar su punto de vista. El sistema desactiva la cmara cargada previamente en la interfaz.
Extensiones sncronas #1
En 2 la cmara seleccionada es la cmara libre: El sistema activa los elementos de la interfaz que permiten modificar la posicin de la misma. En 2 la cmara seleccionada es la cmara libre: El sistema carga la ltima modificacin de posicin y orientacin que se realiz sobre la misma.
#2
44
MATERIAL Y MTODOS
2.1.4.2.- Cambiar posicin
Requerimientos
El usuario modifica la posicin de la cmara libre para visualizar la animacin con el fin de observar mejor un movimiento determinado.
Flujo de eventos
a 1. 2. Intencin de Usuario El usuario pulsa sobre alguno de los spins. Obligaciones del Sistema
3.
El sistema calcula el incremento de posicin que supone el pulsar el spin seleccionado. El sistema traslada la posicin de la cmara a la posicin obtenida a travs de la posicin previa y el incremento obtenido calculado.
Extensiones sncronas #1 #2
En 1 es posible modificar la posicin de la cmara mediante la utilizacin del teclado. En 1 es posible cambiar la posicin de la cmara libre en el eje Z mediante el empleo de la rueda del ratn. En 1 es posible devolver a la cmara libre a su posicin por defecto pulsando en el botn Reset. En 2 el spin pulsado llega a su lmite de posicin: El sistema mantiene fija la posicin de la cmara.
#3 #4
45
MATERIAL Y MTODOS
2.1.4.3.- Cambiar orientacin
Requerimientos
El usuario pulsa sobre la ventana de la animacin para modificar la orientacin de la cmara libre.
Flujo de eventos
a 1. Intencin de Usuario El usuario pulsa el botn izquierdo del ratn y arrastra sobre la ventana de la animacin. Obligaciones del Sistema
2. 3.
4.
El sistema obtiene las coordenadas de ratn. El sistema calcula el incremento entre la posicin de pulsacin y la de arrastre. El sistema modifica la orientacin de la cmara en funcin del incremento calculado.
Extensiones sncronas #1
En 1 la posicin de arrastre sobrepasa los lmites de la ventana de la animacin: El sistema no actualiza la orientacin mientras que el puntero no se site de nuevo, en la misma accin de arrastre, sobre la ventana de la animacin.
46
MATERIAL Y MTODOS
Diseo de la aplicacin
47
MATERIAL Y MTODOS
2.2.1.1.- Animacin Ogre
Diseo de la aplicacin
Este mdulo se encarga de todas las funcionalidades del programa que estn relacionadas con la animacin 3D. Por tanto su rango de actuacin se define: Inicializacin del motor Ogre con la carga de todos los recursos necesarios para su ejecucin. Carga de los recursos externos como la malla, el esqueleto y los materiales de los que dispondr el modelo. Lectura de los parmetros enviados por la interfaz y actualizacin de la animacin en funcin de stos. Captura de eventos de teclado que permiten modificar la animacin.
2.2.1.2.- Interfaz
Este mdulo es el que est en contacto directo con el usuario de la aplicacin. Las funcionalidades principales son: Inicializa las libreras necesarias para la ejecucin del programa. Define el aspecto visual del programa y la disposicin de sus elementos. Captura eventos producidos por el usuario. Enva parmetros al mdulo de Animacin Ogre en funcin de la interpretacin de estos eventos. Permite la interaccin entre la grfica de Measurement Studio y los elementos de la interfaz. Actualiza elementos de la interfaz relacionados con la animacin 3D.
Por tanto se trata de un mdulo que nicamente se emplea como fuente y no tiene parmetro alguno.
48
Diseo de la aplicacin
Las clases utilizadas siguen la arquitectura del proyecto y se organizan de manera anloga. Se distingue entre los mdulos de Interfaz y de Animacin de Ogre.
COgreApplication COSFDialog
49
MATERIAL Y MTODOS
o o o o o o o o o o o
Diseo de la aplicacin
resetAnimation: sita el momento de animacin en el cursor izquierdo (por defecto en el inicio). finalAnimation: sita el momento de animacin en el cursor derecho (por defecto al final). playAnimation: inicia la animacin. Si se encuentra en el instante final en el momento de su ejecucin vuelve al inicio. rewAnimation: inicia la animacin en sentido inverso. Si se encuentra en el instante inicial en el momento de su ejecucin vuelve al final. pauseAnimation: pausa la animacin. sliderControl: permite la modificacin del momento de animacin mediante la manipulacin del slider situado en la interfaz. spinControl: permite la modificacin de la posicin de la cmara mediante la manipulacin de los spins situados en la interfaz. wheelMouseControl: modifica la profundidad de la cmara. cameraControl: modifica la orientacin de la cmara. resetCameraPosition: devuelve la cmara libre a su posicin y orientacin por defecto (posicin frontal). viewAnimation: permite visualizar u ocultar las mallas y los ejes asociados a la animacin.
COgreApplication: clase donde se inicializan todos los recursos necesarios para la ejecucin de Ogre, adems de cargar el modelo 3D y obtener los datos necesarios para la realizacin de la animacin. Contiene la declaracin de los mtodos siguientes: o createRoot: mtodo donde se crea el elemento raz que se utiliza como base para configurar Ogre. o defineResources: encargado de la carga del archivo de configuracin y de definir la localizacin de los recursos mediante la lectura del fichero resources.cfg obtenido tras la instalacin de la librera Ogre. o setupRenderSystem: define todas las opciones de visualizacin que tiene la ventana Ogre a mostrar (pantalla completa, resolucin, nivel de detalle, tarjeta grfica que cargar la informacin). o createRenderWindow: creacin de la ventana de Ogre con las opciones de configuracin descritas. o initializeResourceGroups: inicializacin de recursos. o setupScene: creacin de elementos bsicos de la escena: cmara principal, punto de vista y director o gestor de la escena. o setupInputSystem: inicializacin de eventos de entrada. En este caso slo se manejaran eventos de teclado puesto que los de ratn se manejan desde la interfaz. o createScene: carga de las mallas del modelo, de una luz inicial e inicializacin de las cmaras de las que constar la animacin. o readFile: lectura de un fichero de pruebas y rellenado de la estructura con los datos de los ngulos en funcin del tiempo. o createAnimation: creacin de la animacin mediante los datos obtenidos en la estructura. o destroyAnimation: liberacin de los recursos generados al crear una animacin. o destroyAllAnimations: liberacin de los recursos generados por todas las animaciones creadas. o createFrameListener: llamada al constructor de la clase MyFrameListener para interactuar con la animacin creada. o startRenderLoop: comienzo de la renderizacin y llamada al mtodo frameStarted de la clase MyFrameListener.
50
MATERIAL Y MTODOS
2.2.2.2.- Clases Interfaz
Diseo de la aplicacin
La definicin de la interfaz grfica en este proyecto incorpora las siguientes clases: CDialog: clase bsica para la creacin y muestra por pantalla de dilogos mediante MFC. Existen dos tipos de dilogos: modal y modeless. o Un dilogo de tipo modal debe ser cerrado por el usuario antes de que la aplicacin contine su ejecucin. o Un dilogo de tipo modeless permite al usuario mostrar el dilogo y seguir con otra tarea sin cancelar o cerrar el dilogo mostrado. En este proyecto se ha empleado el tipo de dilogos modeless debido a su versatilidad de utilizacin. Sin embargo, un objeto de tipo CDialog no se puede definir por s mismo. Un objeto de tipo CDialog es una combinacin de una plantilla de dilogo y una clase derivada de CDialog. CProyectoDlg: clase derivada de CDialog que crea el dilogo principal de la interfaz. Sobre esta clase se ha implementado toda la funcionalidad que incorpora la interfaz de usuario. Se han controlado todo tipo de eventos, excepto los eventos de teclado que se han controlado en el mdulo de Ogre, que permiten al usuario interactuar con la aplicacin. Los mtodos implementados los podemos dividir en: o Eventos de la interfaz: mtodos ejecutados cuando el usuario interacta de alguna forma especificada con los elementos situados en la interfaz (pulsacin de botones, movimiento del ratn, temporizadores). Estos mtodos poseen una cabecera por defecto. o Funciones propias: mtodos creados para obtener algunos datos necesarios que proporcionan algunos elementos de la interfaz. En algunas ocasiones se implementan para facilitar la lectura del cdigo y obtener funciones ms diversificadas. o Eventos de Measurement Studio: mtodos ejecutados cuando el usuario interacta de alguna forma con la grfica mostrada. Los mtodos disponibles dependen del modo de recepcin de eventos en el que se encuentre la grfica generada. CAboutDlg: clase creada en el contenido de CProyectoDlg y que tambin deriva de CDialog. Es una clase creada por defecto al emplear MFC y se encarga de mostrar un dilogo con informacin relativa a las herramientas utilizadas.
51
Diseo de la aplicacin
Los ficheros que se muestran en la aplicacin son obtenidos de pacientes reales y estn proporcionados por el Instituto de Biomecnica de Valencia (IBV). Estos ficheros se obtienen fruto del proceso que realiza el programa NedCervical de los datos muestreados con el sistema de vdeo digital Kinescan/IBV. As mediante las coordenadas 3D de cada uno de los marcadores obtenidas por este sistema, es posible realizar el clculo de los ngulos en los ejes X, Y, Z en funcin del tiempo para establecer los movimientos realizados por el paciente en cuestin.
Prueba de flexin lateral (1): el paciente realiza movimientos variando fundamentalmente el eje Z (balance de la cabeza a los lados manteniendo hombros rectos y mirada al frente). Este fichero puede recibir los nombres: angulos_3.txt o v2_3.txt.
52
MATERIAL Y MTODOS
Diseo de la aplicacin
Prueba de flexin lateral (2): el paciente realiza los mismos movimientos que la prueba anterior para corroborar su cinemtica. Este fichero puede recibir los nombres: angulos_4.txt o v2_4.txt.
Prueba de rotacin (1): el paciente realiza movimientos variando fundamentalmente el eje Y (similar a una negacin continuada). Este fichero puede recibir los nombres: angulos_5.txt o v2_5.txt. Prueba de rotacin (2): el paciente realiza los mismos movimientos que la prueba anterior para corroborar su cinemtica. Este fichero puede recibir los nombres: angulos_6.txt o v2_6.txt. X Y Z
53
MATERIAL Y MTODOS
Diseo de la aplicacin
Prueba funcional (1): el paciente mira a una lmpara situada arriba a su izquierda, despus mira un cuestionario situado en sus rodillas y por ltimo mantiene la mirada al frente. Este fichero puede recibir los nombres: angulos_9.txt o v2pf_1.txt. X Y Z
Prueba funcional (2): el paciente mira a una lmpara situada encima de su cabeza, despus mira un cuestionario situado en sus rodillas y por ltimo mantiene la mirada al frente. Este fichero puede recibir los nombres: angulos_8.txt o v2pf_2.txt. X Y Z
54
MATERIAL Y MTODOS
-
Diseo de la aplicacin
Prueba funcional (3): el paciente mira a una lmpara situada arriba a su derecha, despus mira un cuestionario situado en sus rodillas y por ltimo mantiene la mirada al frente. Este fichero puede recibir los nombres: angulos_7.txt o v2pf_3.txt.
La posicin de los marcadores se actualiza con una frecuencia de 25 Hz (cada 0.04 segundos), ya que es la velocidad a la que trabajan las cmaras de Kinescan/IBV. Por tanto, en las pruebas se obtiene un valor de los ngulos en los tres ejes cada intervalo de tiempo comentado.
55
Diseo de la aplicacin
La interfaz grfica de usuario ha sido diseada teniendo en cuenta, fundamentalmente, aspectos relacionados con la usabilidad. La aplicacin desarrollada en este proyecto va a ser utilizada generalmente por personas que no estn en la obligacin de poseer conocimientos informticos avanzados y, partiendo de esta base, la interaccin con el usuario debe ser simple, intuitiva y clarificadora. El usuario recibe en todo momento una respuesta del programa en torno a operaciones consideradas como invlidas, indicndole cmo llevarlas a cabo de manera correcta mediante mensajes. Considerar la usabilidad como pilar fundamental a partir del cual construir la capa que interacta con el usuario atiende, sin lugar a dudas, a la calidad de uso. El hecho de utilizar la aplicacin debe favorecer el objetivo que el usuario busca con su ejecucin y fomentar su uso; en ningn caso debe ser una experiencia ardua o que requiera una iniciacin previa. Debe permitir alcanzar objetivos especficos con efectividad, eficiencia y satisfaccin. Adems y partiendo del hecho de considerar la usabilidad como primer factor para el desarrollo de la interfaz, la esttica no se ha descuidado. Se ha utilizado un estilo de ventanas tipo habitual en las aplicaciones ejecutadas en Windows con el fin de que el usuario se sienta cmodo con su visualizacin. El hecho de mantener este estilo permite dar cierta confianza y seguridad al considerar los elementos que contiene la interfaz como cotidianos.
56
MATERIAL Y MTODOS
Diseo de la aplicacin
5
Figura 24: Disposicin y sealado de elementos de la interfaz
Se distinguen las siguientes zonas en la representacin de la interfaz: Zona de botones generales (1): estos botones son los iniciadores de las funciones que se pueden realizar en la interfaz. Son los elementos principales que condicionan los datos mostrados por el resto de elementos. Permiten la apertura de ficheros de prueba, el borrado de los mismos, cargar la animacin correspondiente a un fichero seleccionado y salir de la aplicacin. Zona de ficheros importados (2): se trata de un List Control que contiene informacin de las pruebas importadas de los pacientes. La informacin a mostrar se divide en: nombre de la prueba, ruta de la que se obtiene, duracin de la misma (en segundos) y fecha de modificacin del fichero (da y hora). Este elemento permite la seleccin de los ficheros importados para realizar su carga o su borrado. Ventana de animacin (3): esta ventana incorpora toda la funcionalidad vinculada con el motor Ogre. Muestra la animacin del fichero cargado actualmente y con ella pueden interactuar las zonas marcadas como 4, 5 y 6. Adems permite la modificacin de la orientacin de la cmara o su profundidad mediante eventos de ratn. Zona de control de cmaras (4): incorpora la funcionalidad relacionada con la posicin de las cmaras de la ventana de animacin. Permite la variacin de la posicin de una cmara libre mediante el control de Spins, as como la seleccin de 4 cmaras fijas para detectar de forma adecuada la cinemtica de los movimientos representados.
57
MATERIAL Y MTODOS
-
Diseo de la aplicacin
Zona de control de reproduccin de la animacin (5): esta zona permite la variacin de la reproduccin mostrada en la animacin. A travs de un Slider o barra de reproduccin, se puede seleccionar el momento de reproduccin adecuado para observar un movimiento determinado. Adems se incluyen botones habituales para la visualizacin de una animacin: iniciar reproduccin, reproduccin inversa, pausa de la animacin, colocar momento de reproduccin al principio y colocar momento de reproduccin al final. Grfica del fichero cargado (6): esta zona muestra los datos del fichero cargado en una grfica con la variacin de los valores de los ngulos en funcin del tiempo. El cursor de animacin est vinculado al momento de reproduccin de la misma. Adems la grfica permite interactuar con la reproduccin limitando la zona de representacin (mediante la pulsacin y arrastrado de los cursores lmite) y colocar el momento de animacin en un valor de tiempo determinado (mediante la pulsacin de una zona activa de la grfica).
Diseo de la grfica La grfica mostrada en la zona 6 (figura 25) se ha realizado mediante las clases incorporadas en el paquete Measurement Studio de National Instruments. As se han representado los datos en dos ejes en funcin del contenido de los ficheros de prueba. En el eje X se representan los valores de tiempo en segundos (primera columna de los ficheros de prueba); mientras que el eje Y contiene los valores de los ngulos (en grados) del paciente en cada uno de sus tres ejes (X, Y, Z). El rango de valores que pueden delimitar los ejes es autoescalable y depende de los datos a mostrar. Por tanto se obtienen tres trazos: uno referente a la variacin del eje X (sealada en color rojo), uno con la variacin del eje Y (sealada en color verde) y otro la variacin del eje Z (sealada en color azul). Otro aspecto a destacar es la utilizacin de cursores y regiones. En la grfica hay tres cursores: cursor de animacin, cursor de inicio de reproduccin y cursor de final de reproduccin. El cursor de animacin (lnea vertical de color blanco) marca el momento de reproduccin de la animacin; mientras que los cursores de inicio y fin de reproduccin (lneas verticales de color amarillo) marcan los valores mnimo y mximo de la regin activa de la reproduccin. La regin inactiva se marca con un fondo grisceo.
58
MATERIAL Y MTODOS
Diseo de la aplicacin
Estos cursores se pueden modificar mediante su pulsacin y arrastrado o, en el caso del cursor de animacin, mediante un clic en una zona activa de la grfica. Estas modificaciones afectan al momento y rango de la reproduccin de la animacin en tiempo real.
Iconos Los iconos que representan la funcionalidad de cada uno de los botones se han seleccionado con el fin de, con un simple vistazo, tener una nocin de la funcin que realiza la pulsacin de cada botn. De esta forma se han supuesto ciertos criterios estndar para la eleccin de algunos iconos y, de forma ms concreta, para los que modifican la reproduccin de la animacin.
59
MATERIAL Y MTODOS
Desarrollo de la aplicacin
2.3.1.- Blender
El uso de un programa de modelado como Blender permite la creacin de grficos tridimensionales de una manera eficiente y sencilla. Sin embargo, para la utilizacin correcta del programa se requiere una iniciacin previa, ya que su manejo requiere muchos de los denominados atajos de teclado y su interfaz no es muy intuitiva. Quiz este sea el escollo ms difcil de superar a la hora de realizar modelos tridimensionales con Blender, pero una vez superado los beneficios que se obtienen con su utilizacin superan a estos defectos iniciales. En primer lugar es necesario describir el sistema de ventanas bsico que utiliza Blender. Aunque el sistema de ventanas es completamente personalizable al gusto que le quiera dar el usuario, se distinguen tres zonas fundamentales: Visor 3D: permite ver y manipular objetos en una escena 3D. Es la ventana base del programa ya que el resto de ventanas reflejan en sta los efectos aplicados al modelo en cuestin.
Ventana de botones: permite realizar operaciones sobre mallas, cmaras, luces y cualquier objeto representado en la escena. Su funcionalidad es muy amplia y es la ventana secundaria por defecto (normalmente se sita en la parte inferior de la ventana total del programa).
60
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Barras de men: por defecto (User Preferences) incorporan la funcionalidad tpica de cualquier programa con posibilidades de guardado y gestin de archivos, as como las funcionalidades ms generales.
Sin embargo, Blender incorpora un elemento muy til: la posibilidad de eleccin de la ventana a mostrar. Esto facilita enormemente el trabajo realizado en varias capas sin la necesidad de la utilizacin de mens salientes o pop-ups que no permiten la gestin simultnea de distintas ventanas. Las funcionalidades que se aplican a cada tipo de ventana son muy diversas y permiten realizar cualquier modificacin sobre los grficos 3D. Aspectos como la animacin, materiales aplicados a las mallas, estructura de los elementos presentes en la escena y otros utilidades son tratadas en la ventana correspondiente. Por tanto es importante conocer de antemano qu posibilidades incorpora cada tipo de ventana y qu funcionalidades se pueden implementar en ella. La descripcin general de cada uno de los tipos de ventanas, excepto los de 3D View (Visor 3D), Buttons Window (ventana de botones) y User Preferences que ya se comentaron anteriormente, es la siguiente: -
Ipo Curve Editor: permite la edicin de curvas 2D que definen una animacin en Blender. Action Editor: define una lnea de tiempos en la que se definen acciones a realizar por el modelo 3d. El funcionamiento es a travs del establecimiento de KeyFrame entre los que Blender interpola para conseguir una animacin fluida. NLA Editor: define una lnea de tiempos en la que se definen KeyFrames referentes a las acciones declaradas en Action Editor. Blender interpola entre estas acciones para conseguir la animacin. UV/Image Editor: permite la carga, manipulacin y creacin de texturas en el modelo.
61
MATERIAL Y MTODOS
-
Desarrollo de la aplicacin
Video Sequence Editor: incorpora un sencillo compositor de vdeo que permite el enlazado de imgenes y audio mediante una lnea de tiempos. Timeline: lnea de tiempo que permite la edicin de animaciones. Incorpora tanto controles para manipular la animacin como botones clsicos para su reproduccin. Audio Window: representa las ondas referentes a los sonidos aadidos en la aplicacin y permite su reproduccin. Text Editor: se trata de un editor de texto incorporado. Se utiliza sobretodo en conjuncin con lenguaje Python para la programacin avanzada de la lgica que pretende un modelo que pueda interactuar con el usuario. Outliner: define un diagrama jerrquico de los elementos utilizados y sus dependencias entre ellos. Su creacin se va haciendo a medida que se incorporan elementos pero tambin permite su manipulacin directa. Node Editor: permite el establecimiento de una jerarqua entre los materiales utilizados por un nodo determinado. Image Browser: permite la apertura de archivos de imgenes a travs de un explorador de carpetas. File Browser: permite la apertura de archivos mediante la introduccin de la ruta determinada. Scripts Windows: incorpora todos los scripts cargados en el programa. Estos scripts pueden venir por defecto instalados en Blender o pueden descargarse dependiendo de la funcionalidad que el programador quiera obtener con los mismos.
Adems del conocimiento del sistema de ventanas que proporciona Blender, es fundamental tener una comprensin espacial adecuada. Es bsico el conocer y comprender adecuadamente los tipos de transformaciones espaciales: - Escalado: variacin del tamao del objeto en funcin de un factor de escala. - Traslacin: variacin de la posicin que ocupa el objeto en un entorno. - Rotacin: variacin de la orientacin del objeto. En mbitos de programacin grfica se distingue entre dos tipos de sistemas de coordenadas: o Local o referente al objeto: el sistema de coordenadas tiene su origen en el centro del propio objeto y permite la rotacin sobre s mismo. o Global: el sistema de coordenadas tiene su origen fuera del objeto y al realizar una rotacin el objeto gira sobre dicho origen. Cabe comentar que estas transformaciones espaciales se pueden realizar sobre el eje considerado en cada momento con el fin de obtener un resultado adecuado. El conocimiento, tanto del entorno de ventanas como de las transformaciones espaciales, facilita la explicacin para la creacin del modelo resultante que se dispone en la aplicacin. Para su obtencin se han seguido tres pasos: - Modelado de la malla - Adicin de esqueleto al modelo - Exportacin ntegra del modelo
62
MATERIAL Y MTODOS
Desarrollo de la aplicacin
que facilita en gran medida el obtener un modelo inicial: la rotoscopia. La rotoscopia consiste en basarse en una imagen 2D vista desde distintas perspectivas para generar una modelo 3D. Las vistas ms empleadas para modelar un objeto 3D suelen ser la de alzado y perfil, aunque su eleccin depende en gran medida del tipo y la complejidad del objeto a modelar. De esta forma mediante la variacin de la posicin de vrtices y la generacin y deformacin de las caras que se forman es posible obtener el objeto 3D deseado. Esta labor es bsicamente artstica ya que la lnea a seguir para obtener un modelo ms detallado es equivalente a la realizada por un alfarero al moldear una vasija de barro: depende en gran medida de la experiencia y las horas dedicadas.
Figura 31: Comparacin entre modelo inicial (izquierda) y modelo final (derecha)
Una vez realizado el modelado, es posible mejorar su aspecto aadiendo un suavizado de la malla a travs del algoritmo de Catmull-Clark que permite aplicar Blender. Este algoritmo se basa en la subdivisin de superficies para conseguir un aspecto ms redondeado de la malla y evitar la visualizacin tan poligonal que presenta. Cuantas ms iteraciones del algoritmo se realizan sobre la malla, ms redondeada se obtiene la superficie sobre la que acta. Estas iteraciones del algoritmo en Blender tienen la nomenclatura de niveles de Catmull-Clark.
Sin embargo, esta mejora de la visualizacin conlleva un inconveniente: a mayor nivel de redondeado, mayor nmero de polgonos a cargar. Por tanto, la visualizacin y manipulacin del modelo requiere mayor carga tanto de procesador como de tarjeta grfica. Este es el motivo principal que explica la no aplicacin de dicha tcnica sobre el modelo, ya que el objetivo de la aplicacin desarrollada es la utilizacin en prcticamente cualquier ordenador con requisitos hardware medios.
63
MATERIAL Y MTODOS
2.3.1.2.- Esqueleto
Desarrollo de la aplicacin
Una vez se ha completado el modelado de la malla, habr que dotarla de un esqueleto para que pueda realizar los movimientos deseados. A este proceso se le conoce normalmente como skinning y se fundamenta en la creacin de una estructura jerrquica de componentes con el fin de obtener articulaciones que poder manipular. Por tanto el proceso a seguir a grandes rasgos es el siguiente: - Creacin de un armature o esqueleto mediante una jerarqua de huesos o bones. - Asignacin de vrtices de la malla a los huesos del modelo. - Comprobacin de movimientos realizados por las articulaciones. Cabe comentar que los dos ltimos pasos del proceso constituyen un bucle que nicamente finalizar en el caso de que el movimiento realizado sea el correcto. A continuacin se describen cada uno de los pasos de forma ms detallada: Creacin de un armature o esqueleto mediante una jerarqua de huesos o bones El primer aspecto a tener en cuenta es la posibilidad de movimientos que hay que otorgar al modelo. En este caso y puesto que los movimientos se reducen a la zona del cuello y las cervicales, nicamente necesitamos dos huesos: un hueso que haga referencia a la cabeza y otro referente al resto del cuerpo. Por tanto el hueso de la cabeza es el que realiza las rotaciones sobre el hueso que trabaja como punto de referencia, es decir el referente al resto del cuerpo, que permanece fijo. De esta forma al aadir un hueso en Blender en la ventana del Visor 3D apreciamos un polgono que representa el hueso aadido. Se puede modificar su orientacin y posicin para colocarlo en el lugar adecuado de la malla. En este caso se coloca, con la ayuda de las cmaras que por defecto presenta el programa, el hueso de la cabeza de forma vertical pasando por el centro de la cabeza, mientras que el hueso del cuerpo justo debajo con la misma orientacin.
Una vez colocados se modifica su jerarqua asignando el hueso del cuerpo como hueso padre del hueso de la cabeza. Con ello se consigue que los movimientos realizados por el hueso de la cabeza dependan siempre de la posicin y orientacin del hueso del cuerpo.
64
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Asignacin de vrtices de la malla a los huesos del modelo Con los huesos ya colocados estratgicamente, se procede a vincularlos a los vrtices que forman la malla. Con ello, adems del movimiento del modelo se consigue el efecto denominado deformacin de la malla que otorga un mayor realismo a la cinemtica del movimiento. Las variaciones producidas por el movimiento de unos vrtices tendrn un reflejo gradual en sus vrtices prximos, dependiendo siempre de la proximidad de stos y de la estructura sea que presente el modelo en cuestin. Por tanto y tras seleccionar un hueso, Blender posee una herramienta para enlazar vrtices de la malla al hueso seleccionado. Valindose de la ayuda de las cmaras se realiza la seleccin de los vrtices afectados por el movimiento y que, por tanto, formarn parte de la articulacin.
En el modelo implementado, se han distribuido los vrtices en grupos en funcin de la posicin de los mismos en el modelo. As los grupos de vrtices son los que se han enlazado a los huesos del esqueleto correspondientes para obtener una animacin correcta. Para evitar futuros problemas de exportacin hay que tener en cuenta: Todos los vrtices de la malla deben estar enlazados a algn hueso. En caso de que esta norma no se siga, se producirn mensajes de advertencia durante la exportacin del modelo. En este modelo todos los vrtices de la malla que no forman parte de la cabeza o cuello se han asignado al hueso del cuerpo para evitar este problema. Generalmente no es problemtico tener un mismo vrtice asignado a ambos huesos; estar afectado por los movimientos de ambos. En este caso y puesto que un hueso permanece fijo, a los vrtices asignados a ambos huesos slo les afectarn los movimientos realizados por el hueso de la cabeza. Esta caracterstica facilita en gran medida la asignacin de vrtices ya que no exige un proceso tan minucioso cuando, como es el caso, se dispone de una enorme cantidad de vrtices.
65
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Comprobacin de movimientos realizados por las articulaciones La asignacin de los vrtices de la malla a los huesos es un proceso vinculado a procesos ms bien artsticos y que, al igual que la mayor parte del modelado, dependen de la pericia del diseador ms que de procesos sistemticos. De esta forma este paso consiste en la visualizacin del movimiento realizado por la articulacin y la deteccin de errores que se hayan podido producir: vrtices mal enlazados por una deformacin incorrecta de la malla, posibles deficiencias en la colocacin general de los huesos, movimientos imposibles debidos a una mala jerarqua de huesos
Estos son algunos de los errores ms comunes que se pueden detectar en este apartado y que obligan a volver al paso anterior, mediante un proceso similar a prueba y error, para conseguir un movimiento lo ms fidedigno posible a una fsica realista.
66
MATERIAL Y MTODOS
Desarrollo de la aplicacin
El siguiente paso consiste en colorear la textura para dotarla de los detalles que se quieren aadir al modelo. Para esta funcin existen multitud de programas de dibujado avanzados que se pueden emplear; sin embargo Blender incorpora un modo llamado Texture Paint que permite pintar la textura UV sobre la malla, de forma equivalente a como en la realidad se pintara una escultura. As a medida que se va coloreando sobre el modelo, se hace la correspondencia con las coordenadas de la textura desplegada y se va obteniendo la textura final.
67
MATERIAL Y MTODOS
Ogre Meshes Exporter
Desarrollo de la aplicacin
Este script permite la exportacin de meshes (mallas) y armatures (esqueletos) a un fichero en formato Ogre (XML / binary mesh). Adems tambin permite exportar: - Mallas con vrtices coloreados, mltiples materiales y texturas UV. - Una gran cantidad de propiedades referidas a los materiales tales como: ambiental, difusa, especular, emisivo... - Animaciones basadas en keyframes enlazadas al esqueleto del modelo. - Animaciones basadas en keyframes asociadas a la colocacin y deformacin de mallas.
Al visualizar la Figura 38 se puede comprobar que se exporta nicamente las mallas seleccionadas en Blender, pudiendo presionar el botn Update para actualizar las mallas que se exportarn. Otras opciones que proporciona la ventana principal son la exportacin de un fichero de materiales. Para esta exportacin se pueden seleccionar las siguientes propiedades: seleccionar color ambiente del modelo o copiar texturas del modelo y, a elegir una entre tres, renderizar materiales, obtener materiales del Game Engine (materiales asociados al motor grfico) o materiales por defecto. Por ltimo nos da la opcin de intercambiar ejes X e Y, nombrar los esqueletos exportados de la misma forma que las mallas y la posibilidad de usar conjuntamente a la exportacin el script OgreXMLConverter. Cabe tener muy en cuenta esta ltima accin: los archivos exportados no se pueden usar directamente en Ogre, necesitan de otro script para convertirlos a archivos .mesh. En este punto existen dos opciones: exportar el modelo seleccionado a .xml y posteriormente usar el script OgreXMLConverter desde una lnea de comandos; o seleccionar en Preferences la ruta del script y permitir que al hacer la exportacin se conviertan de forma automtica. Si se sigue el primer caso y se exportan conjuntamente materiales, esqueletos y mallas se dispone de tres tipos de archivos: archivos .material, archivos .skeleton.xml y archivos .mesh.xml.
68
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Los archivos .material se pueden enlazar de forma automtica con la librera grfica Ogre, mientras que los otros tipos de archivo obtenidos requieren una transformacin previa realizada por OgreXMLConverter.
Como resultado de esta accin, que sera el mismo si se selecciona la segunda opcin comentada al exportar, se obtienen los siguientes tipos de archivos de archivo .skeleton y .mesh que ya se podrn utilizar con la librera Ogre.
Una vez se ha realizado una inicializacin al funcionamiento bsico del script de exportacin a Ogre, se han contemplado tres estrategias de exportacin de mallas: Exportacin ntegra de las mallas y esqueleto del modelo. Exportacin por partes o zonas afectadas por las articulaciones. Exportacin por mallas con distintas texturas.
A continuacin se analiza cada posibilidad comentando aspectos favorables y adversos para su eleccin como forma de exportacin idnea: Exportacin ntegra de las mallas y esqueleto del modelo Para realizar esta exportacin basta con seleccionar todo el modelo y exportarlo con Ogre Meshes Exporter. - Aspectos favorables: o Forma ms simple de exportacin. o No se producen ms archivos que los necesarios para exportar el modelo.
69
MATERIAL Y MTODOS
-
Desarrollo de la aplicacin
Aspectos adversos: o Requiere un paso previo de asignacin de materiales a las mallas. o Los materiales exportados por Blender son muy simples y no responden a aspectos como las sombras o el punto de vista de la cmara; se reducen a colores planos. Se requiere un postproceso de los materiales. o El fichero generado que representa a la malla del modelo tiene un tamao demasiado grande para ser interpretado por el script Ogre Meshes Exporter, ya que genera problemas de memoria.
Exportacin por partes o zonas afectadas por las articulaciones Esta exportacin se divide en dos secciones: exportar en primer lugar la zona del cuello y la cabeza, partes que estn afectadas por el movimiento reproducido; y en segundo lugar exportar el resto de elementos, zonas que permanecen fijas. Para ello basta con seleccionar la zona de la cabeza, actualizar en Ogre Meshes Exporter la zona a exportar y, posteriormente, realizar el mismo proceso para el resto del cuerpo. - Aspectos favorables: o Divisin clara de mallas en ficheros diferenciando los que estarn afectados por el movimiento y los que no. o Se producen pocos ficheros de mallas (uno para la cabeza y otro para el resto del cuerpo). - Aspectos adversos: o Mismos problemas que los comentados en el tipo de exportacin anterior, a pesar de que el fichero de malla tiene un tamao menor al estar dividido. Exportacin por mallas con distintas texturas Esta forma de exportar el modelo se basa en exportar cada malla que disponga de una textura distinta a sus vecinas en un fichero distinto. Para ello se selecciona cada vez la zona que se desea exportar y se actualiza dicha seleccin mediante Ogre Meshes Exporter. - Aspectos favorables: o Divisin por mallas con distintas texturas que permite realizar un postproceso de los materiales ajeno a la exportacin. o Creacin, asignacin y tratamiento sencillo de los scripts de materiales de las mallas. o Enlace de los ficheros .skeleton nicamente a las mallas necesarias que reproducen movimiento. - Aspectos adversos: o Generacin de bastantes ficheros de mallas. o No se distingue entre las mallas que tienen vinculadas un esqueleto y las que no. o Enlace por partes de los materiales al modelo (un enlace por cada malla creada). Por tanto y comprobadas las ventajas e inconvenientes de cada tipo de exportacin, la estrategia elegida para exportar el modelo es una combinacin del segundo y tercer tipos comentados. Con esta eleccin, se obtiene una malla que representa a la cabeza y tendr asociada un esqueleto, y una malla por cada mapeado de textura distinto realizado sobre los elementos fijos del modelo. De esta manera se obtienen cinco archivos .mesh asociados a la cabeza, los brazos, la camiseta, los pantalones y los zapatos respectivamente, y un archivo .skeleton asociado a la malla de la cabeza que contiene los elementos necesarios para permitir el movimiento deseado en el modelo.
70
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Teniendo en cuenta la estrategia de exportacin comentada, nicamente queda definir el resto de parmetros de exportacin en el script Ogre Meshes Exporter, asociados en su gran mayora a la forma de exportacin de los materiales. Los parmetros que permiten exportar las texturas UV implementadas se resumen en seleccionar la opcin de copiar texturas y utilizar el modo de visualizacin Game Engine como base para el renderizado de materiales.
71
Desarrollo de la aplicacin
El motor grfico Ogre permite la manipulacin y tratado de grficos 3D que, generalmente, se han creado mediante modeladores como Blender. Por tanto, para continuar con este apartado se dispone ya de un modelo con una estructura sea predefinida para realizar determinados movimientos que impliquen deformar las mallas creadas. Sin embargo cabe indicar que, aunque no sea el caso del proyecto actual, Ogre tambin otorga la posibilidad de definir el esqueleto del modelo como un paso posterior y ajeno al programa encargado del modelado del mismo.
72
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Por otro lado, en un fichero .skeleton.xml se distinguen los siguientes campos: - Definicin de huesos (<bone>) con su posicin y ngulo de rotacin. - Jerarqua de huesos (<bonehierarchy>).
Nota: Cabe recordar que estos archivos deben ser transformados mediante el script OgreXMLConverter para poder utilizarlos en Ogre de manera directa. Para poder cargarlos, estos archivos se deben incluir en el directorio adecuado de la librera (Directorio_de_Ogre\Samples\Media\models). En este directorio tambin se encuentran otros archivos .mesh y .skeleton creados por defecto al instalar la librera. Con los archivos almacenados en las rutas comentadas, hay que describir la estructura de elementos que permiten la manipulacin de escenas en Ogre. En Ogre existen tres elementos fundamentales a considerar: Entity, SceneNode y SceneManager. Entity o entidad: corresponde a todos los elementos que se pueden dibujar en pantalla. Cualquier modelo, malla u objeto que carguemos es considerado una entidad; sin embargo no son entidades las cmaras, las luces Se puede considerar a las entidades como la abstraccin que representa un objeto en pantalla. Cabe comentar que la posicin y la orientacin geomtrica de las entidades no es una caracterstica de las mismas, estos parmetros son controlados por otra estructura; sin embargo, por ejemplo el material o la textura que cargan s lo es. SceneNode o nodo de la escena: se encargan de las manipular las caractersticas de las entidades. Se trata de una especie de contendores en los que se engloban las entidades, cmaras y luces para modificar sus propiedades. Es posible crear una jerarqua de nodos de la escena ya que un nodo puede ser padre de otro. Como es coherente, la posicin siempre es relativa a la de los nodos padre. SceneManager o controlador de nodos: es el nodo raz de todo lo que se dibuja y tiene que ver en la escena. Siempre se sita como nodo raz en la jerarqua de nodos y, por tanto, a travs de l siempre es posible acceder a cualquier entidad o nodo creado en la escena.
73
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Por tanto y tras la descripcin de estos tres elementos fundamentales, es simple realizar de forma terica una jerarqua de los nodos presentes en la escena del proyecto actual.
SceneManager
SceneNode
SceneNode
SceneNode
Se dispone de tantas entidades como mallas cargadas, teniendo cada una enlazada a un nodo de la escena (puede haber ms de una entidad enlazada al mismo nodo si comparten el mismo patrn de orientacin y posicin geomtrica). Del mismo modo se sigue el mismo procedimiento para las cmaras y para la luz presente en la escena. Otro punto a comentar es el posicionamiento de los objetos en la escena. Este se realiza a travs de la definicin de coordenadas en el espacio de los ejes X, Y, Z. El eje X se define de izquierda a derecha de la pantalla, ubicando su parte positiva a la derecha; el eje Y de abajo hacia arriba de la pantalla, con su parte positiva situada arriba; mientras que el eje Z desde dentro hacia fuera de la pantalla, teniendo su zona positiva hacia fuera.
+ -
Y Z
74
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Ogre, por tanto, emplea lgebra tridimensional para definir la posicin de los objetos. Esto se realiza a travs de vectores, que utilizan la clase interna Vector3, con la definicin de las coordenadas de los tres ejes. Una vez definidos los aspectos previos esenciales para entender la carga de objetos, nicamente se debe utilizar el mtodo createEntity(Nombre de la entidad, "archivo.mesh") para definir la Entity que representa a una malla y, posteriormente, enlazar dicha entidad a un SceneNode mediante el mtodo attachObject(entidad_creada). As ya se dispone de toda la infraestructura necesaria para manipular la posicin, orientacin y dems caractersticas referentes al objeto en la escena. Para no confundir al usuario con las distintas orientaciones que puede tomar la cmara libre de la escena, se ha incorporado unos ejes cuya orientacin est vinculada a la de la cmara de la escena. Estos ejes se encuentran superpuestos a la escena, manteniendo siempre fija su posicin respecto de la ventana de Ogre. Para ello se ha utilizado un elemento llamado Overlay que incorpora Ogre, a la que se le ha aadido la malla con los ejes indicados. Finalmente la carga del modelo completo para el proyecto actual genera la siguiente jerarqua de nodos en la escena: - SceneManager - SceneNode: nodo del cuerpo - Entity: malla de los brazos - Entity: malla de los pantalones - Entity: malla de los zapatos - Entity: malla de la camiseta - Entity: malla de la cabeza - SceneNode: nodo para el resto de elementos de la escena - Entity: malla de la parte inferior de la silla - Entity: malla de la parte superior de la silla - Entity: ejes superpuestos vinculados con la orientacin de la cmara SceneManager
SceneNode
(nodo del cuerpo)
SceneNode
(nodo referencia)
Entity
(ejes superpuestos)
Entity
(mallas de la silla)
Entity
(mallas del modelo)
Cmaras
75
MATERIAL Y MTODOS
2.3.2.2.- Aadir materiales al modelo texturizado
Desarrollo de la aplicacin
Para aadir materiales a un conjunto de mallas, Ogre se basa en el enlace a unos scripts que son cargados una vez se cargan los recursos de la ventana de Ogre. Estos scripts son conocidos como scripts de materiales. Scripts de materiales Los scripts de materiales ofrecen la posibilidad de definir complejos materiales que pueden ser reutilizados de forma sencilla. Los scripts se definen en ficheros ajenos al cdigo de la aplicacin permitiendo, adems de reducir el tamao del cdigo, su utilizacin mediante el empleo de las clases Material y TextureLayer. La carga de estos scripts se realiza cuando los archivos de recursos son inicializados: Ogre localiza en todos los directorios de recursos los archivos .material y permite su utilizacin. Sin embargo cabe comentar que no se cargan completamente con este proceso; nicamente se cargan las definiciones, dejando la carga de texturas y otros recursos para su uso posterior. Esto es debido a que normalmente las libreras de materiales son de gran tamao pero slo se suele utiliza una pequea cantidad de estos en cada aplicacin. Para incluir scripts de materiales propios sin necesidad de cargarlos de forma manual se pueden introducir el archivo correspondiente en el siguiente directorio de Ogre: Directorio_de_librera_Ogre\Samples\Media\materials\scripts. El lenguaje utilizado para definir los scripts de materiales es una especie de pseudo-C++ en los que cada seccin est acotada por llaves ( {, } ) y los comentarios son sealizados con //. Las secciones ms importantes son las siguientes: - material nombre: aqu se especifica el nombre que tendr el material. Debe ser nico puesto que ser la forma de enlazarlo para su utilizacin en Ogre utilizando el mtodo setMaterialName(nombre). - technique: identifica la zona en la que se define el material. Puede haber ms de una zona technique dentro de un material: se identifica la primera como la preferencial y, si se da el caso de que no pueda renderizarla, acudira a las otras definiciones. - pass: cada zona technique puede estar formada por una o mltiples secciones pass. Estas secciones se encargan del renderizado completo del objeto: cada pass con unas propiedades definidas se genera en un tiempo determinado y la combinacin de todas estas secciones producen la composicin del material del objeto. En esta seccin se especifican los valores de color ambiente, difuso, especular o emisivo. - texture_unit: dentro de cada seccin pass se pueden definir las texturas a utilizar. En su interior se pueden incluir propiedades referentes a efectos de las texturas. Esta seccin no es obligatoria para la carga de materiales, pero se emplea en la mayora de definiciones. Adems de las secciones comentadas tambin existe la posibilidad de definir referencias a vrtices, fragmentos de programa y shaders para la creacin de materiales ms complejos. Una vez definida la teora sobre los scripts de materiales, es conveniente explicar su manipulacin para el proyecto actual. Al exportar el modelo 3D desde Blender, se crea de forma automtica un archivo de extensin .material que contiene el enlace de cada uno de los materiales empleados con la informacin de las texturas UV. De esta forma si las texturas UV se aaden a la ruta Directorio_de_librera_Ogre\Samples\Media\materials\textures para que Ogre
76
MATERIAL Y MTODOS
Desarrollo de la aplicacin
pueda acceder a las mismas y el archivo .material generado tambin se coloca en la ruta correcta, la visualizacin de materiales debera ser correcta y visualmente realista. Sin embargo esto no sucede as debido a una consideracin: los materiales aadidos son ajenos a la posicin de la cmara y la luz y, por tanto, se muestran como materiales planos sin sombras. Para solucionar este aspecto es necesario combinar los archivos .material generados de forma automtica con Blender con funciones de los scripts de materiales. Para ello, se ha definido un nuevo mdulo texture_unit dentro de la seccin pass que combina la textura UV definida con una textura a la que afectan los cambios de luminosidad en funcin de la posicin y orientacin de la cmara que permite visualizar el modelo.
Siguiendo este proceso para cada uno de los materiales de los que dispone el modelo, la visualizacin mejora considerablemente ya que es mucho ms realista.
Figura 49: Ejemplo de un archivo .material: material referido a la camiseta del modelo
Figura 50: Modelo con scripts de materiales (izquierda) y sin ellos (derecha)
77
MATERIAL Y MTODOS
2.3.2.3.- Animacin del modelo
Desarrollo de la aplicacin
Este paso se basa en la animacin del modelo que ya se encuentra cargado segn los requisitos del motor grfico de Ogre. En primer lugar debemos leer los datos que permiten realizar la animacin para, una vez almacenados adecuadamente, poder interpretarlos y conseguir un efecto de correlacin entre los movimientos del modelo. Los datos se obtienen de los ficheros de prueba (descritos el apartado 2.2.3) y simplemente hay que almacenarlos en una estructura creada con los siguientes campos: typedef struct{ float fTime; double ang_x; double ang_y; double ang_z; }stAngleMarkTime;
de la medicin X Y Z
Cabe comentar que los datos de los ngulos en los ficheros de prueba se encuentran en grados. Por tanto y con el fin de facilitar clculos posteriores, se ha obtenido y almacenado su equivalencia en radianes mediante el mtodo DegreesToRadians de la clase Math que proporciona Ogre. Una vez se dispone de estos datos el siguiente paso para conseguir una animacin fluida es interpretarlos. Se debe seguir una clculo matemtico que permita combinar los valores de los ngulos en los tres ejes posibles en uno solo movimiento. De esta forma Ogre permite la rotacin de objetos mediante tres rdenes sencillas: pitch, yaw y roll. Estos tres mtodos se basan en proporcionar un determinado giro (respecto al eje X en caso de pitch, eje Y en caso de yaw y eje Z en roll) teniendo como datos de entrada un ngulo y el punto de referencia respecto del cual se produce la rotacin (puede ser local, del mundo o referente al nodo padre). El problema que se encuentra para utilizar estas rdenes es que aunque se combinen, el movimiento se realiza de forma secuencial: primero se gira en el eje X, despus en el eje Y y por ltimo en el Z (el orden es arbitrario). Esto provoca problemas a la hora de conseguir un movimiento realista y fluido; es necesario combinar los tres ngulos.
Pitch
Roll
Yaw
78
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Siguiendo con este razonamiento, es imprescindible describir dos conceptos previos relacionados con la rotacin: la utilizacin de matrices de rotacin y de quaternions (cuaterniones). Las matrices de rotacin permiten, mediante la multiplicacin de las mismas, combinar la rotacin producida en ejes distintos. As disponemos de una matriz de rotacin por cada eje: Rotacin en X:
X Y Z =
1 0 0
0 cos sin
0 -sin cos *
X Y Z
Rotacin en Y:
X Y Z
Rotacin en Z:
cos = 0 -sin
0 1 0
sin 0 cos *
X Y Z
X Y Z =
cos sin 0
-sin cos 0
0 0 1 *
X Y Z
Hay que tener en cuenta que la multiplicacin de matrices no es conmutativa: no es lo mismo A * B que B * A. Por este motivo la multiplicacin debe realizarse en el orden Rotacin_X * Rotacin_Y * Rotacin_Z. Por otra parte, los quaternions o cuaterniones proporcionan una notacin matemtica para representar las orientaciones y rotaciones de los objetos en tres dimensiones. El motivo principal de su utilizacin es que Ogre los emplea para representar rotaciones; sin embargo tienen las siguientes ventajas: - Son ms eficientes y ms estables numricamente que las matrices de rotacin. - Facilitan la modificacin de rotaciones. Al igual que las matrices de rotacin, mediante la multiplicacin de cuaterniones se pueden combinar ngulos de giro. - Evita la alineacin costosa de la deriva de la matriz. Este hecho se produce cuando se tienen una gran cantidad de productos entre matrices debido al redondeo de nmeros reales y pueden provocar anomalas en la rotacin.
79
MATERIAL Y MTODOS
-
Desarrollo de la aplicacin
Interpolacin de rotaciones. Los cuaterniones incorporan dos mtodos de interpolacin: lineal y cbica. La interpolacin lineal realiza un clculo ms eficiente pero no consigue la fluidez de resultados que implementa la interpolacin cbica.
Sin embargo y con el fin de facilitar la creacin de cuaterniones, Ogre permite su generacin a partir de matrices de rotacin mediante el mtodo FromRotationMatrix. El hecho de que tambin incorpore una implementacin de matrices 3x3 (mediante la clase Matrix3) y tenga sobrecargado el operador * para realizar el producto de matrices favorece en gran parte la utilizacin de esta tcnica. Una vez aclarados los aspectos matemticos para el tratamiento de rotaciones en Ogre, el foco de atencin se debe centrar en la implementacin de la estructura o tcnica que permita realizar la animacin deseada. Los datos ya se encuentran organizados y se conoce la forma de interpretarlos, falta un mtodo que permita encapsularlos en un movimiento. La tcnica utilizada es la implementacin de una lnea de tiempo en la que se definen una serie de KeyFrames o fotogramas clave. Los fotogramas clave son eventos o acciones que ocurren en un momento determinado dentro de los lmites de una lnea de tiempo definida. De esta forma en el caso del proyecto actual es simple determinar cmo se emplea esta tcnica: la lnea de tiempo de cada animacin est vinculada al valor de tiempo almacenado en la estructura; mientras que los eventos o acciones que representan los KeyFrames se corresponden al ngulo de giro que debe tener la articulacin del cuello del modelo. En consecuencia se dispone de un intervalo entre los fotogramas clave equivalente a la frecuencia con la que se toman las muestras (0.04 segundos) que Ogre se encarga de interpolar, segn un patrn de interpolacin marcado, con el objetivo de conseguir una animacin fluida.
Tf 0.08
Tf
...
0.0 0.04 0.08
Tf 0.12
Tf 0.04
Teniendo toda la base terica para realizar una animacin, el ltimo paso se centra en vincular la animacin al modelo cargado. Para ello hay que emplear el esqueleto generado en Blender y exportado en el fichero .skeleton correspondiente. Mediante la entidad que define la malla que debe realizar el movimiento es posible obtener el esqueleto mediante el mtodo getSkeleton(). Este esqueleto contiene la definicin de los huesos que forman las articulaciones del modelo, accesibles mediante el mtodo getBone(nombre_del_hueso). En este punto es importante recordar los nombres puestos en Blender a cada uno de los huesos puesto que son
80
MATERIAL Y MTODOS
Desarrollo de la aplicacin
necesarios para realizar su manipulacin, hecho que se produce poniendo a true el mtodo setManuallyControlled(bool) relativo al hueso obtenido. En este momento ya se puede controlar de forma manual el hueso considerado, que en el proyecto actual se trata nicamente del hueso correspondiente a la cabeza. El ltimo paso para finalizar el proceso de creacin de la animacin es vincular el hueso obtenido a una lnea de tiempo dividida en fotogramas clave. En primer lugar se crea la animacin que posee como argumentos un nombre y un tiempo total de reproduccin. En segundo, se permite que el manejador del hueso considerado y el hueso en s sean controlados por la animacin creada a travs del mtodo createNodeTrack(manejador_del_hueso,hueso). En tercero y ltimo, se declara un estado de animacin con un nombre que representa a la misma en el bucle de renderizado. A partir de este momento se rellenan los fotogramas clave: se sitan en un tiempo igual a la frecuencia con la que se obtienen las muestras y tienen un valor obtenido por la multiplicacin de las matrices de rotacin, encapsulado en los cuaterniones correspondientes. Con todos los datos necesarios para generar la animacin, nicamente queda realizar su renderizado en escena para comprobar los resultados. Ogre utiliza un bucle o ciclo de renderizado llamado de forma continua que permite ir actualizando los momentos de animacin (el mtodo startRendering inicia este renderizado). A partir de este momento la funcin a la que se accede y permite el control de parmetros de la animacin (reproduccin de un momento de animacin concreto, modificacin de cmaras y luces) es frameStarted(const FrameEvent &evt). Como se comprueba en la cabecera, este mtodo responde a eventos de frame, es decir, se ejecuta cada vez que un frame est en disposicin de ser renderizado. Por tanto para dar la sensacin de movimiento fluido, se hace variar el momento de la animacin en funcin de estos eventos mediante el mtodo addTime(evt.timeSinceLastFrame) asociado al estado de la animacin declarado de forma previa.
81
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Con el fin de dividir la funcionalidad referida a la carga de recursos de la ventana Ogre y la captura de eventos sobre la misma se ha creado la clase MyFrameListener. En esta clase se incorporan todos los mtodos vinculados a acciones de la interfaz, reproduccin de la animacin y, por supuesto, eventos de teclado. La funcin que representa el ciclo de animacin es el lugar destinado a controlar la pulsacin de teclas, puesto que al ser ejecutada de forma continua, permite una respuesta en tiempo real de los elementos modificables en la animacin. La pulsacin de teclas contemplada se ha implementado con el fin de variar la posicin de la cmara presente en la escena. Aunque esta funcionalidad tambin se incorpora a la interfaz, la facilidad que proporciona el teclado es lo suficientemente atractiva e intuitiva como para considerar su incorporacin. Se ha vinculado funcionalidad a las siguientes teclas:
D, : aumenta coordenada X A, : disminuye coordenada X Q, Re Pg: aumenta coordenada Y E, Av Pg: disminuye coordenada Y S, : aumenta coordenada Z W, : disminuye coordenada Z
W
X
Y Z
S E
Figura 53: Teclas empleadas y sentido en el cambio de posicin de la cmara
82
Desarrollo de la aplicacin
El entorno de desarrollo elegido para implementar la interfaz de usuario y la estructura general del programa es Visual Studio 2005. La facilidad de uso, la incorporacin de buenas herramientas de soporte para el lenguaje C++, la gran cantidad de documentacin y comunidades de que dispone, as como la variedad de plugins desarrollados lo convierten en el entorno de programacin ideal para el proyecto actual. Adems para el desarrollo de la interfaz se ha utilizado un conjunto de clases que facilitan de manera notable y evitan reticencias en el acceso al API de Windows: las clases MFC (Microsoft Foundation Classes).
Tras realizar este paso, ya se dispone de la base de una interfaz con un dilogo principal, un dilogo secundario habitual del tipo Acerca de y de algunos botones por defecto. Adems se implementan de forma automtica las clases y archivos de encabezamiento necesarios para tener una estructura slida sobre la que comenzar a programar los elementos que componen la interfaz. Un aspecto a comentar que proporcionan las clases MFC es la posibilidad de modificar el aspecto de la interfaz mediante un entorno de ventanas. En la vista de recursos de Visual Studio es posible seleccionar el dilogo que se desea modificar y mediante las opciones disponibles en el cuadro de herramientas, aadir algn elemento de forma muy intuitiva.
83
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Adems tras aadir un elemento, en la ventana de propiedades asociada al mismo se puede consultar y modificar sus caractersticas iniciales que se encuentran agrupadas en tres mdulos: apariencia, comportamiento y varios.
La interfaz de la aplicacin est compuesta por los siguientes elementos fsicos: - Botones (ya sean de pulsacin o de marcado alternativo) - Una lista de control - Marcos de grupo - Cuadros de texto - Una barra de reproduccin - Controles mediante flechas - Subventana de la grfica - Subventana de la animacin Esta enumeracin tan general de los componentes que forman la aplicacin se puede jerarquizar de la siguiente forma en funcin de su origen y funcionalidad: Elementos propios de las MFC: Control de archivos cargados o Botones de pulsacin o Lista de control Marco de grupo de cmaras Eleccin de cmaras o Botones de marcado alternativo Variacin de la posicin de la cmara libre o Controles mediante flechas o Botn de pulsacin
84
MATERIAL Y MTODOS
Control del momento de animacin o Barra de reproduccin o Botones de pulsacin Muestra de datos o Cuadros de texto
Desarrollo de la aplicacin
Elementos ajenos a las MFC: Marco de grupo de animacin Animacin 3D o Ventana de Ogre
Grfica con los valores de los ngulos en funcin del tiempo o Elemento de Measurement Studio
En el apartado actual se va a realizar un anlisis de los elementos propios de las clases MFC incluidos. - Control de archivos cargados o Botones de pulsacin: en la aplicacin hay tres botones que se encargan de la gestin de los archivos cargados en el programa: Botn salir: sale de la aplicacin con una ventana de confirmacin slo si hay una animacin cargada. Botn abrir: su pulsacin abre un dilogo de abrir archivo y, si el archivo es vlido, se aade a la lista de control. Botn borrar: elimina de la lista de control los archivos seleccionados, tras mostrar un mensaje de confirmacin. Botn cargar: carga el contenido del archivo y genera la animacin. Para ello la ventana Ogre se inicializa de forma previa. No se permite cargar un archivo si el dilogo de apertura de pruebas est abierto.
Lista de control: contiene informacin de las pruebas que estn en disposicin de ser cargadas en el programa. La informacin a mostrar es la siguiente: Prueba: nombre de la prueba realizando una correspondencia entre el nombre del archivo y la misma, como se indica en el apartado 2.2.3.1 de la memoria actual. Ruta: ruta donde se encuentra el fichero a cargar. Duracin: tiempo en segundos que dura la prueba a cargar. Fecha de modificacin: fecha de modificacin de los ficheros cargados. Este dato permite realizar un seguimiento del mismo paciente pudiendo comparar las fechas en las que se realizaron las pruebas. Cabe comentar que no se han descartado pruebas idnticas, es decir, no se ha omitido la carga de ficheros exactamente iguales siempre y cuando se traten de ficheros vlidos.
85
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Otro aspecto a comentar de la lista de control es que permite la carga de ficheros, adems de mediante la pulsacin del botn cargar, haciendo dobleclick sobre un elemento de la lista de control.
- Eleccin de cmaras o Botones de marcado alternativo: estos botones o Radio-button se caracterizan porque slo es posible mantener presionado uno, dejando sin presionar los dems. Esto permite cargar distintas posiciones de la cmara de visualizacin de la animacin. Se han dispuesto 4 botones que representan cmaras fijas y uno que representa una cmara libre. La correspondencia entre las cmaras fijas y su orientacin es la siguiente: Cmara 1: vista frontal del modelo. Cmara 2: vista trasera del modelo. Cmara 3: vista de la parte derecha del modelo. Cmara 4: vista de la parte izquierda del modelo.
- Variacin de la posicin de la cmara libre o Controles mediante flechas: estos botones o Spin Control permiten variar la posicin de la cmara de forma equivalente a la realizada con el teclado, comentada en el apartado 2.3.2.4. Se dispone de tres controles, uno por cada uno de los ejes (X, Y, Z). Estos controles slo estarn activos si la cmara dispuesta es la cmara libre.
Botn de pulsacin: este botn permite devolver a la cmara libre a su posicin por defecto (vista central del modelo). Como es coherente, slo estar disponible si est activa la cmara libre.
- Control del momento de animacin o Barra de reproduccin: la barra de reproduccin o Slider Control permite variar el momento de reproduccin actual. Funciona de forma
86
MATERIAL Y MTODOS
Desarrollo de la aplicacin
equivalente a cualquier reproductor de vdeo: la variacin de su punto de reproduccin est sincronizado con el momento de la animacin cargada. Adems tambin est sincronizado con el cursor de reproduccin de la grfica y los cuadros de texto con informacin del tiempo y los ngulos. Cabe comentar tambin la posibilidad de interactuar con este control mediante la rueda del ratn: aplicar un giro a la rueda, modifica la posicin del punto de reproduccin de la barra.
Botones de pulsacin: estos botones permiten interactuar con el momento de animacin mediante los clsicos eventos de reproduccin, rebobinado, pausado, reiniciado y finalizacin (play, rewind, pause, reset y final). Facilitan en gran medida obtener el momento de reproduccin deseado.
- Muestra de datos o Cuadros de texto: se utilizan para mostrar informacin relativa a la animacin actual: tiempo de animacin y valores de los ngulos en los tres ejes X, Y, Z.
87
MATERIAL Y MTODOS
Desarrollo de la aplicacin
En caso contrario, se obtiene un mensaje con el directorio en el que se cargan los archivos y el nmero de archivos que se van a aadir a la lista de control.
Cabe tener en cuenta que si se realiza una seleccin mltiple, nicamente se muestra el nmero de archivos vlidos que se aaden a la lista de control, junto al ya nombrado directorio de los mismos.
Borrado de pruebas La aplicacin permite seleccionar mltiples pruebas para eliminarlas todas a la vez. Para comprobar que no se trata de un error del usuario, siempre se muestra un mensaje con el nmero de pruebas a borrar pidiendo la confirmacin del usuario.
Figura 67: Mensaje obtenido al intentar borrar pruebas del list control
En el caso de que la prueba a borrar est actualmente en carga, tanto la animacin como la grfica vuelven a un estado inactivo. Del mismo modo el resto de elementos de la interfaz asociados a la manipulacin de la animacin, tambin deshabilitan su estado.
88
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Inicializacin de la ventana de Ogre Supone la carga de recursos iniciales para poder generar la ventana. Con tal fin, se realiza la siguiente secuencia de pasos: - Cargar la configuracin inicial obtenida tras instalar la librera de Ogre mediante la lectura del fichero resources.cfg. - Definir las opciones de renderizado de que dispondr la ventana. Se han contemplado las siguientes: o Utilizar Direct3D9 Rendering Subsystem como sistema de renderizado. o No reproduccin a pantalla completa. o Resolucin 800x600 con color de 32 bits. o Sin tcnica de antialiasing. o Emplear la tarjeta grfica mostrada en al archivo resources.cfg. - Crear la ventana fsicamente. Para ello es necesario el manejador de la ventana principal de la aplicacin con el fin de establecer la ventana Ogre como ventana hija de la misma. Adems se establece el tamao y la posicin respecto a su ventana padre, eligiendo un tamao de 400x300 y situndola aproximadamente en la parte inferior izquierda. - Inicializar recursos de grupo. - Crear elementos bsicos de la escena como el controlador de nodos, una cmara y un punto de vista. - Inicializar eventos de entrada de teclado. Este proceso tambin precisa del manejador de la ventana principal con el fin de asociar dichos eventos de entrada de teclado a la misma. - Carga de las entidades y nodos que componen el modelo. Aunque se carguen estos elementos, el modelo no es visible hasta que no se ejecute el bucle de renderizado de la animacin. Esto permite que posteriormente sea menos costoso ejecutar una animacin ya que el modelo se encuentra cargado de forma previa. Este proceso de inicializacin se realiza nicamente la primera vez que se carga el programa ya que ser la base que posteriormente se emplea para soportar las distintas animaciones que se pueden cargar.
89
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Carga de la animacin con el modelo 3D Para continuar con este proceso, se dispone de un archivo vlido mostrado en la lista de control. Al realizar su carga para mostrar la animacin, se producen de forma interna los siguientes procesos: - Lectura del fichero seleccionado y guardado en la estructura correspondiente. - Carga de la grfica con los datos almacenados en la estructura. - Se activan todos los elementos que pueden interactuar con la animacin (botones, barra de reproduccin, flechas). - Inicializacin de valores de elementos de la interfaz (rango de la barra de reproduccin, valores de los cuadros de texto). - Creacin de la animacin: o Cada animacin posee un nombre distinto. o Clculo de los quaternions y matrices de rotacin que permitirn realizar el movimiento. - Inicializacin de eventos de entrada de la ventana. - Actualizacin de los valores inicial y final de la animacin de Ogre en funcin de los cursores lmite de la grfica. - Activacin de la cmara libre. - Iniciacin del bucle de renderizado que permite cargar el modelo y la animacin. Cabe comentar que si ya haba una animacin cargada de forma previa, se realiza de anteriormente al proceso comentado una liberacin de recursos necesaria para no sobrecargar la aplicacin. Esta liberacin elimina todos los datos de la animacin antigua, los posibles eventos que pudiera tener en cola y toda inicializacin de eventos de entrada asociados a dicha animacin.
Otro aspecto a tener en cuenta es que nicamente se debe seleccionar un archivo de la lista para cargarlo. En caso contrario, se avisa al usuario mediante un mensaje informativo.
90
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Adems, mediante la seleccin de los mismos se proporciona una descripcin de su funcionamiento, facilitando esto en gran medida la eleccin de mtodos a utilizar para la aplicacin:
91
MATERIAL Y MTODOS
Desarrollo de la aplicacin
La clasificacin de los eventos tratados atendiendo a su funcionalidad es la siguiente: Carga de pantalla: corresponden a eventos relacionados con el aspecto y el funcionamiento de la ventana principal. En el proyecto actual se ha incluido un evento que permita la carga de colores sobre algn elemento de la pantalla (en este caso los cuadros de texto con los valores X, Y, Z) y se ha tratado el cierre de la ventana principal para asegurarse de cerrar tambin la subventana de Ogre. Control de botones: este tipo de eventos son los ms habituales. Se ha tratado la pulsacin en todos los botones de la pantalla y se ha aadido la funcionalidad correspondiente a cada uno. Control de barra de reproduccin: para la barra de reproduccin se han tenido en cuenta las pulsaciones en la misma y las acciones de pinchar y arrastrar el momento de reproduccin, actualizando consecuentemente toda informacin que se refiera a ese momento de reproduccin. Temporizador: se ha aadido un temporizador al proyecto que tiene tres funciones principales: o o o Actualizar de forma coherente la barra de reproduccin y el cursor de animacin de la grfica en funcin del momento de reproduccin. Cambiar el modo en el que se encuentra la grfica para capturar eventos. Capturar movimientos rpidos del usuario para entrar en modo de cambiar orientacin de la cmara. Esto se debe a que en ocasiones la funcin OnMouseMove que se encarga de detectar el movimiento del ratn no se actualiza lo suficientemente rpido como para detectar la entrada a la ventana de Ogre.
Control del ratn: teniendo en cuenta lo comentado en el temporizador, se ha aadido una funcionalidad para interpretar el pinchado y arrastrado en la ventana de Ogre a la variacin de la orientacin de la cmara de la animacin y, en consecuencia, de los ejes superpuestos vinculados con la orientacin de sta. Esta funcionalidad se ha incorporado al mtodo OnMouseMove, que es ejecutado cada vez que se desplaza el ratn. La equivalencia entre dicho movimiento y el cambio de orientacin de la cmara se realiza de la siguiente forma: o Si el ratn se encuentra en la posicin de la ventana de Ogre, se capturan eventos de ratn y se centra el foco en dicha ventana. o Si no es la primera vez que se llama al mtodo, se calcula la diferencia de posicin del ratn entre la ltima vez que se ejecut y la actual. o En caso de pulsarse el botn izquierdo del ratn se enva dicha diferencia de posicin a una funcin creada en Ogre para modificar la orientacin de la cmara.
92
MATERIAL Y MTODOS
Orientacin original
Desarrollo de la aplicacin
Otro evento vinculado al control del ratn es el manejo de la rueda del mismo. Se ha incorporado una doble funcionalidad atendiendo a la posicin en la que se encuentra el ratn en la ventana: o Si se encuentra sobre la subventana de Ogre, se modifica la posicin de profundidad de la cmara. o En caso contrario, se modifica el momento de animacin de la reproduccin actual. Interaccin con la grfica: la grfica incorporada permite interactuar con la misma variando tanto el momento de animacin como el rango de reproduccin de la misma. NOTA: Cualquier evento relacionado con la grfica se explica de forma ms detallada en el punto 2.3.3.5.
Esta clasificacin atiende a todos los eventos que se capturan en la interfaz; sin embargo, para los eventos que interaccionan con la animacin es preciso realizar un enlace entre los mdulos de la interfaz y los de Ogre (estructurados en el punto 2.2.1 de la memoria actual). Este proceso se realiza a travs de vincular los mtodos adheridos a la interfaz descritos previamente con un objeto de la clase COgreApplication, que a su vez incorpora un objeto de la clase MyFrameListener en el que se incluyen los mtodos para controlar dichos eventos (en la Figura 17 asociada al apartado 2.2.2 se puede comprobar de forma grfica este funcionamiento). NOTA: en el apartado 2.2.2.1 se realiza una descripcin general de los los mtodos asociados a las clases MyFrameListener y COgreApplication.
93
MATERIAL Y MTODOS
2.3.3.5.- Measurement Studio
Desarrollo de la aplicacin
La animacin en 3D del modelo proporciona una visin general y relativamente subjetiva de las pruebas obtenidas a los pacientes; es necesaria una representacin de los datos que pueda ser estudiada de forma ms objetiva. Este es el motivo principal por el que se ha incorporado una grfica a la aplicacin. Para ello se ha elegido el conjunto de clases incorporadas en el paquete Mesurement Studio debido a su fcil integracin con el entorno de programacin en el que se ha realizado el proyecto y las posibilidades que dichas clases proporcionan. Tras realizar la instalacin del paquete, se incorporan de forma automtica los elementos referentes a Measurement Studio al cuadro de herramientas.
A tener en cuenta es que los elementos de Measurement Studio no soportan la codificacin Unicode con la que se crean los proyectos en Visual Studio por defecto. Cuando se agrega las clases para poder incorporar un elemento de este tipo se muestra un cuadro de dilogo para permitir la modificacin de la codificacin del proyecto.
El cambio principal que supone este cambio de codificacin en el proyecto actual es la variacin para realizar la conversin entre algunos de cadenas y el ligero cambio de aspecto que muestran algunos elementos de la interfaz.
Representacin de valores Realizada la inicializacin comentada del paquete Measurement Studio, ya es posible agregar el elemento empleado para realizar la grfica que represente el cambio de valor de los ngulos en los tres ejes en funcin del tiempo: CWGraph Control.
94
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Los elementos de tipo CWGraph Control poseen una amplia gama de propiedades y eventos que permiten bastante interactividad. Es posible controlar sus propiedades iniciales, al estilo de cmo se comenta en el apartado 2.3.3.1, y sus eventos, de la misma forma que en el punto 2.3.3.4, pero incorpora una novedad respecto del resto de elementos de la interfaz: una ventana de propiedades independiente y personalizada que nos muestra toda la informacin de configuracin de la grfica.
A travs de esta ventana es posible cambiar el estilo de la grfica, los ejes, los cursores, aadir anotacionesentre otras muchas caractersticas. En el proyecto actual se ha considerado agregar los siguientes componentes a la grfica: - 3 trazos que representen al valor de los ngulos X, Y, Z. - Dos cursores entre los cuales se indica el rango de reproduccin de la animacin. - Un cursor acorde al momento de reproduccin de la animacin. - Una regin delimitada entre ambos cursores indicando la zona de reproduccin activa. - Leyendas reflejando los datos mostrados en ambos ejes, as como las unidades en las que se representan. Tras establecer esta configuracin inicial en la grfica, se debe programar dichos componentes para que representen tanto los datos obtenidos de las pruebas como para que se coordinen con el momento de animacin y el resto de elementos agregados a la interfaz. El proceso para representar los datos de los ngulos en los tres trazos tiene como base los datos guardados en la estructura de marcadores. Se accede a estos datos y se separan en 4 vectores independientes: un vector para tiempos y los otros tres para los valores de los ngulos en X, Y, Z. Posteriormente y con el fin de que el elemento CWGraph Control pueda interpretar los mismos, se realiza una conversin entre estos vectores de tipo double y una clase propia del elemento de Measurement Studio: CNiReal64Vector.
95
MATERIAL Y MTODOS
Desarrollo de la aplicacin
El ltimo paso para representar los trazos es considerar como eje de abscisas el vector de tiempos y como eje de ordenadas los tres vectores con los valores de los ngulos. Con esta descripcin ya se dispone de la base que forma la grfica; sin embargo hay que considerar la programacin de otros componentes como los cursores y la regin activa. Programacin de cursores En la grfica se distingue dos tipos de cursores: cursores para limitar el rango de reproduccin y un cursor que representa el momento de animacin (de colores amarillo y blanco respectivamente). La representacin de los cursores que limitan el rango de reproduccin se puede considerar trivial: el cursor izquierdo se sita en el instante inicial de reproduccin (por defecto 0.0 segundos) mientras que el cursor derecho se coloca en el ltimo dato de tiempo que presenta la prueba almacenada (vara en funcin de la duracin de la prueba). Un aspecto a considerar que facilita la representacin de estos cursores es que la grfica es de tipo autoescalable, es decir, que ante unos datos de entrada ajusta de forma automtica los ejes de representacin para mostrar la informacin de la forma ms clara posible. Por otra parte, el cursor que representa el momento de animacin en la grfica requiere un seguimiento mayor de la ejecucin del programa: debe actualizar su posicin ante cualquier cambio de reproduccin del momento de animacin actual. Por tanto cualquier evento lanzado por la barra de reproduccin tiene su repercusin en este cursor de animacin, al que se obliga a actualizar su posicin. Programacin de la regin activa La regin de reproduccin activa se seala en la grfica mediante un fondo negro, mientras que la zona de reproduccin inactiva est sealada con un fondo gris. Este efecto se programa en la grfica a travs de anotaciones. Las anotaciones permiten aadir a la grfica multitud de elementos tales como texto, dibujos, fondos y tienen una gran cantidad de caractersticas modificables. Por tanto se trata de una anotacin en la que se establece el tamao de representacin a travs de dos valores en X y dos valores en Y. De esta forma es trivial idealizar de forma terica su representacin: los valores del eje Y corresponden al tamao de representacin de la grfica, mientras que los valores en el eje X corresponden a los cursores que limitan el rango de reproduccin.
Capturar eventos de la grfica Uno de los motivos por los que se han elegido las clases incorporadas por el paquete de Measurement Studio para la representacin de la grfica es la interactividad que permiten sus elementos. El elemento CWGraph Control incorpora una gran cantidad de eventos que es posible capturar y manejar para obtener un comportamiento deseado ante una accin del usuario.
96
MATERIAL Y MTODOS
Desarrollo de la aplicacin
Las posibles interacciones con CWGraph Control que incorpora la aplicacin se resumen en: - Pinchar y arrastrar los cursores que delimitan el rango de reproduccin de la grfica. - Pinchar y arrastrar el cursor de animacin. - Pinchar en alguna zona de la grfica ajena a los cursores. La principal dificultad para implementar las tres funcionalidades de manera simultnea es el modo en el que se configura el elemento CWGraph Control: dispone de una opcin que permite seleccionar el tipo de eventos a los que es sensible.
Se distinguen cuatro modos fundamentales de seleccin de eventos: - Cursors: nicamente es sensible a eventos de pinchado y arrastrado de cursores. - Pan & Zoom Events: eventos relacionados con el cambio de profundidad y tamao de las grficas. - Plot Area Events: sensible a eventos de ineraccin del ratn en la grfica (no considera modificacin de cursores).
97
MATERIAL Y MTODOS
-
Desarrollo de la aplicacin
Plot & Cursor Events: considera los eventos controlados por Plot Area Events y los eventos de pulsacin sobre cursores (no incluye eventos para controlar la pulsacin y arrastre de cursores).
Por tanto, el modo de actuar para conseguir una respuesta satisfactoria ante las tres funcionalidades de manera simultnea es variar entre los modos Cursors y Plot Area Events en funcin de la situacin del ratn en la grfica. Cuando el ratn se sita sobre un cursor el modo de seleccin de eventos es Cursors, mientras que en cualquier otra posicin el modo de seleccin es Plot Area Events. Cabe comentar que con el fin de facilitar la manipulacin de los cursores, se ha considerado un rango de accin vinculado a la posicin de los mismos con el fin de no tener que pulsar exactamente en el centro del cursor deseado para seleccionarlo. Teniendo en cuenta estos aspectos, se va a realizar un anlisis de cada una de las funcionalidades implementadas distinguiendo la relacin con el comportamiento de otros elementos de la interaz, as como comportamientos no deseados considerados en los mismos. Pinchar y arrastrar sobre cursores que delimitan el rango de reproduccin Cambiar el rango de reproduccin de la animacin afecta a los momentos inicial y final de reproduccin de la animacin. Estos cambios tienen una repercusin en los siguientes elementos: - En la animacin en s ya que mediante los botones de reproduccin nicamente se puede acceder a este rango delimitado. - La barra de reproduccin debe modificar su dispocin para actualizar su tamao total al nuevo rango definido por estos cursores de la grfica. - La regin activa modifica su tamao en funcin de la posicin que adopten ambos cursores. - En caso de que alguno de los cursores supere al cursor de animacin dejndolo en una posicin de regin inactiva, el cursor de animacin vara su posicin de forma equivalente al cursor que se est modificando. Un comportamiento no deseado al modificar este tipo de cursores es que se intenten intercambiar de posicin, es decir, que el cursor izquierdo intente colocarse en una posicin temporal mayor que el cursor derecho o viceversa. Este comportamiento muestra un mensaje de error advirtiendo al usuario y coloca la disposicin de los cursores por defecto: el cursor izquierdo en el momento inicial de animacin, el cursor derecho en el final y el cursor de animacin al comienzo de la misma.
98
MATERIAL Y MTODOS
Pinchar y arrastrar el cursor de animacin
Desarrollo de la aplicacin
Esta accin cambia el momento de reproduccin de la animacin y, en consecuencia, afecta a los siguientes elementos de la interfaz: - A la animacin en s puesto que vara la posicin temporal de la animacin, actualizndose consecuentemente los movimientos del modelo. - La barra de reproduccin ya que est correlacionada con este cursor: un cambio en uno de estos dos elementos y el otro refleja la misma modificacin. - La informacin mostrada por los cuadros de texto con los datos del tiempo y los valores de los ngulos. Un comportamiento no deseado tratado es la modificacin de la posicin del cursor de animacin a una posicin perteneciente a la regin inactiva. En caso de superar este rango de reproduccin, el cursor de animacin permanece fijo en la misma posicin en la que se encuentra el cursor lmite superado. Pinchar en alguna zona de la grfica ajena a los cursores Este evento desplaza el momento de animacin representado a la zona de tiempo de la grfica en la que se haya pulsado el botn izquierdo del ratn. Esta accin esta relacionada con los siguientes elementos de la interfaz: - La animacin se actualiza dependiendo del momento de animacin en el que se pulse sobre la grfica. - El cursor de animacin se sita en el tiempo correspondiente a la posicin en la que se haya pulsado sobre la grfica. - La barra de reproduccin se actualiza de forma equivalente al cursor de animacin. - Los valores de los cuadros de texto se actualizan tambin en funcin del momento de animacin mostrado. Un comportamiento no deseado se produce al pulsar sobre una zona correspondiente a una regin inactiva. La respuesta de la aplicacin es situar el cursor de animacin en la misma posicin del cursor lmite ms cercano, evitando esta situacin anmala.
99
RESULTADOS Y DISCUSIN
100
RESULTADOS Y DISCUSIN
101
RESULTADOS Y DISCUSIN
Rotacin: la prueba de rotacin mostrada presenta un comportamiento funcional normal. Se caracteriza por presentar una gran variacin en el valor del ngulo referido al eje Y, adems de por unas pequeas ondulaciones continuas en los valores de los ngulos referidos a los ejes X y Z.
Flexin lateral: la flexin lateral o lateralizacin mostrada se produce dentro de los rangos catalogados como normales. Adems se acompaa de un sistemtico ngulo menor de rotacin tpico al pretender realizar el gesto de la forma ms amplia posible, hecho que proporciona detalles de que no posee ninguna afeccin visible en este movimiento.
102
RESULTADOS Y DISCUSIN
Prueba funcional 1: la grfica mostrada para esta prueba funcional no presenta ningn ndice que permita identificar una afeccin. Esta prueba se caracteriza por una variacin hacia valores positivos de los ngulos en los tres ejes en un primer momento, seguida de una variacin fundamental en el eje X y de un retorno a la posicin original.
Prueba funcional 2: la grfica dispuesta para este tipo de prueba funcional posee un comportamiento funcional normal. Esta prueba se caracteriza por presentar una variacin positiva del valor del ngulo referido al eje X, seguida de una variacin negativa y mantenida del mismo y de su retorno a la posicin original. Los valores de los ngulos de los otros ejes permanecen constantes durante toda la prueba.
103
RESULTADOS Y DISCUSIN
Prueba fucional 3: la grfica mostrada a continuacin que refleja la informacin obtenida en este tipo de prueba funcional presenta unos parmetros calificados como normales. Sus caractersticas bsicas son, en un primer momento, unos valores de los ngulos elevados y con signo negativo para el eje Y, al igual que para el eje Z aunque con un valor mucho menor, acompaado de una ligera extensin. A continuacin se produce un movimiento de flexin pronunciado acompaado de una rotacin hacia valores positivos, seguido de un retorno a la posicin origen.
Si se desea comprobar las animaciones para cada uno de estos movimientos, se pueden localizar en los archivos incluidos en la carpeta llamada Paciente 1: - Flexo-extensin: angulos_2.txt - Rotacin: angulos_6.txt - Flexin lateral: angulos_3.txt - Prueba funcional 1: angulos_9.txt - Prueba funcional 2: angulos_8.txt - Prueba funcional 3: angulos_7.txt A continuacin se va a realizar una comparacin entre los datos mostrados y los obtenidos en otros pacientes que presentan algn tipo de anomala en las pruebas. NOTA: Al visualizar las grficas mostradas hay que recordar que disponen de un sistema autoescalable para apreciar mejor pequeos cambios en los valores de los ngulos.
104
RESULTADOS Y DISCUSIN
Pacientes con movimientos anmalos
Paciente 3: este paciente no puede realizar de forma correcta ninguna de las pruebas mostradas. Los movimientos mostrados estn muy limitados y, comparndolo con las grficas del paciente sano, se puede comprobar que existe un dficit completo de movilidad cervical.
Figura 88: Comparacin de flexin lateral entre paciente 3 (izqda.) y sano (dcha.)
105
RESULTADOS Y DISCUSIN
Paciente 4: este paciente no realiza un movimiento de laterizacin vlido. Esto se puede deber a que en el momento de la grabacin de la prueba no entendi el gesto que deba realizar para hacer la flexin lateral, ya que el resto de pruebas presentan un comportamiento perfectamente correcto.
Figura 89: Comparacin de flexin lateral entre paciente 4 (izqda.) y sano (dcha.)
Paciente 6: este paciente tiene una gran flexibilidad: todos los movimientos son de una gran amplitud y los realiza de manera muy rpida, fijando muy bien cada uno de los tiempos. Adems el hecho de que en las pruebas de rotacin realice un rebote final es compatible con que disponga de una potente musculatura cervical.
106
RESULTADOS Y DISCUSIN
Paciente 7: viendo las grficas y la animacin de este paciente se identifican dos problemas de distinta ndole: el primero, es que tiene limitada la lateralizacin hacia su parte izquierda; y el segundo, es que posee una laxitud excesiva.
Figura 91: Comparacin de flexin lateral entre paciente 7 (izqda.) y sano (dcha.)
Paciente 9: este paciente tiene limitaciones en los movimientos visibles en gran parte de las pruebas. La flexin, la rotacin, el gesto realizado en la segunda prueba funcional son algunos de los movimientos en los que se detecta esta deficiencia. Este conjunto de sntomas, es compatible con un paciente cervicoartrsico.
107
RESULTADOS Y DISCUSIN
Paciente 11: las pruebas realizadas a este paciente tienen, por lo general, un movimiento funcional bastante correcto. Sin embargo el hecho de que alguna de ellas no tenga un patrn constante posibilita encasillar a este paciente como un posible simulador de una dolencia.
Las animaciones correspondientes a todos los pacientes estudiados se encuentran en la carpeta Pacientes que contiene subcarpetas con la informacin de cada uno de los pacientes, y son accesibles a travs de la ejecucin del proyecto presentado. Las consideraciones realizadas en este apartado se pueden confirmar de forma objetiva introduciendo dichos pacientes en la aplicacin NedCervical/IBV, ya que es el programa encargado de establecer los parmetros de normalidad y compararlos cada una de las pruebas.
108
CONCLUSIONES
4.- Conclusiones
La sociedad de hoy en da necesita, cada vez ms, un apoyo de la tecnologa acorde a las nuevas ideas y pretensiones que la misma propone e impone. Los estudios cientficos ya no se conciben sin la presencia de un ordenador y cada vez se realizan programas y funciones ms automatizadas, que se adaptan a unas condiciones o datos de entrada y generan unos resultados vlidos sin la presencia de un ser humano al cargo de los mismos. Este desarrollo conceptual se est extendiendo a la mayora de mbitos posibles: sanidad, educacin, deporte con el fin ltimo de facilitar las tareas y clculos, as como otorgar la posibilidad de realizar estas gestiones de manera ms eficiente y, por tanto, con un grado de progreso mayor. Dentro de este gran compendio de mbitos, la aplicacin descrita en esta memoria se sita en una temtica cercana a la sanidad y medicina de forma muy general, y realizando una clasificacin ms minuciosa, dentro de la estructura que compone la valoracin funcional. Uno de los grandes problemas a los que hace frente la valoracin funcional es la necesidad de intentar objetivar un diagnstico ante unos resultados obtenidos mediante medidas precisas. Para ello el proceso seguido realiza, entre otros clculos, una comparacin entre las medidas obtenidas en pacientes sanos y los pacientes que son objeto de estudio. Esta comparacin requiere la disposicin de una enorme base de datos con pacientes de todo tipo y muy diversificados, ya que slo es posible establecer unos parmetros como pertenecientes a un rango de normalidad en el caso de que la poblacin estudiada sea lo suficientemente heterognea como para definir unos comportamientos medios o de referencia. Este clculo estadstico y matemtico se muestra, en su mayora, en forma de grficas y datos numricos. La ventaja fundamental para mostrar de esta manera la informacin es el hecho de disponer unos resultados discretos ajenos a cualquier tipo de subjetividad asociada a una apreciacin de un diagnstico. Sin embargo esto que al principio se puede clasificar como una gran ventaja, en algunas ocasiones tiene un efecto contraproducente: aleja al valorador o mdico encargado de realizar un diagnstico de una apreciacin subjetiva de la afeccin fsica del paciente, adems de obligarle a comprender todos los datos que se le muestran para que realmente sirvan de apoyo para obtener una etiologa correcta. La aplicacin desarrollada ataca directamente este posible problema: intenta otorgar al mdico valorador de una perspectiva mucho ms amigable, alejada de los datos numricos, que toma cuerpo en una animacin en tres dimensiones obtenida a travs de las pruebas realizadas al paciente tratado. As en cualquier momento se puede consultar dicha animacin para comprobar in situ cualquier aspecto relacionado con el movimiento realizado en la prueba. Sin embargo, esto puede llevar a pensar que una animacin 3D no aporta muchas ms ventajas que las que puede aportar una grabacin en vdeo de la prueba: nada ms lejos de la realidad. El problema de una grabacin en vdeo es que la nica interactuacin que se puede realizar en ella es la variacin del momento de reproduccin de la misma. Es posible rebobinar, reproducir fotograma a fotograma, pausar la reproduccin para fijarse en algn detalle determinado entre otras acciones similares. En contraposicin, una animacin en tres dimensiones, adems de incorporar todas las interactuaciones de las grabaciones de vdeo, aade una variable ms: la posibilidad de modificar la posicin y orientacin espacial de la
109
CONCLUSIONES
cmara encargada de visualizar la animacin. Este hecho, sin lugar a dudas, es de gran utilidad ya que permite obtener el punto de vista idneo de cada uno de los movimientos facilitando en gran medida la apreciacin de cierta deficiencia en algn gesto. Adems el hecho de incorporar esta animacin 3D, aparte de resultar tremendamente til en el proceso de valoracin, proporciona cierta dosis de modernidad y actualidad al programa actual. La mayora de programas y aplicaciones de xito en la actualidad incorporan una interfaz con componentes en tres dimensiones que la hacen muy atractiva para el pblico. Aunque suene algo trivial e incluso simple, el 3D est de moda. Otro aspecto en el que actualmente tambin se est aplicando especial incidencia en la programacin es el concepto de usabilidad. Los programas y aplicaciones desarrollados en la actualidad no deben exigir un aprendizaje previo para darles una utilidad prctica a nivel de usuario. Por ello las interfaces pretenden ser muy intuitivas y de fcil manejo y comprensin, hecho que se ha tenido en cuenta para la realizacin del proyecto actual ya que el destinatario del mismo no tiene porqu poseer conocimientos informticos avanzados. Por tanto y teniendo en cuenta todos los aspectos comentados, el proyecto realizado, considerado como una estructura global, responde a los objetivos marcados en el mismo y puede tener una gran aplicacin en el mbito de la valoracin funcional de cervicalgias. Se trata de un producto que responde a una demanda o carencia en los sistemas de valoracin estudiados a los que proporciona una solucin.
Trabajo futuro A pesar de considerar la aplicacin como un producto cerrado e independiente, tiene varios frentes de trabajo abiertos para su perfeccionamiento en un futuro cercano. Como se ha comentado en el origen del trabajo, la aplicacin surge ante la carencia que presenta un programa de valoracin funcional de cervicalgias (NedCervical/IBV). En consecuencia, la integracin con dicho programa es una de las vas que puede mantener vivo el desarrollo del proyecto explicado en la memoria actual ya que, de esta forma, se formar una aplicacin para la valoracin funcional con las ventajas de ambos proyectos y disminuyendo las limitaciones que ambos presentan. Otra fuente de trabajo en un futuro est vinculada a la mejora visual, tanto de la animacin 3D como de la interfaz. La funcionalidad sera la misma que en el programa mostrado, pero incorporar un modelo mucho ms realista (quiz con unos polgonos ms suavizados) puede mejorar sensiblemente el aspecto de la aplicacin final. En el lookandfeel o aspecto de la interfaz general tambin se puede incidir para lograr una aplicacin final ms innovadora, aunque en el diseo de la interfaz se ha intentado seguir la lnea de diseo de las aplicaciones tpicas de Windows ya que es el sistema operativo ms extendido en la actualidad para ordenadores personales.
110
BIBLIOGRAFA
CERVICALGIAS Y VALORACIN FUNCIONAL:
- INSS (Instituto Nacional de la Seguridad Social), Ministerio de Trabajo e Inmigracin. Tiempos estndar de incapacidad Temporal. 2009. pg.:1-7, 66. - Jos Paz Jimnez, Miguel ngel Belmonte Serrano, Formacin continuada de la SECOT y de la SER. Monografas mdico-quirrgicas del aparato locomotor. Cervicobraquialgia. 2000. pg: 1-12. - Enrique Viosca Herrero, Jaime Prat Pastor, Carlos Soler Gracia, M Francisca Peydro de Moya, M Jos Vivas Broseta, Carme Gimeno Moll, Javier Snchez Lacuesta, IBV (Instituto de Biomecnica de Valencia). Valoracin Funcional. 2004. - Revista Consumer, Cervicalgias: sobrecargas musculares, la causa ms habitual. Octubre 2003 [Visitado: 28/01/10] http://revista.consumer.es/web/es/20031001/salud/ - DMedicina, Advierten del cambio en causas de baja laboral. 19 de Junio de 2002 [Visitado: 28/01/10] http://www.dmedicina.com/enfermedades/musculos-yhuesos/actualidad/advierten-del-cambio-en-causas-de-baja-laboral - Compendio de Artculos publicados en el THMJ, Monogrfico sobre salud cervical de la task forc al efecto de la THMA. 1998 [Visitado: 29/01/10] http://www.txoriherri.com/cervical.htm - Dolores Jimnez-Pea Mellado, Joaquina Ruiz del Pino, Silvia Hazaas Ruiz, Melchor Conde Melgar, Elena Enrquez lvarez. Traumatologa del raquis: cervicalgias y lumbalgias. [Visitado: 29/01/10] http://www.medynet.com/usuarios/jraguilar/Manual%20de%20urgencias%2 0y%20Emergencias/cervilum.pdf - Carlos Albadalejo CAP Llefi, Unidad Docente de Medicina Familiar y Comunitaria (Badalona). Cervicalgia. Noviembre 2007 [Visitado: 29/01/10] http://www.medicinageriatrica.com.ar/viewnews.php?id=EEAukEVFllUlajWafj - Bartolom Llor Esteban, Mariano Garca Izquierdo, Aurelio Luna Maldonado. Variables psicosociales y de personalidad asociadas a la cervicalgia recurrente. 2006 [Visitado: 29/01/10] http://dialnet.unirioja.es/servlet/articulo?codigo=2594927
ANTECEDENTES TCNICOS:
- Grupo de informtica grfica, Universitat Jaume I. Motores de juegos. Modelado multirresolucin en juegos por ordenador [Visitado: 29/01/10] http://ima.udg.edu/iiia/GGG/TIC2001-2416-C03-01/docs/EnginesUJI.pdf - Pgina oficial de Autodesk. [Visitado: 29/01/10] http://www.autodesk.es/adsk/servlet/home?siteID=455755&id=458320
111
OGRE 3D:
- Gregory Junker, Founder/Lead Developer of OGRE 3D. Pro OGRE 3D Programming. 2006. - Comunidad oficial Ogre 3D. [Visitado: 27/01/10] http://www.ogre3d.org - Alejandro Woywood. [Visitado: 27/01/10] http://www2.ing.puc.cl/~iic3686/Tutorial_Ogre1/ogre1.htm - Blog de gazzell. [Visitado: 27/01/10] http://gazzell.wordpress.com/2008/03/19/uso-bsico-de-compositores-enogre/
BLENDER:
- Pgina oficial de Blender 3d [Visitado: 28/01/10] http://www.blender.org/ - Niel 3d-Comunidad de Blender 3d en espaol [Visitado: 27/01/10] http://www.niel3d.com - Blog de fisicolomolon. Curso de creacin de videojuegos [Visitado: 28/01/10] http://fisicomolon.blogspot.com/2009/06/curso-creacion-de-videojuegosen.html - Wikilibros. Blender 3D [Visitado: 28/01/10] http://es.wikibooks.org/wiki/Blender_3D:_novato_a_profesional/blender_inte rfaz - Foro soliman. Apuntes de Blender [Visitado: 28/01/10] http://apuntesdeblender3.iespana.es/
TEXTURAS UV: o Foro 3DPoder [Visitado: 28/01/10] http://www.foro3d.com/f240/mapas-uv-79726.html http://www.foro3d.com/f240/mapeado-texturas-79727.html Claudio Andaur, Maleficio 3D [Visitado: 28/01/10] http://www.malefico3d.org/viejos-tutoriales/UVmap.html Usuario Garman, Youtube [Visitado: 28/01/10] http://www.youtube.com/watch?v=6O8HC3n5wWE&feature=related Derek Marsh, UV Mapping a Human Head Mesh Utilizing LSCM [Visitado: 28/01/10] http://bgdm.katorlegaz.com/lscm_tute/lscm_tute.htm
112
EXPORTACIN A OGRE: o Blog de Antonio Serrano [Visitado: 28/01/10] http://www.aserrano.com/2007/12/19/blender-exportar-modelos-aogre/ Source forge, Ogre Meshes Exporter[Visitado: 28/01/10] http://ogre.svn.sourceforge.net/viewvc/ogre/trunk/Tools/BlenderExp ort/ogrehelp/ogremeshesexporter.html#Armature%20Animations ToMs Blog [Visitado: 28/01/10] http://thomas.trocha.com/wp/?page_id=248 Blog de Juan Diego Uran, Valtovar [Visitado: 28/01/10] http://valtovar.blogspot.com/2009/06/formatos-mesh-y-skeleton-dediversas.html
INTERFAZ GRFICA:
- The Code Project, Development Resource [Visitado: 28/01/10] http://www.codeproject.com/ - Function X [Visitado: 28/01/10] http://www.functionx.com/visualc/ - Microsoft msdn [Visitado: 28/01/10] http://social.msdn.microsoft.com/ - Jodrell Bank Centre for Astrophysics [Visitado: 28/01/10] http://www.jb.man.ac.uk/~slowe/cpp/lastmod.html - Foro Wreckedgames [Visitado: 28/01/10] http://www.wreckedgames.com/forum/index.php?topic=1046.0 - Kelvin Sung, Microsoft Foundation Classes Tutorial [Visitado: 28/01/10] http://depts.washington.edu/cmmr/biga/chapter_tutorials/mfc_tutorial/
113
Listado de ilustraciones
Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura 1: Columna vertebral...............................................................................9 2: Columna cervical y vrtebras C1 y C2.......................................................9 3: Grados de movilidad normal de la columna cervical.....................................10 4: Sistema general Kinescan/IBV....................... .......................................12 5: Prueba real en el laboratorio y localizacin de los marcadores en el paciente......12 6: Informe personalizado que emite la aplicacin NedCervical/IBV (parte 1)...........13 7: Informe personalizado que emite la aplicacin NedCervical/IBV (parte 2)...........14 8: Interfaz al iniciar Blender.............................................................................16 9: Versin de Blender empleada y ventana de comandos al iniciar Blender.............28 10: Interfaz de ventanas mediante el uso de MFC en Visual Studio 2005................30 11: Caso de uso de gestin de fichero de prueba................................................32 12: Caso de uso para la visualizacin de la animacin.........................................35 13: Caso de uso encargado de la modificacin del momento de animacin.............37 14: Casos de uso que controlan la modificacin de las cmaras............................43 15: Esquema de la arquitectura del proyecto......................................................47 16: Arquitectura de clases...............................................................................49 17: Movimiento de flexo-extensin en un paciente sano....................................52 18: Movimiento de flexin lateral en un paciente sano.........................................53 19: Movimiento de rotacin en un paciente sano.................................................53 20: Movimiento de la prueba funcional 1 en un paciente sano...............................54 21: Movimiento de la prueba funcional 2 en un paciente sano...............................54 22: Movimiento de la prueba funcional 3 en un paciente sano...............................55 23: Ejemplo del contenido de un fichero de pruebas............................................55 24: Disposicin y sealado de elementos de la interfaz........................................57 25: Ejemplo de grfica con cursores y regin activa............................................59 26: Iconos principales de la aplicacin...............................................................59 27: Ventana Visor 3D con la escena por defecto.................................................60 28: Ventana de botones..................................................................................61 29: Barra de men general (User Preferences)...................................................61 30: Tipos de ventanas.....................................................................................61 31: Comparacin entre modelo inicial (izquierda) y modelo final (derecha).............63 32: Niveles del algoritmo de Catmull-Clark ordenados de izquierda a derecha.........63 33: Posicin de los huesos en el modelo............................................................64 34: Vrtices asociados al hueso de la cabeza (izquierda) y al cuerpo (derecha).......65 35: Ejemplo de un movimiento incorrecto (izquierda) y correcto (derecha).............66 36: Desplegado de la malla correspondiente a la cabeza del modelo......................67 37: Textura UV coloreada de la malla correspondiente a la cabeza del modelo........67 38: Script Ogre Meshes Exporter......................................................................68 39: Ejemplos de tipos de archivo obtenidos al exportar........................................69 40: OgreXMLConverter desde lnea de comandos................................................69 41: Archivos .mesh y .skeleton.........................................................................69 42: Opciones de exportacin............................................................................71 43: Estructura general de un archivo .mesh.xml.................................................72 44: Estructura general de un archivo .skeleton.xml.............................................73 45: Jerarqua terica de nodos de la escena.......................................................74 46: Distribucin y signo de los ejes X, Y, Z........................................................74 47: Jerarqua de nodos del proyecto actual........................................................75 48: Textura afectada por la luminosidad............................................................77 49: Ejemplo de un archivo .material: material referido a la camiseta del modelo.....77 50: Modelo con scripts de materiales (izquierda) y sin ellos (derecha)...................77
114
Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura
51: Ejemplo de rotacin en los ejes X, Y, Z........................................................78 52: Lnea de tiempo tipo de una animacin........................................................80 53: Teclas empleadas y sentido en el cambio de posicin de la cmara..................82 54: Aplicacin MFC y propiedades iniciales.........................................................83 55: Elementos que proporcionan las MFC...........................................................84 56: Caractersticas iniciales asociadas a un botn...............................................84 57: Botones de pulsacin para control de archivos..............................................85 58: Lista de control.........................................................................................86 59: Botones de marcado alternativo..................................................................86 60: Controles mediante flechas........................................................................86 61: Botn de pulsacin de cmara libre.............................................................86 62: Barra de reproduccin...............................................................................87 63: Botones de reproduccin............................................................................87 64: Cuadros de texto......................................................................................87 65: Mensaje de fichero de pruebas incorrecto.....................................................88 66: Mensaje obtenido al cargar pruebas correctas...............................................88 67: Mensaje obtenido al intentar borrar pruebas del list control............................88 68: Aspecto de la interfaz tras la inicializacin de la ventana Ogre.........................89 69: Aspecto de la interfaz tras la carga de la animacin con el modelo 3D..............90 70: Mensaje obtenido al seleccionar ms de un archivo a cargar...........................91 71: Mtodos estndar de botones (izquierda) y cuadros de texto (derecha)............91 72: Descripcin de funcionamiento de un mtodo asociado a un botn..................91 73: Ejemplo de funcionamiento de cambio de orientacin de la cmara..................93 74: Elementos aadidos por Measurement Studio...............................................94 75: Cuadro de dilogo para cambio de codificacin del proyecto...........................94 76: Ventana de propiedades de un elemento de tipo CWGraph Control..................95 77: Eventos del elemento CWGraph Control.......................................................97 78: Modos de seleccin de eventos disponibles en CWGraph Control......................97 79: Error mostrado al intercambiar cursores......................................................98 80: Prueba de flexo-extensin en un paciente sano.........................................101 81: Prueba de rotacin en un paciente sano.....................................................102 82: Prueba de flexin lateral en un paciente sano.............................................102 83: Prueba funcional 1 realizada a un paciente sano.........................................103 84: Prueba fucncional 2 realizada a un paciente sano........................................103 85: Prueba funcional 3 realizada a un paciente sano.........................................104 86: Comparacin de flexo-extensin entre paciente 3 (izqda.) y sano (dcha.)....105 87: Comparacin de rotacin entre paciente 3 (izqda.) y sano (dcha.).................105 88: Comparacin de flexin lateral entre paciente 3 (izqda.) y sano (dcha.).........105 89: Comparacin de flexin lateral entre paciente 4 (izqda.) y sano (dcha.).........106 90: Comparacin de rotacin entre paciente 6 (izqda.) y sano (dcha.).................106 91: Comparacin de flexin lateral entre paciente 7 (izqda.) y sano (dcha.).........107 92: Comparacin de flexo-extensin entre paciente 7 (izqda.) y sano (dcha.)....107 93: Comparacin de rotacin entre paciente 9 (izqda.) y sano (dcha.).................107 94: Comparacin de la p.funcional 2 entre paciente 9 (izqda.) y sano (dcha.).......108 95: Comparacin de flexo-extensin entre paciente 11 (izqda.) y sano (dcha.).....108
115
ANEXO:
a) Manual del instalador Instalacin de la aplicacin La aplicacin est diseada para ser instalada en un sistema operativo Windows y, de forma recomendable, Windows XP. El proceso de instalacin se realiza de forma prcticamente automtica e incluye todos los archivos necesarios para ejecutar la aplicacin. De esta forma en el directorio de instalacin se encuentran estructurados los siguientes elementos: El ejecutable de la aplicacin (Proyecto.exe). Una carpeta llamada Media que contiene los recursos de Ogre. Una carpeta llamada Fuentes con el cdigo fuente de la aplicacin. Una carpeta llamada Pacientes que contiene subcarpetas con las pruebas de unos sujetos determinados, que se emplearan para cargar las animaciones. El resto son archivos con extensin .dll y otros necesarios para la aplicacin.
A continuacin se va a realizar una traza de instalacin tpica, mostrando cada una de las ventanas del proceso de instalacin hasta llegar a la ejecucin del programa. En primer lugar hay que pulsar doble clic sobre el instalador de la aplicacin (archivo Instalador Animacin 3D del Raquis Cervical.msi). Una vez se ha ejecutado el instalador, se inicia el asistente para instalar el programa. Tras leer la informacin sobre los derechos de la aplicacin, se pulsa Siguiente >.
116
Seguidamente se muestra una ventana que contiene la ruta donde se va a realizar la instalacin, as como la posibilidad de seleccionar si la instalacin se realiza para un usuario o para todos los usuarios del equipo. Seleccionadas las opciones deseadas, se pulsa en Siguiente >.
En este momento ya est todo preparado para instalar la aplicacin, se pide una ltima confirmacin y se pulsa en Siguiente >.
117
A partir de este instante, una barra de progreso indica el porcentaje de instalacin completado.
118
Ahora para ejecutar la aplicacin, hay que acceder a la ruta indicada y ejecutar el archivo Proyecto.exe. Si es la primera vez que la aplicacin se ejecuta, se muestra una ventana de Ogre como la indicada a continuacin permitiendo elegir el sistema de renderizado para la aplicacin. Se debe elegir Direct3D9 Rendering Subsystem.
En el momento se ha seleccionado un sistema de renderizacin, se muestra la informacin de configuracin del mismo, as como el modelo de tarjeta grfica instalada en el equipo.
119
Adems, en el directorio de la aplicacin se crea un archivo llamado ogre.cfg que guarda esta informacin para posteriores utilizaciones de la aplicacin. A medida que se van cargando recursos en la aplicacin, tambin se genera un archivo con nombre Ogre.txt con la informacin de los recursos cargados con xito. En caso de que no se haya elegido ninguno, el programa se cierra de forma inmediata.
Esto se debe a que el equipo no dispone de la instalacin de una versin de DirectX adecuada. Habr que instalar una versin la ltima versin de DirectX 9 para ejecutar la aplicacin (en el cd adjunto se aade un instalador con una versin actualizada de DirectX 9 con nombre dxwebsetup.exe).
Desinstalacin de la aplicacin Para realizar la desinstalacin de la aplicacin, se puede realizar de dos formas: - A travs del instalador Instalador Animacin 3D del Raquis Cervical.msi - Aaccediendo al Panel de Control a Agregar o quitar programas. En caso de seleccionarse la primera opcin, se muestra un asistente con dos opciones sobre el programa: Reparar o Quitar. Se selecciona Quitar y se pulsa en Finalizar, hecho tras el cual comienza de forma automtica la desinstalacin.
120
Cuando acaba la instalacin, se muestra una ventana informando de que el programa ha sido desinstalado con xito.
En caso de seleccionar la opcin de desinstalar el programa a travs del panel de control, se busca el nombre del programa en la lista y se pulsa en Quitar para desinstalar de forma automtica, o Cambiar para que aparezca la ventana mostrada anteriormente con las opciones de reparar y quitar.
121
A continuacin se pide una confirmacin para desinstalar el programa, a la que se debe pulsar en S, y la desinstalacin se realiza de forma automtica.
NOTA: aunque el proceso de desinstalacin parezca congelado o parado durante bastante tiempo, no hay que pausarlo o detenerlo. Adems tras acabar el proceso de desinstalacin, habr que eliminar a mano los archivos ogre.cfg, Ogre.txt y la carpeta donde se instal la aplicacin.
122
b)
Manual de usuario
El programa actual no requiere un periodo de aprendizaje previo y es muy intuitivo; sin embargo y se establece la siguiente estructura dividida en funcin de su comportamiento: Traza de utilizacin estndar Manipulacin de archivos cargados Manipulacin de cmaras de la animacin Manipulacin del momento de reproduccin Cierre de la aplicacin
Traza de utilizacin estndar Se va a realizar una descripcin de los pasos a seguir para obtener la visualizacin de la animacin de las pruebas. En primer lugar se ejecuta el programa y se carga la ventana principal de la aplicacin (observar aspecto de la Figura 68 de la memoria actual). A partir de este momento, el proceso para utilizar el programa descrito se puede dividir en tres partes: Bsqueda de los archivos de prueba a emplear Carga de la animacin obtenida de archivos validados Visualizacin de resultados Bsqueda de los archivos de prueba a emplear de la Para obtener obtener ficheros de prueba, hay que pulsar en el botn interfaz, el cual abre un cuado de dilogo sobre el que se puede buscar la ruta en el que se encuentran los archivos de pruebas de pacientes a cargar.
Cabe recordar que el tipo de los ficheros a abrir es .txt y la nomenclatura y contenido de los mismos se describe en el apartado 2.2.3.1 y 2.2.3.2 respectivamente.
123
Una vez seleccionados los ficheros a cargar se pulsa en el botn Abrir y el programa informa del nmero de ficheros de prueba vlidos para ser cargados mediante una ventana saliente (ver figura 50). En este momento los ficheros son cargados por la lista de control de la interfaz, mostrando la informacin de los mismos: nombre de prueba, ruta de la que se han obtenido, duracin de la prueba y fecha de modificacin (ver figura 42).
Carga de la animacin obtenida de archivos validados Los archivos mostrados en la lista de control contienen las pruebas que pueden ser cargadas como una animacin. Para cargar la animacin que contienen, basta con seleccionar el archivo y pulsar en el botn sobre alguno de los elementos de la lista. o simplemente hacer doble click
Tras este proceso de cargado, la animacin se muestra en la subventana de Ogre y se carga la grfica asociada a dicha prueba, al estilo de lo mostrado en la figura 52.
Visualizacin de resultados A partir de este momento ya es posible interactuar con todos los elementos que modifican la visualizacin de la animacin actual. Modificar el rango de reproduccin de la animacin mediante la variacin de los cursores lmite de la grfica, pulsar en la grfica para ver un momento de reproduccin deseado, cambiar entre las distintas cmaras fijas, modificar la posicin de la cmara libre, pulsar los botones de reproduccin de animacin son algunas de las funcionalidades que permiten visualizar de la mejor manera posible la prueba cargada.
Manipulacin de archivos cargados Los archivos cargados en la lista de control pueden ser cambiados dinmicamente. Para aadir nuevos archivos, basta con pulsar en el botn como se ha comentado en el apartado anterior. Para eliminar archivos de la lista de control, el funcionamiento es muy simple: seleccionar el archivo y pulsar el botn .
Cabe tener en cuenta que el programa permite cargar dos pruebas idnticas, aadindolos como archivos diferentes a la lista de control, se permite el borrado de mltiples pruebas tras mostrar un dilogo de confirmacin al usuario.
Manipulacin de cmaras de la animacin Para visualizar la animacin 3D se dispone de 4 cmaras fijas y una cmara libre sobre la que es posible modificar tanto su posicin como su orientacin. Las cmaras fijas son accesibles a travs de los botones corresponden a las siguientes posiciones: - Cmara 1: vista frontal - Cmara 2: vista trasera - Cmara 3: vista lateral derecha del modelo - Cmara 4: vista lateral izquierda del modelo y se
124
se habilitan
los spins( , , ) para poder modificar su posicin. Mediante el primer spin la cmara se desplaza por el eje X, con el segundo por el eje Y y con el tercero a travs del eje Z. Si en algn momento se desea colocar la cmara libre en su . posicin por defecto (vista frontal), nicamente hay que pulsar en el botn Cabe comentar que al cargar una animacin, la cmara que se coloca por defecto es la cmara libre. En cuanto a variar la orientacin de la misma, se realiza mediante la pulsacin del botn izquierdo del ratn y arrastre en la ventana Ogre. En el momento se realiza una pulsacin, se toma ese punto como referencia y al realizar el arrastre con el botn pulsado cambia la orientacin de la cmara.
Manipulacin del momento de reproduccin Las acciones para cambiar la reproduccin de la animacin se pueden realizar desde tres puntos: los botones de reproduccin, la barra de reproduccin y la grfica con la representacin de los datos. Mediante los botones de reproduccin ( ) se pueden realizar acciones tpicas para modificar la reproduccin de la animacin: rebobinado, pausado, reinicio de la animacin ) Por otro lado la interaccin con la barra de reproduccin ( tambin es la habitual: mediante acciones de pulsado en la barra o arrastre de la marca que marca el momento de reproduccin es posible modificar la animacin. En cuanto a la interaccin con la grfica es posible realizar dos tipos de acciones: modificacin del momento de reproduccin, ya sea con acciones de pulsacin en la misma o con pulsacin y arrastre del cursor de animacin (el de color blanco); y acotado de la regin activa de la grfica a travs de la pulsacin y arrastre de los cursores lmite de la animacin (de color amarillo). Cabe comentar que la regin activa se muestra con un fondo negro, mientras que la inactiva tiene un fondo grisceo.
Cierre de la aplicacin Se puede realizar a travs del botn y a travs de la cruceta de cierre de la ventana. Se cierra tambin cualquier ventana saliente asociado al programa. Sin embargo, en el caso de que se encuentre una animacin cargada, se requiere una confirmacin para cerrar el programa.
125