Sie sind auf Seite 1von 126

PFC: Animacin 3D del Raquis Cervical.

Aplicacin para la Valoracin de Cervicalgias

Febrero 2010

Pablo Silvestre Soler

Tutor en la empresa: Tutor en ETSINF:

Carlos Chirivella Moreno Javier Lluch Crespo

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

2.- Material y mtodos...........................................................................

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

3.- Resultados y discusin...................................................................

100
101

3.1.- Anlisis de resultados obtenidos..............................................

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

INTRODUCCIN

Origen del trabajo

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.

Animacin 3D del Raquis Cervical

INTRODUCCIN

Antecedentes generales

1.2.- Antecedentes generales


Un anlisis del mercado referente a todo lo que conlleva el estudio de las cervicales basado en la cinemtica y la capacidad de movimiento de las mismas precisa definir dos aspectos fundamentales: su disposicin fsica, que condiciona los tipos de movimientos que se pueden realizar; y la objetivacin de dichos movimientos para obtener patrones que se toman de referencia para estudios biomecnicos. De este modo, estos son los dos puntos de partida: describir la anatoma sea de la regin cervical y definir los sistemas de valoracin funcional.

1.2.1.- Informacin anatmica: Cervicalgias


La columna vertebral est compuesta por 33 o 34 vrtebras dispuestas a lo largo del esqueleto axial. Se estructura en 5 segmentos: Cervical: 7 vrtebras Dorsal: 12 vrtebras Lumbar: 5 vrtebras Sacro: 5 vrtebras Coxgeo: 3 4 vrtebras

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.

Figura 1: Columna vertebral

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.

Figura 2: Columna cervical y vrtebras C1 y C2

Animacin 3D del Raquis Cervical

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

Figura 3: Grados de movilidad normal de la columna cervical

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.

Animacin 3D del Raquis Cervical

10

INTRODUCCIN 1.2.2.- Sistemas de valoracin funcional

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

Animacin 3D del Raquis Cervical

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.

Figura 4: Sistema general Kinescan/IBV

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.

Figura 5: Prueba real en el laboratorio y localizacin de los marcadores en el paciente

Animacin 3D del Raquis Cervical

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.

Figura 6: Informe personalizado que emite la aplicacin NedCervical/IBV (parte 1)

Animacin 3D del Raquis Cervical

13

INTRODUCCIN

Antecedentes generales

Figura 7: Informe personalizado que emite la aplicacin NedCervical/IBV (parte 2)

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.

Animacin 3D del Raquis Cervical

14

INTRODUCCIN

Antecedentes tcnicos

1.3.- Antecedentes tcnicos


La aplicacin NedCervical, en la cual se apoya el proyecto desarrollado, est programada en C++ y se ha considerado como requisito de partida. C++ es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne Stroustrup. Se cre como una extensin del lenguaje de programacin C con mecanismos para la manipulacin de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hbrido. Una caracterstica particular de C++ es la posibilidad de redefinir los operadores (sobrecarga de operadores) y la posibilidad de crear nuevos tipos que se comporten como tipos fundamentales. En cuanto a las herramientas de modelado y animacin 3D se han analizado las siguientes: Modeladores grficos 3D: crear y disear el modelo 3D. o Blender o Maya o 3ds Max Motores grficos 3D: animacin del modelo 3D ante unos datos de entrada. o Ogre o 3D GameStudio o Crystal Space

A continuacin se va a realizar un estudio de las caractersticas principales de cada una de las herramientas de modelado y motores grficos mencionados.

Animacin 3D del Raquis Cervical

15

INTRODUCCIN 1.3.1.- Modeladores grficos 3D


1.3.1.1.- Blender

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.

Figura 8: Interfaz al iniciar Blender

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

18

INTRODUCCIN 1.3.2.- Motores grficos 3D


1.3.2.1.- Ogre

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).

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

24

INTRODUCCIN

Objetivos del trabajo

1.4.- Objetivos del trabajo


El objetivo principal del proyecto actual es generar una aplicacin, preparada para ejecutarse en un entorno Windows, que otorgue al usuario responsable de detectar la afeccin de cervicalgia de una visin amigable de la prueba realizada, ms all de datos o grficas, mediante una animacin 3D. El hecho de disponer de un medio con el que mediante un breve vistazo permita recordar o visualizar los movimientos realizados en la prueba del paciente es de gran ayuda para obtener un diagnstico de una forma rpida y eficaz. Por ello las herramientas a utilizar deben permitir determinar opciones en cuanto a la visualizacin de la animacin. El usuario elige la posicin en que comienza la reproduccin de la animacin y debe poder situar el cursor en el momento que considere ms oportuno, al igual que cambiar la orientacin y posicin de la cmara que enfoca al modelo 3D para detectar un determinado movimiento de la forma ms precisa posible. La animacin 3D estar acompaada de una grfica que, adems de representar los ngulos en los tres ejes principales (x,y,z) en funcin del tiempo, permita establecer una referencia objetiva a la animacin presentada a travs de la representacin numrica de los resultados de las pruebas. Adems es interesante incluir elementos interactivos en la grfica que afecten al momento de la reproduccin de la animacin, tanto para facilitar la usabilidad de la aplicacin como para hacerla ms atractiva y dinmica.

Animacin 3D del Raquis Cervical

25

INTRODUCCIN

Plan de trabajo

1.5.- Plan de trabajo


Para la realizacin de este proyecto se ha diseado un plan de trabajo estructurado respondiendo a las necesidades de estudio de las herramientas a utilizar, la implementacin de cdigo de mdulos independientes, la integracin de los nombrados mdulos, el anlisis de pruebas de test sobre la aplicacin y la elaboracin de la documentacin para registrar el proceso seguido. El proyecto se plantea entre los meses laborales de julio de 2009 y enero de 2010.

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

Animacin 3D del Raquis Cervical

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

Animacin 3D del Raquis Cervical

27

MATERIAL Y MTODOS

2.- Material y mtodos


La aplicacin NedCervical/IBV en la que se basa el proyecto actual permite al especialista clnico, como prueba complementaria, consolidar su diagnstico. Para ello proporciona todo tipo de indicadores, parmetros y grficos relativos a la prueba. Una animacin 3D realista de las diferentes pruebas permitira al especialista observar desde cualquier punto de vista alteraciones en los movimientos realizados y contribuira a una mejora significativa del valor clnico de la prueba. De esta forma las herramientas que se han seleccionado en la aplicacin son: Blender, para la elaboracin fsica del modelo; Ogre, para obtener una animacin del mismo ante unos datos de entrada; y el entorno de desarrollo que proporciona Visual Studio 2005. Modelado grfico 3D: Por qu Blender? Entre los modeladores grficos estudiados, Blender ofrece una caracterstica muy valorada actualmente: se trata de software libre. Este dato no se refiere nicamente al precio de adquisicin del producto, gratuito por supuesto, sino tambin a la comunidad que lo envuelve. Un programa con cdigo abierto permite que cualquiera tenga la capacidad de aadirle scripts o elementos nuevos y ofrecerlos al resto de interesados con un beneficio comn: aumentar las capacidades y perfeccionar el programa para que est en constante evolucin ante nuevas tecnologas. Adems del hecho comentado de presentar una comunidad bastante numerosa, que tambin implica el disponer de un gran nmero de tutoriales explicativos, Blender en cuanto a posibilidades de diseo no tiene nada que menospreciar a los otros modeladores analizados. Otro motivo para su eleccin como modelador en el proyecto actual son las posibilidades de exportacin y personalizacin que incorpora. Mediante scripts realizados en Python es posible aumentar las funcionalidades que incorpora el programa bsico, generando un gran nmero de posibilidades de utilizacin alternativas. En el proyecto actual se ha aadido el script Ogre Meshes Exporter. La versin del programa elegida es la 2.49a, a la cual se ha incorporado la versin 2.6.2 de Python con el fin de aadir scripts a Blender. Al ejecutar Blender se puede comprobar la versin de Python instalada en la ventana de comandos adjunta.

Figura 9: Versin de Blender empleada y ventana de comandos al iniciar Blender

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

31

MATERIAL Y MTODOS 2.1.1.- Gestin de ficheros de prueba

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.

Gestin de ficheros de prueba

Abrir fichero de prueba

Borrar fichero de prueba Usuario


Figura 11: Caso de uso de gestin de fichero de prueba

Animacin 3D del Raquis Cervical

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.

Detalles del caso de uso


Nombre: Abrir fichero de prueba. Actores: Usuario. Precondiciones: Ninguna. Postcondiciones: Los ficheros de prueba se cargan en la interfaz del sistema.

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

El sistema abre un dilogo de tipo Examinar.

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.

Animacin 3D del Raquis Cervical

33

MATERIAL Y MTODOS
2.1.1.2.- Borrar fichero de prueba

Requerimientos

El usuario selecciona una prueba cargada en la interfaz y la elimina de la misma.

Detalles del caso de uso


Nombre: Borrar fichero de prueba. Actores: Usuario. Precondiciones: El fichero a borrar debe estar cargado en la interfaz. Postcondiciones: Las pruebas borradas se eliminan de la interfaz.

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.

Animacin 3D del Raquis Cervical

34

MATERIAL Y MTODOS 2.1.2.- Visualizacin de la animacin

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

Animacin 3D del Raquis Cervical

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.

Detalles del caso de uso


Nombre: Cargar prueba. Actores: Usuario. Precondiciones: Los ficheros con los datos de las pruebas a cargar deben estar previamente cargados en la interfaz. Postcondiciones: En la ventana de Ogre se visualiza el modelo y el inicio de la animacin.

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

Animacin 3D del Raquis Cervical

36

MATERIAL Y MTODOS 2.1.3.- Modificacin del momento de animacin

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

Figura 13: Caso de uso encargado de la modificacin del momento de animacin

Animacin 3D del Raquis Cervical

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.

Detalles del caso de uso


Nombre: Reproducir prueba. Actores: Usuario. Precondiciones: Debe haber una animacin cargada en el programa. Postcondiciones: La ventana de Ogre reproduce la animacin.

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

Animacin 3D del Raquis Cervical

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.

Detalles del caso de uso


Nombre: Rebobinar prueba. Actores: Usuario. Precondiciones: Debe haber una animacin cargada en el programa. Postcondiciones: La ventana de Ogre reproduce la animacin en sentido inverso.

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

Animacin 3D del Raquis Cervical

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.

Detalles del caso de uso


Nombre: Pausar prueba. Actores: Usuario. Precondiciones: Debe haber una animacin reproducindose en el programa. Postcondiciones: El sistema mantiene fijo el momento de reproduccin de la animacin.

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.

Animacin 3D del Raquis Cervical

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.

Detalles del caso de uso


Nombre: Cambiar posicin de reproduccin de prueba. Actores: Usuario. Precondiciones: Debe haber una animacin cargada en el programa. Postcondiciones: El sistema vara el momento de reproduccin de la prueba.

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

Animacin 3D del Raquis Cervical

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.

Detalles del caso de uso


Nombre: Limitar rango de reproduccin. Actores: Usuario. Precondiciones: Debe haber una animacin cargada en el programa. Postcondiciones: El rango de reproduccin se limita a los cursores lmite de la grfica.

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

Animacin 3D del Raquis Cervical

42

MATERIAL Y MTODOS 2.1.4.- Modificacin de cmaras

Requerimientos

El usuario debe poder interactuar con las cmaras que permiten visualizar la animacin modificando la posicin y orientacin de visualizacin.

Modificacin de cmaras

Cambiar cmara Cambiar posicin Cambiar orientacin Usuario

Figura 14: Casos de uso que controlan la modificacin de las cmaras

Animacin 3D del Raquis Cervical

43

MATERIAL Y MTODOS
2.1.4.1.- Cambiar cmara

Requerimientos

El usuario selecciona la cmara con la que desea visualizar la reproduccin de la animacin.

Detalles del caso de uso


Nombre: Cambiar cmara. Actores: Usuario. Precondiciones: Debe haber una animacin cargada en el programa. Postcondiciones: La visualizacin de la animacin cambia en funcin de la cmara seleccionada.

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

Animacin 3D del Raquis Cervical

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.

Detalles del caso de uso


Nombre: Cambiar posicin. Actores: Usuario. Precondiciones: Debe haber una animacin cargada en el programa y estar activa la cmara libre. Postcondiciones: La visualizacin de la animacin cambia en funcin de la nueva posicin de la cmara.

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

Animacin 3D del Raquis Cervical

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.

Detalles del caso de uso


Nombre: Cambiar orientacin. Actores: Usuario. Precondiciones: Debe haber una animacin cargada en el programa y estar activa la cmara libre. Postcondiciones: La orientacin de la cmara libre vara en funcin de la modificacin realizada.

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.

Animacin 3D del Raquis Cervical

46

MATERIAL Y MTODOS

Diseo de la aplicacin

2.2.- Diseo de la aplicacin


2.2.1.- Arquitectura del proyecto
El proyecto est organizado en torno a tres mdulos principales relacionados: Animacin Ogre, Interfaz y Recursos Externos.

ANIMACIN OGRE Carga de la malla Carga de materiales Control de la animacin

INTERFAZ Captura de eventos Measurement Studio

RECURSOS EXTERNOS Archivos .mesh\.skeleton Scripts de materiales


Figura 15: Esquema de la arquitectura del proyecto

Animacin 3D del Raquis Cervical

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.

2.2.1.3.- Recursos Externos


El contenido de este mdulo se cie a los archivos necesarios para la carga del modelo 3D con el que trabaja el mdulo de Animacin Ogre: Archivos .mesh: modelacin del objeto 3D. Archivos .skeleton: encargados de definir la deformacin de las mallas y sus posibilidades de movimiento. Archivos .material: su funcin es la definicin de los materiales a mostrar, as como su variacin dependiendo del punto de vista o localizacin de la cmara.

Por tanto se trata de un mdulo que nicamente se emplea como fuente y no tiene parmetro alguno.

Animacin 3D del Raquis Cervical

48

MATERIAL Y MTODOS 2.2.2.- Arquitectura de clases

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.

ANIMACIN OGRE FrameListener MyFrameListener

INTERFAZ CDialog CProyectoDlg CAboutDlg

COgreApplication COSFDialog

Figura 16: Arquitectura de clases

2.2.2.1.- Clases Ogre


Para realizar toda la funcionalidad el mdulo de Animacin Ogre se han empleado las siguientes clases: FrameListener: clase creada por defecto en las libreras de Ogre. Esta clase permite la recepcin de notificaciones para eventos generados. Incorpora los siguientes mtodos: o frameStarted: se ejecuta cuando un frame est en situacin de ser renderizado. o frameRenderingQueued: se ejecuta cuando todos los objetivos han emitido una seal de que su renderizado ha acabado pero antes de que se muestre el renderizado en pantalla. o frameEnded: se ejecuta cuando un frame ha sido renderizado. MyFrameListener: clase que hereda de FrameListener donde se han implementado todos los eventos que pueden modificar el estado de la animacin o la visualizacin de la misma. Incorpora los siguientes mtodos seguidos de su funcionalidad: o frameStarted: mtodo heredado y sobreescrito de FrameListener. En este mtodo se ha implementado la funcionalidad para realizar el ncleo de la animacin.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

2.2.2.3.- Clases externas


Las clases externas corresponden a clases no implementadas en el proyecto actual que se han descargado para incorporar la funcionalidad de la que disponen a este proyecto. COSFDialog: esta clase incorpora la funcionalidad necesaria para utilizar los dilogos tipo de apertura y guardado de ficheros. En este proyecto slo se ha empleado la funcionalidad de apertura con el fin de cargar las pruebas seleccionadas. Adems incorpora las siguientes opciones: o Modificacin del aspecto de los dilogos mostrados para la apertura y salvado de ficheros. o Posibilidad de seleccin mltiple. o Filtrado de las extensiones de fichero a mostrar. o Obtencin de las rutas de los ficheros seleccionados.

Animacin 3D del Raquis Cervical

51

MATERIAL Y MTODOS 2.2.3.- Ficheros de prueba de pacientes

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.

2.2.3.1.- Tipo y nomenclatura


Los ficheros generados son simples archivos de texto con extensin .txt para facilitar la lectura e interpretacin de los datos. La lectura de los datos incluidos en los ficheros se realiza mediante el uso de libreras que incorporan utilidades para la manipulacin de ficheros (vase fstream para el caso del lenguaje C++ en el que se ha realizado el proyecto). Sin embargo y segn un convenio obtenido con personas vinculadas a la empresa donde se ha realizado el proyecto, estos ficheros deben recibir una nomenclatura especfica segn la prueba de la que se trate. De esta forma se distinguen 9 tipos de pruebas: Prueba de flexo-extensin (1): el paciente realiza movimientos variando fundamentalmente el eje X (similar a una afirmacin continuada). Este fichero puede recibir los nombres: angulos_1.txt o v2_1.txt. Prueba de flexo-extensin (2): el paciente realiza los mismos movimientos que la prueba anterior para corroborar su cinemtica. Este fichero puede recibir los nombres: angulos_2.txt o v2_2.txt. X Y Z

Figura 17: Movimiento de flexo-extensin en un paciente sano

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.

Animacin 3D del Raquis Cervical

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.

Figura 18: Movimiento de flexin lateral en un paciente sano

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

Figura 19: Movimiento de rotacin en un paciente sano

Animacin 3D del Raquis Cervical

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

Figura 20: Movimiento de la prueba funcional 1 en un paciente sano

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

Figura 21: Movimiento de la prueba funcional 2 en un paciente sano

Animacin 3D del Raquis Cervical

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.

Figura 22: Movimiento de la prueba funcional 3 en un paciente sano

2.2.3.2.- Estructura del contenido


Todos los ficheros responden a un mismo patrn en cuanto a la disposicin de los datos. Este patrn se obtiene fruto de un convenio con la empresa que proporciona los datos de estas pruebas. De esta forma el patrn y orden en que se obtiene es el siguiente: Tiempo de obtencin de los ngulos (segundos). Valor del ngulo X (grados). Valor del ngulo Z (grados). Valor del ngulo Y (grados).

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.

Figura 23: Ejemplo del contenido de un fichero de pruebas

Animacin 3D del Raquis Cervical

55

MATERIAL Y MTODOS 2.2.4.- Interfaz de usuario

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.

2.2.4.1.- Diseo y elementos


La disposicin y eleccin de los elementos a utilizar est estudiada para fomentar tambin la facilidad de uso de la aplicacin. El simple hecho de colocar los botones generales en la parte superior derecha de la ventana, los archivos cargados en la parte superior o la posibilidad de interactuar con los elementos mostrados de forma directa no atiende a una razn trivial: todo se basa en facilitar la labor de uso de la aplicacin.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

58

MATERIAL Y MTODOS

Diseo de la aplicacin

Figura 25: Ejemplo de grfica con cursores y regin activa

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.

Figura 26: Iconos principales de la aplicacin

Animacin 3D del Raquis Cervical

59

MATERIAL Y MTODOS

Desarrollo de la aplicacin

2.3.- Desarrollo de la aplicacin


El desarrollo de la aplicacin ha requerido la utilizacin y estudio de tres herramientas de forma secuencial: Blender para el modelado grfico, Ogre para la interpretacin y representacin de este modelo y Visual Studio para la creacin de una interfaz que permita al usuario interactuar con ste ltimo.

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.

Figura 27: Ventana Visor 3D con la escena por defecto

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).

Animacin 3D del Raquis Cervical

60

MATERIAL Y MTODOS

Desarrollo de la aplicacin

Figura 28: Ventana de botones

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.

Figura 29: Barra de men general (User Preferences)

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: -

Figura 30: Tipos de ventanas

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.

Animacin 3D del Raquis Cervical

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

2.3.1.1.- Modelado de la malla


Blender propone una escena inicial estndar al ejecutar el programa. Esta escena est formada por un cubo, una cmara y una fuente de iluminacin. El objetivo que se persigue es deformar o modificar ese cubo para convertirlo en el modelo resultante. El proyecto actual parte de un modelo bsico generado por la empresa con el objetivo de perfeccionarlo y mejorarlo. Sin embargo, cabe comentar una tcnica

Animacin 3D del Raquis Cervical

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.

Figura 32: Niveles del algoritmo de Catmull-Clark ordenados de izquierda a derecha

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.

Animacin 3D del Raquis Cervical

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.

Figura 33: Posicin de los huesos en el modelo

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.

Animacin 3D del Raquis Cervical

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.

Figura 34: Vrtices asociados al hueso de la cabeza (izquierda) y al cuerpo (derecha)

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.

Animacin 3D del Raquis Cervical

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

Figura 35: Ejemplo de un movimiento incorrecto (izquierda) y correcto (derecha)

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.

2.3.1.3.- Mapeado de texturas


El siguiente paso para obtener un modelo realista es aadirle las texturas necesarias con el fin de poder incorporar un mayor grado de detalle que el dispuesto mediante la adicin de materiales planos. Para ello se realiza el mapeado de texturas del modelo o tambin conocido como mapeado UV. Esta tcnica consiste, a grandes rasgos, en la adicin de una textura 2D dividida en funcin de la malla, con el fin de adaptarla lo ms fielmente posible al perfil del modelo. La funcin principal de este tipo de tcnica es la de otorgar al modelo los detalles que la geometra en s no puede proporcionarle. A continuacin se realiza una descripcin de cada uno de los pasos para poder aplicar dicha tcnica al modelo en Blender. En primer lugar, se selecciona la malla de la cual se desea obtener su mapeado UV y se crea una imagen sobre la que se va a colocar el desplegado de la malla. Con la malla seleccionada se emplea la funcin Unwrap y ya se obtiene la malla desplegada sobre la imagen creada.

Animacin 3D del Raquis Cervical

66

MATERIAL Y MTODOS

Desarrollo de la aplicacin

Figura 36: Desplegado de la malla correspondiente a la cabeza del modelo

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.

Figura 37: Textura UV coloreada de la malla correspondiente a la cabeza del modelo

2.3.1.4.- Exportacin del modelo


En este momento se dispone de un modelo completo texturizado con todo el abanico de posibilidades de movimiento que se la ha querido otorgar; sin embargo, hay que prepararlo para una exportacin satisfactoria. Para ello y puesto que el fin es utilizar el modelo junto con el motor grfico Ogre, se ha incorporado el script Ogre Meshes Exporter que permite exportar el modelo realizado en Blender a archivos reconocibles por Ogre. Se instala en una carpeta de Blender y de inmediato se puede acceder a su funcionalidad a travs de Blender.

Animacin 3D del Raquis Cervical

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.

Figura 38: Script Ogre Meshes Exporter

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.

Animacin 3D del Raquis Cervical

68

MATERIAL Y MTODOS

Desarrollo de la aplicacin

Figura 39: Ejemplos de tipos de archivo obtenidos al exportar

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.

Figura 40: OgreXMLConverter desde lnea de comandos

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.

Figura 41: Archivos .mesh y .skeleton

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Figura 42: Opciones de exportacin

Animacin 3D del Raquis Cervical

71

MATERIAL Y MTODOS 2.3.2.- Ogre

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.

2.3.2.1.- Cargar el modelo


La informacin que contiene todos los datos de la malla del modelo generado en Blender se almacena en dos tipos de archivo: archivos .mesh y archivos .skeleton. Estos tipos de archivo permiten la carga de mallas y manipulacin de esqueletos mediante la utilizacin de la librera proporcionada por Ogre. Si se observa su estructura, se trata de simples archivos de texto con una estructura definida que Ogre puede interpretar para obtener los datos necesarios de la misma. La estructura general de estos dos tipos de archivo es la siguiente: Un archivo .mesh.xml tiene las siguientes propiedades asociadas a la malla: - Definicin de caras (<face>). - Definicin de vrtices (<vertex>) con su posicin, normal, color y coordenadas UV. - Asignacin de vrtices a huesos (<vertexboneassignment>). - Enlace a un esqueleto (<skeletonlink>).

Figura 43: Estructura general de un archivo .mesh.xml

Animacin 3D del Raquis Cervical

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>).

Figura 44: Estructura general de un archivo .skeleton.xml

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.

Animacin 3D del Raquis Cervical

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

Luz de la escena Entity Cmaras

Figura 45: Jerarqua terica de nodos de la escena

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

+ Figura 46: Distribucin y signo de los ejes X, Y, Z

Animacin 3D del Raquis Cervical

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

Figura 47: Jerarqua de nodos del proyecto actual

Animacin 3D del Raquis Cervical

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

Animacin 3D del Raquis Cervical

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.

Figura 48: Textura afectada por la luminosidad

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)

Animacin 3D del Raquis Cervical

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;

//tiempo //angulo //angulo //angulo

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

Figura 51: Ejemplo de rotacin en los ejes X, Y, Z

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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

Tf: Tiempo total de animacin


Figura 52: Lnea de tiempo tipo de una animacin

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

Animacin 3D del Raquis Cervical

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.

2.3.2.4.- Interaccin con el usuario


La interaccin con el usuario en el caso de la animacin en Ogre est limitada en cuanto a sus posibilidades debido a que se va a integrar como una ventana adicional en otra interfaz. Sin embargo, cabe comentar que Ogre permite la captura de todo tipo de eventos: eventos de ratn, de teclado e incluso la posibilidad de incorporar joysticks son contemplados por este motor grfico. En contraposicin, en el proyecto actual nicamente se ha considerado la captura de eventos de teclado como funcin del motor grfico; el resto de eventos estn vinculados a las acciones que se lleven a cabo en la interfaz y se trasfieren mediante mtodos vinculados a dicho motor grfico. En consecuencia, junto con la carga de la ventana se debe iniciar un recurso que implemente un manejador de eventos de teclado, enlazado como es coherente a los eventos que sucedan en la misma ventana (mtodo setupInputSystem). NOTA: una breve descripcin de los recursos inicializados por Ogre se encuentra en el apartado 2.2.2.1 como mtodos de la clase COgreApplication. Posteriormente en esta memoria se explica de forma ms detallada cada uno de ellos.

Animacin 3D del Raquis Cervical

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

Animacin 3D del Raquis Cervical

82

MATERIAL Y MTODOS 2.3.3.- Visual Studio 2005: MFC

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).

2.3.3.1.- Desarrollo bsico de la interfaz


Visual Studio 2005 permite la creacin de un proyecto que ya incorpora las clases base de una interfaz que emplea MFC. Para ello basta con seleccionar como tipo de proyecto una aplicacin MFC y establecer sus parmetros o caractersticas iniciales.

Figura 54: Aplicacin MFC y propiedades iniciales

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.

Animacin 3D del Raquis Cervical

83

MATERIAL Y MTODOS

Desarrollo de la aplicacin

Figura 55: Elementos que proporcionan las MFC

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.

Figura 56: Caractersticas iniciales asociadas a un botn

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

Animacin 3D del Raquis Cervical

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.

Figura 57: Botones de pulsacin para control de archivos

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.

Animacin 3D del Raquis Cervical

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.

Figura 58: 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.

Figura 59: Botones de marcado alternativo

- 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.

Figura 60: Controles mediante flechas

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.

Figura 61: Botn de pulsacin de 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

Animacin 3D del Raquis Cervical

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.

Figura 62: Barra de reproduccin

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.

Figura 63: Botones de reproduccin

- 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.

Figura 64: Cuadros de texto

2.3.3.2.- Gestin de ficheros de pacientes


Apertura de pruebas Los ficheros que representan las pruebas realizadas a los pacientes deben poseer una nomenclatura y estructura determinadas (descritas en el apartado 2.2.3.2), para as comprobar si se trata de archivos vlidos y agregarlos a la lista de control. Se ha utilizado para ello un tpico dilogo de abrir ficheros, mediante la utilizacin de la clase externa COSFDialog (clase comentada en el apartado 2.2.2.3), que permite seleccionar los archivos de texto que contienen las pruebas a cargar. Una vez obtenidos los ficheros que se pretende cargar, se realizan las siguientes comprobaciones: - Se comprueba que el nombre del fichero sea vlido. - Se realiza una lectura del fichero comprobando que los valores de tiempo siempre sean crecientes. En caso de que no se obtenga un fichero vlido, el fichero no se carga en la lista de control y se muestra el siguiente mensaje:

Animacin 3D del Raquis Cervical

87

MATERIAL Y MTODOS

Desarrollo de la aplicacin

Figura 65: Mensaje de fichero de pruebas incorrecto

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.

Figura 66: Mensaje obtenido al cargar pruebas correctas

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.

2.3.3.3.- Cargar animacin de Ogre


Hasta ahora, la animacin de Ogre se ha implementado como una ventana independiente de la interfaz base de la aplicacin. El objetivo principal de este apartado es enlazar dicha ventana para que se integre como un elemento ms en dicha estructura de componentes. Para ello se distinguen dos procesos: inicializacin de la ventana de Ogre y carga de la animacin con el modelo 3D.

Animacin 3D del Raquis Cervical

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.

Figura 68: Aspecto de la interfaz tras la inicializacin de la ventana Ogre

Animacin 3D del Raquis Cervical

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.

Figura 69: Aspecto de la interfaz tras la carga de la animacin con el modelo 3D

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.

Animacin 3D del Raquis Cervical

90

MATERIAL Y MTODOS

Desarrollo de la aplicacin

Figura 70: Mensaje obtenido al seleccionar ms de un archivo a cargar

2.3.3.4.- Capturar eventos de la interfaz


La interfaz dispone de una gran cantidad de elementos con los que el usuario puede interactuar de una forma u otra. Esto conjunto de interactuadores es lo que se denomina eventos de la interfaz, los cuales es preciso tratar para controlar cualquier accin que el usuario pueda realizar sobre los mismos. Las clases MFC incorporan varios mtodos estndar asociados al comportamiento de cada elemento aadido a la interfaz. Los mtodos varan en funcin del tipo de elemento que se aade y se adecan a unos patrones bsicos de funcionamiento. En consecuencia es lgico pensar que los eventos asociados a la pulsacin de un botn no sern los mismos que los incorporados para tratar el comportamiento de un cuadro de texto.

Figura 71: Mtodos estndar de botones (izquierda) y cuadros de texto (derecha)

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:

Figura 72: Descripcin de funcionamiento de un mtodo asociado a un botn

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

92

MATERIAL Y MTODOS
Orientacin original

Desarrollo de la aplicacin

Pinchado y arrastrado hacia bajo

Pinchado y arrastrado hacia la izquierda

Figura 73: Ejemplo de funcionamiento de cambio de orientacin de la cmara

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.

Animacin 3D del Raquis Cervical

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.

Figura 74: Elementos aadidos por Measurement Studio

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.

Figura 75: Cuadro de dilogo para cambio de 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.

Animacin 3D del Raquis Cervical

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.

Figura 76: Ventana de propiedades de un elemento de tipo CWGraph Control

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

96

MATERIAL Y MTODOS

Desarrollo de la aplicacin

Figura 77: Eventos del elemento CWGraph Control

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.

Figura 78: Modos de seleccin de eventos disponibles en CWGraph Control

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).

Animacin 3D del Raquis Cervical

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.

Figura 79: Error mostrado al intercambiar cursores

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

99

RESULTADOS Y DISCUSIN

3.- Resultados y discusin


El software generado posee todos los fundamentos para tener gran aplicacin y difusin en los mbitos de valoracin y diagnstico de cervicalgias. Combinado con el proyecto NedCervical, que le otorga toda la base estadstica de diagnstico y seguimiento de pacientes, facilita en gran medida la labor del mdico encargado de tratar este tipo de dolencias. La facilidad de uso, el feedback o respuesta continua ante interacciones del usuario, la solidez ante posibles datos de entrada incorrectos y lo intuitivo que resulta utilizar el programa son algunas de las normas en las que se ha basado su desarrollo. Cualquier persona cualificada sin una gran experiencia en la utilizacin de componentes informticos puede otorgar un sentido til y prctico al manejo del programa. Son estos aspectos los considerados fundamentales para el xito de este programa: la usabilidad del mismo y la posibilidad de obtener de una forma gil un diagnstico etiolgico correcto. Estas dos caractersticas adquieren una mayor importancia ante el siguiente dato: se estima que ms de la mitad de la poblacin padece algn tipo de cervicalgia en algn momento de su vida. Por tanto el nmero de pacientes a consultar est sobredimensionado en comparacin a los recursos que presenta la sanidad pblica actual; es necesario el impulso y desarrollo de herramientas que permitan agilizar todo este proceso. Existen otros datos quiz ms impactantes que justifican el empleo de herramientas como la presentada en esta memoria: segn un estudio realizado por la Universidad Politcnica de Valencia, que obtuvo sus datos de dos mutuas de accidentes de trabajo de la ciudad de Murcia, la mitad de los pacientes con diagnstico y baja laboral por cervicalgia tienen una estructura de personalidad desadaptativa y con un claro perfil neurtico. Este tipo de personalidad est vinculado a personas que presentan una inestabilidad emocional, escasos recursos para afrontar las situaciones de estrs y dificultades para adaptarse e implicarse activamente en el trabajo. Cindose a las cifras, el 61.9% de los sujetos participantes en el estudio muestran una personalidad inapropiada para tener xito laboral. Adems el 49.1% posee un malestar psicolgico que se focaliza en la presencia de sntomas somticos. Este tipo de datos obliga a resolver una cuestin: la necesidad de establecer en la medida de lo posible si la etiologa presentada por el paciente tiene su origen en una cervicalgia o se debe a otro tipo de dolencias, ya sean fsicas o psicolgicas. Cabe comentar que el programa NedCervical est preparado para hacer frente a algunos casos problemticos: es capaz de detectar casos de no colaboracin del paciente con un acierto del 95%. Todo este compendio de datos conlleva una consecuencia lgica: el programa presentado, debido a su estructura y siempre acompaado del proyecto NedCervical desarrollado por el Instituto de Biomecnica de Valencia, tiene posibilidades en el mercado de la valoracin mdica actual.

Animacin 3D del Raquis Cervical

100

RESULTADOS Y DISCUSIN

Anlisis de resultados obtenidos

3.1.- Anlisis de resultados obtenidos


A continuacin se va a proceder a realizar un anlisis para detectar movimientos anmalos entre algunos de los pacientes a los que se les han realizado las pruebas. Se va a realizar una comparacin con los resultados obtenidos en pacientes sanos con el fin de observar de una forma clara las diferencias entre ellos. Paciente sano Las pruebas registradas a este paciente son las que se tomarn como referencia, ya que los parmetros de todos los movimientos se encuentran dentro de los rangos de normalidad establecidos. Las grficas a mostrar corresponden a las de las 3 pruebas de movimientos con variacin principal en cada uno de los tres ejes (flexo-extensin, eje X; rotacin, eje Y; y flexin lateral, eje Z) y las de las 3 pruebas funcionales obtenidas con la aplicacin. Flexo-extensin: la flexo-extensin mostrada vara entre unos valores de los ngulos que se pueden catalogar como normales. Se caracteriza por no presentar apenas variacin respecto de los valores de los ngulos Y y Z, mientras que la variacin en el valor del ngulo respecto del eje X tiene una gran amplitud. Por esta razn se considera que el paciente no presenta limitaciones funcionales en este movimiento.

Figura 80: Prueba de flexo-extensin en un paciente sano

Animacin 3D del Raquis Cervical

101

RESULTADOS Y DISCUSIN

Anlisis de resultados obtenidos

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.

Figura 81: Prueba de rotacin en un paciente sano

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.

Figura 82: Prueba de flexin lateral en un paciente sano

Animacin 3D del Raquis Cervical

102

RESULTADOS Y DISCUSIN

Anlisis de resultados obtenidos

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.

Figura 83: Prueba funcional 1 realizada a un paciente sano

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.

Figura 84: Prueba funcional 2 realizada a un paciente sano

Animacin 3D del Raquis Cervical

103

RESULTADOS Y DISCUSIN

Anlisis de resultados obtenidos

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.

Figura 85: Prueba funcional 3 realizada a un paciente sano

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.

Animacin 3D del Raquis Cervical

104

RESULTADOS Y DISCUSIN
Pacientes con movimientos anmalos

Anlisis de resultados obtenidos

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 86: Comparacin de flexo-extensin entre paciente 3 (izqda.) y sano (dcha.)

Figura 87: Comparacin de rotacin entre paciente 3 (izqda.) y sano (dcha.)

Figura 88: Comparacin de flexin lateral entre paciente 3 (izqda.) y sano (dcha.)

Animacin 3D del Raquis Cervical

105

RESULTADOS Y DISCUSIN

Anlisis de resultados obtenidos

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.

Figura 90: Comparacin de rotacin entre paciente 6 (izqda.) y sano (dcha.)

Animacin 3D del Raquis Cervical

106

RESULTADOS Y DISCUSIN

Anlisis de resultados obtenidos

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.)

Figura 92: Comparacin de flexo-extensin 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.

Figura 93: Comparacin de rotacin entre paciente 9 (izqda.) y sano (dcha.)

Animacin 3D del Raquis Cervical

107

RESULTADOS Y DISCUSIN

Anlisis de resultados obtenidos

Figura 94: Comparacin de la p.funcional 2 entre paciente 9 (izqda.) y sano (dcha.)

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.

Figura 95: Comparacin de flexo-extensin entre paciente 11 (izqda.) y sano (dcha.)

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.

Animacin 3D del Raquis Cervical

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

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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

Animacin 3D del Raquis Cervical

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

Animacin 3D del Raquis Cervical

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/

MEASUREMENT STUDIO o Pgina oficial de National Instruments [Visitado: 28/01/10] http://www.ni.com/es/

Animacin 3D del Raquis Cervical

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

Animacin 3D del Raquis Cervical

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

Animacin 3D del Raquis Cervical

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 >.

Animacin 3D del Raquis Cervical

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 >.

Animacin 3D del Raquis Cervical

117

A partir de este instante, una barra de progreso indica el porcentaje de instalacin completado.

En el momento acaba la instalacin, se muestra una ventana indicando la finalizacin de la misma.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

NOTA: es posible que al ejecutar la aplicacin se muestre el siguiente error.

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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.

Animacin 3D del Raquis Cervical

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

Animacin 3D del Raquis Cervical

124

Por otro lado, cuando se activa la cmara libre mediante el botn

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.

Animacin 3D del Raquis Cervical

125

Das könnte Ihnen auch gefallen