MODELADO 3D DE MANO HUMANA CON...

13
1 MODELADO 3D DE MANO HUMANA CON MOVIMIENTO EN TIEMPO REAL UTILIZANDO 5DT DATA GLOVE 5 ULTRA M. en C. Abraham Briseño Cerón, Universidad Politécnica de Sinaloa [email protected] M. en C. Ismaylia Saucedo Ugalde, Universidad Politécnica de Sinaloa [email protected] M. en C. Dora Rodríguez Vega, Universidad Politécnica de Sinaloa [email protected] Resumen -- El modelado tridimensional y manipulación virtual de los movimientos de la mano requiere de dispositivos que permitan la comunicación entre los movimientos del ser humano y el ordenador. Por lo que mediante un guante de datos (5DT Data Glove 5 Ultra), se pueden generar en tiempo real los movimientos de flexión-extensión de los dedos de la mano, permitiendo el desarrollo de sistemas basados en el lenguaje simbólico con las manos. Para el modelado en 3D y creación del esqueleto de la mano se estudió estructura de la mano humana, posteriormente con AutoDesk Maya, se hizo el modelado 3D, la animación, efectos y renderización. Maya basado en una arquitectura abierta, permite la unión con lenguajes de programación siendo posible programar o aplicar guiones en una API (Interfaz de programación de aplicaciones). Y con el uso de XNA Game Studio como herramienta de desarrollo se conectó el guante de datos con XNA en C#, el cual permitió detectar y arrojar los datos correctamente. Una vez culminado el modelado en maya se utilizó código para colocarla en XNA pero la animación, estando en fase de prueba y en la búsqueda de alternativas para mejorar el movimiento de los dedos de la mano. Con la captura de los datos incorporándolos al código desarrollado en XNA de C# se procesa y se guarda en un archivo de texto que posteriormente será leído e interpretado por Maya, haciendo la transformación del esqueleto de la mano representando virtualmente los movimientos en tiempos casi reales. Abstract The three-dimensional modeling and virtual manipulation of the hand movements requires devices that allow communication between the movements of the human and computer. With a Data Glove (5DT Data Glove 5 Ultra), movements in real time of the flexion-extension of the fingers can be generated, allowing the development of symbolic language based systems with their hands. Skeleton structure of the human hand was studied in order to make the 3D modeling and creation of the hand, later 3D modeling, animation, effects and texturing was made using AutoDesk Maya. Maya is based on an open architecture, that allows the connection with programming languages or apply to be possible to program scripts in an API (Application Programming Interface). And with the use of XNA Game Studio as a development tool, the data glove was connected with XNA in C #, which detects and gets the data at a quite acceptable rate because of the huge number of iterations of the update routine of the graphics engine. Once the model in Maya is finished, XNA code was used to visualize and give movement to the hand, but it stills in a test phase to get the proper movement of the fingers. The final design consists in capture, processing and storing data into a text file using code developed in XNA C# and then interpreted by Maya Embedded Language, transforming the skeleton of the hand representing virtually movements in almost real time. Introducción La conexión primordial con el mundo es a través de las manos. Siempre que trabajamos con una computadora o en alguna aplicación controlada por ella, estamos sujetos a dispositivos como teclados, mouse y joysticks. En un esfuerzo para cambiar esto, la gente ha venido diseñando, construyendo y estudiando formas de hacer que las computadoras “lean” las manos de los usuarios directamente, libre de limitaciones o dispositivos intermediarios. El desarrollo de guantes electrónicos ha sido un paso importante hacia esa dirección. [1] Dependiendo de cada tipo de Guante Electrónico, éstos miden la forma de la mano de acuerdo a la flexión-extensión, abducción-aducción o propinación-supinación de la palma y/o dedos. Algunos ejemplos de guantes de datos se muestran en la figura 1.

Transcript of MODELADO 3D DE MANO HUMANA CON...

1

MODELADO 3D DE MANO HUMANA CON MOVIMIENTO EN TIEMPO REAL UTILIZANDO 5DT DATA GLOVE 5 ULTRA

M. en C. Abraham Briseño Cerón, Universidad Politécnica de Sinaloa [email protected] M. en C. Ismaylia Saucedo Ugalde, Universidad Politécnica de Sinaloa [email protected] M. en C. Dora Rodríguez Vega, Universidad Politécnica de Sinaloa [email protected]

Resumen -- El modelado tridimensional y manipulación virtual de los movimientos de la mano requiere de dispositivos que

permitan la comunicación entre los movimientos del ser humano y el ordenador. Por lo que mediante un guante de datos (5DT

Data Glove 5 Ultra), se pueden generar en tiempo real los movimientos de flexión-extensión de los dedos de la mano,

permitiendo el desarrollo de sistemas basados en el lenguaje simbólico con las manos. Para el modelado en 3D y creación del

esqueleto de la mano se estudió estructura de la mano humana, posteriormente con AutoDesk Maya, se hizo el modelado 3D, la

animación, efectos y renderización. Maya basado en una arquitectura abierta, permite la unión con lenguajes de programación

siendo posible programar o aplicar guiones en una API (Interfaz de programación de aplicaciones). Y con el uso de XNA Game

Studio como herramienta de desarrollo se conectó el guante de datos con XNA en C#, el cual permitió detectar y arrojar los datos

correctamente. Una vez culminado el modelado en maya se utilizó código para colocarla en XNA pero la animación, estando en

fase de prueba y en la búsqueda de alternativas para mejorar el movimiento de los dedos de la mano. Con la captura de los

datos incorporándolos al código desarrollado en XNA de C# se procesa y se guarda en un archivo de texto que posteriormente

será leído e interpretado por Maya, haciendo la transformación del esqueleto de la mano representando virtualmente los

movimientos en tiempos casi reales.

Abstract – The three-dimensional modeling and virtual manipulation of the hand movements requires devices that allow

communication between the movements of the human and computer. With a Data Glove (5DT Data Glove 5 Ultra), movements in

real time of the flexion-extension of the fingers can be generated, allowing the development of symbolic language based systems

with their hands. Skeleton structure of the human hand was studied in order to make the 3D modeling and creation of the hand,

later 3D modeling, animation, effects and texturing was made using AutoDesk Maya. Maya is based on an open architecture, that

allows the connection with programming languages or apply to be possible to program scripts in an API (Application Programming

Interface). And with the use of XNA Game Studio as a development tool, the data glove was connected with XNA in C #, which

detects and gets the data at a quite acceptable rate because of the huge number of iterations of the update routine of the

graphics engine. Once the model in Maya is finished, XNA code was used to visualize and give movement to the hand, but it stills

in a test phase to get the proper movement of the fingers. The final design consists in capture, processing and storing data into a

text file using code developed in XNA C# and then interpreted by Maya Embedded Language, transforming the skeleton of the

hand representing virtually movements in almost real time.

Introducción

La conexión primordial con el mundo es a través de las manos. Siempre que trabajamos con una computadora o en alguna

aplicación controlada por ella, estamos sujetos a dispositivos como teclados, mouse y joysticks. En un esfuerzo para cambiar

esto, la gente ha venido diseñando, construyendo y estudiando formas de hacer que las computadoras “lean” las manos de los

usuarios directamente, libre de limitaciones o dispositivos intermediarios. El desarrollo de guantes electrónicos ha sido un paso

importante hacia esa dirección. [1]

Dependiendo de cada tipo de Guante Electrónico, éstos miden la forma de la mano de acuerdo a la flexión-extensión,

abducción-aducción o propinación-supinación de la palma y/o dedos. Algunos ejemplos de guantes de datos se muestran en la

figura 1.

2

Figura 1 – Ejemplos de Guantes de Datos

Se considera que el Guante de Datos o DataGlove es una invención simultánea que corresponde por una parte a T. Zimmerman

(NASA) y por otra a D. Sandi, T. DeFanti y G. Sayers (Universidad de Illinois en Chicago). La característica principal del

DataGlove es el uso de fibras ópticas para medir el grado de flexión de las articulaciones de los dedos, señal que la computadora

traduce como objetivos de desplazamiento del usuario. [2]

El 5DT Data Glove 5 Ultra se utiliza para la captura de movimientos, mediciones de patrones, animación, ejecución de comandos

rápidos, etc. El dispositivo mide la flexión-extensión de los dedos y se conecta con una computadora mediante cable USB

(Alámbrica o Inalámbricamente) o por Puerto Serie. Contiene cinco sensores con los cuales se captura, con un valor lineal, que

dependerá de que tan flexionados se encuentran los dedos. Cabe resaltar que éste tipo de guante solo puede medir en dos

grados de libertad los movimientos de los dedos) y esto puede resultar una limitante si se desea trabajar con la mano

desplazándose en un espacio en tres dimensiones. Si se llegase a necesitar algo así existen tipos de dispositivos que se pueden

utilizar para realizar este tipo de mediciones.

Las características principales del Guante de Datos 5 Ultra son:

Tecnología Avanzada de Sensores

Muy cómodo

Flexible (un sólo tamaño que se ajusta)

Calibración Automática

Plataforma Independiente

Kit de Desarrollo de Software Multiplataforma (Windows, Linux y Mac)

Índice Alto de Datos Capturados

Poca Interferencia entre los Dedos

Versión en Inalámbrico Disponible

Conectado Rápido [3]

Con ayuda de este hardware es posible crear una interfaz que permita captar el movimiento de la mano y mostrar en pantalla lo

que se está haciendo con la mano en tiempo real.

Antecedentes En la década de los noventas, especialmente en los últimos años, muchos investigadores han construido dispositivos que “lean”

la mano e interpreten los gestos con computadora. Se describe cronológicamente los guantes más importantes que aparecieron

en la literatura y en el mercado.

Sayre Glove – Tomas DeFanti y Daniel Sandin de la universidad de Illinois en Chicago EU, desarrollaron un guante a bajo costo

y ligero que monitoreaba los movimientos de las manos. Basado en la idea de Rich Sayre usaron tubos fleixbles (no de fibra

óptica) con una fuente de luz en un extremo y una fotocelda en el otro. Los tubos fueron montaados a lo largo de cada uno de

los dedos del guante. Mientras cada tubo es doblado, la intensidad de la luz que pasa entre la fuente y la fotocelda se siminuye

eventualmente. El voltaje de cada fotocelda es entonces correlacionado con el doblez del dedo. No usaron el guante como

dispositivo de medidor de gestos.

MIT LED Glove – En los años 80 los investigadores del grupo de Arquitectura de Máquinas y el Laboratorio de Multimedia del

Instituto Tecnológico de Massachussetts, usaron una cámara basada en un sistema LED (Diodo Emisor de Luz) para seguir al

cuerpo y posición de sus miembros en animación por gráficos de computadora en tiempo real. Este trabajo incluye un uante

cubierto con LED’s. Enfocando la cámara solo en la mano, se captura el movimiento de los dedos. A diferencia del Sayre Glove,

el LED Glove se usa para captura de movimiento y no como un dispositivo de control.

Digital Data Entry Glove – En 1983, Gary Grimes de los Laboratorios de Teléfono de Bell desarrollaron un guante especialmente

para la entrada de datos usando un alfabeto a partir de los signos de la mano. Consiste en un guante de tela dentro del cual

fueron cocidos numerosos sensores, posicionados específicamente para reconocer un alfabeto especial para sordomudos.

Reconocía 80 combinaciones únicas de las lecturas del sensor y arroja 86 caracteres ASCII. Nunca se usó cotidianamente ni fue

comercializado.

3

DataGlove – En1987, Thomas Zimmerman y otros desarrollaron un guante que monitoreaba diez articulaciones de los dedos y

los seis grados de libertad de la posición y orientación de las manos. El DataGlove fue un avance importante entre las técnicas

de monitoreo con cámara de los movimientos de la mano, ligero, más cómodo y de uso general. Físicamente, consiste en un

guante de licra de bajo peso con fibras ópticas colocadas especialmente en la parte trasera de los dedos. La flexión de los dedos

dobla las fibras atenuando la luz que transmiten. La fuerza de la señal de cada una de las fibras es enviada hacia un procesador

que determina los ángulos de las articulaciones basadas en pre-calibraciones de cada usuario. Algunos guantes de datos o

DataGloves tienen sensores para medir la abducción entre los dedos. Un seguidor magnético de tres espacios atado a la parte

trasera de la mano determina posición y orientación de la palma. La velocidad a la que se reciben los datos es aproximadamente

30Hz que también es insuficiente para los movimientos rápidos de la mano.

Dexterous HandMaster (DHM) -- fue originalmente desarrollada como un control maestro para una mano robótica del Instituto

Tencológico de Massachussetts por Arthur D. Little y Sarcos. DHM es un dispositivo tipo exoesqueleto que se pone sobre la

mano y los dedos y usando el sensores del efecto Hall como potenciómetros en las articulaciones, mide con precisión el doblez

de las tres articulaciones de cada dedo así como también la abducción entre ellos y el movimiento complejo del pulgar. El DHM

mide veinte grados de libertad de la mano, cuatro por cada dedo. Las señales analógicas de los sensores son recolectadas por

una tabla Analógico-Digital personalizada que es compatible con la computadora y son capturadas hasta 200 muestras por

minuto. El DHM no mide la posición y orientación de la palma pero un seguidor de tres espacios pueden. Aunque originalmente

fue desarrollado para robótica, el DHM ha sido comercializado satisfactoriamente como una herramienta para análisis clínico de

las funciones de la mano.

Power Glove – Inspirado en el éxito del DataGlove , la compañía de juguetes Mattel manufacturó en 1989 un guante de bajo

costo como control de la consola de videojuegos Nintendo. El Power Glove es un guante de plástico flexible con una palma de

licra. Dentro del plástico en las partes traseras de los dedos se encuentras sensores flexibles de un material especial que

registran el doblez de los dedos con dos bits de precisión por dedo. (Esto es una limitación de los convertidores Analógico-Digital

que se usaron, no los sensores en sí). Seguidores acústicos (Son los que utilizan sonidos de alta frecuencia para triangular la

fuente en el espacio de trabajo) montados en la parte de atrás de la mano localizan el guante en el espacio con precisión. Sirvio

para diversos videojuegos de Nintendo pero después de 2 o 3 años, Mattel detuvo la producción del Power Glove, y ahora solo

están disponibles por almacén y segunda mano.

CyberGlove – James Kramer desarrollo el CyberGlove en la Universsidad de Stanford como parte de su trabajo para traducir el

lenguaje de señas americano a inglés hablado. Consistía de un guante de tela personalizado con 22 medidores de tensión

compuestos de una delgada lámina cocida en la tela para sentir el doblez de la muñeca y dedos. Una pequeña caja electrónica

convierte las señales analógicas en flujos digitales que pueden ser leídos por un puerto serie estándar de una computadora. Al

igual que el DataGlove y el DHM, un seguidor de tres espacios puede ser montador en el guante para obtener la posición de la

mano en el espacio. Experimentos informales han encontrado que el CyberGlove tiene un desempeño suave y estable, con

resoluciones de un grado de libertad. Su cualidad principal es que es más preciso que otros guantes. El CyberGlove esta

disponible comercialmente para tecnologías virtuales. Es cómodo, fácil de usar, y con presicion compleja para trabajo con los

gestos.

Space Glove – Industrias W, recientemente renombraros Sistemas de Entretenimiento Virtual en Bristol, Inglaterra, hacen juegos

de realidad virtual. En 1991 la compañía lanzó el Space Glove para usar un su sistema virtual. El guante esta hecho de plástico

suave moldeado que se coloca en la parte de atrás de la mano, anillos alrededor de los dedos y un sujetador alrededor de la

muñeca para sostener el guante en su lugar. Un ángulo de flexión por cada dedo y dos para el pulgar son medidos usando

sensores con convertidores Analógico-Digital de 12 bits. Un seguidor magnético de tres espacios se incorpora en la parte trasera

de la mano.El guante responde bien ante el doblez de los dedos y el movimiento de la mano pero es algo incómodo pues el

plástico ahorca un poco los dedos. El Space Glove solo funciona con productos de las Industrias W. [1]

4

Estado Del Arte

El Guante de Datos 5 Ultra incluye una herramienta para probar los valores que arrojan los sensores, en una interface bastante

sencilla llamada Glove Manager, como se ve en la figura 2.

Figura 2 - Glove Manager, Guante Derecho con Mediciones en Tiempo Real

Se pueden capturar estos datos en lenguajes como C++ y C#, en los cuales, 5DT ofrece los kits de desarrollo de software en su

página oficial. Con ayuda de éstos kits se pueden desarrollar aplicaciones diferentes.

También el Guante de Datos 5 Ultra incluye una pequeña demostración de cómo se podría aplicar en un motor de gráficos en 3D

utilizando C++ y OpenGL con movimientos en tiempo real, tal como se muestra en la figura 3.

Figura 2 – Usando 5DT Data Glove 5 Ultra en C++ utilizando OpenGL

5

A partir de los valores que arroja el guante se pueden capturar y utilizar esos patrones para realizar funciones predeterminadas o

usar el dispositivo como capturador de movimiento dependiendo del propósito para el cual se utiliza. El costo es aun algo alto

como para utilizarlo cotidianamente y es un poco delicado de sus conexiones internas si no se utiliza con cuidado.

Metodología

El esquema de trabajo a seguir, se muestra en la figura 3.

Figura 3 – Metodología

Desarrollo

a) Análisis

Primeramente se analizaron los requerimientos de información que son:

Obtención de los parámetros de salida del Guante de Datos 5 Ultra.

La Visualización la mano en un entorno Virtual

Para esto se debe de contar el siguiente hardware:

Procesador AMD Fusion E350 doble núcleo a 1.6Ghz

3gb de Memoria RAM

Windows 7 Starter

Tarjeta Gráfica AMD Radeon HD 6310

320 Gb de Capacidad del Disco Duro

Para el desarrollo se realizó con el siguiente software:

Visual Studio 2010 Professional

XNA Game Studio 4.0

XNA Game Studio 4.0 es un entorno de programación que le permite usar Visual Studio para crear juegos para Windows

Phone, la consola Xbox 360 y equipos basados en Windows. XNA Game Studio incluye XNA Framework, que es un

conjunto de bibliotecas administradas diseñadas para el desarrollo de juegos basado en Microsoft .NET Framework 2.0. [4]

XNA permite utilizar a C# como el lenguaje de programación que se acoplará con el Guante de Datos 5 Ultra y que nos

ayudará a capturar más fácilmente los datos de guante.

Buy SmartDraw!- purchased copies print this

document without a watermark .

Visit www.smartdraw.com or call 1-800-768-3729.

6

AutoDesk Maya

Para la creación de una interfaz en 3D en donde se manipula los dedos de una mano con ayuda del Data Glove 5DT, es

necesario primero escoger un programa que nos ayude a modelar una mano en tres dimensiones, entre los cuales, existen

programas como 3DMax, Blender, Maya, entre otros. Autodesk 3ds Max proporciona potentes herramientas integradas de

modelado, animación, renderización y composición en 3D que multiplican rápidamente la productividad de los artistas y

diseñadores. [5]

Blender es un programa de modelado en 3D, apoyado por varias herramientas, es multiplataforma (corre en Windows XP, Vista

32 y 64 bits, Linux 32 y 64 bits, MacOS, solaris, etc.). Fue creado por la empresa Not a Number (NaN). Está orientado a artistas y

profesionales del diseño y multimedia, puede ser usado para crear, visualizaciones 3D estáticas o vídeos de alta calidad.

También incorpora un motor de 3D en tiempo real el cual permite la creación de contenido tridimensional interactivo que puede

ser reproducido de forma independiente. Blender se desarrolla como Software Libre, con el código fuente disponible bajo la

licencia GNU GPL, su descarga y su uso es completamente gratuito. [6]

Maya® es una potente solución integrada de modelado 3D, animación, efectos y renderización. Dado que Maya se basa en una

arquitectura abierta, es posible programar o aplicar guiones sobre sus trabajos utilizando una API (Interfaz de programación de

aplicaciones) extensa y bien documentada, o uno o dos lenguajes de programación integrados. Esto, combinado con el mejor

conjunto de herramientas 3D del sector, hace de Maya una solución que le permitirá hacer realidad sus ideas creativas [7]

A pesar de que los tres programas se encuentran orientados al desarrollo de modelos en 3D, por experiencia propia, Maya es el

que tiene una interface más amigable con el usuario, tiene una API muy parecida a C llamada MEL o Lenguaje Embebido de

Maya, el cual, es el lenguaje que crea, cambia y administra todo en Maya y que se caracteriza por ser muy parecido a C;

Además se contó con más fuentes de información más abundantes que 3d Max o Blender.

b) Diseño

Con Maya se logró el movimiento de una mano 3D donde fue necesario hacer un esqueleto que posteriormente seria acoplado a

un modelo en Maya. Existen muchísimas páginas web de donde conseguir modelos 3D en diferentes formatos, en este caso se

encontró una mano humana de apariencia aceptable que se descargó para trabajar con ella. [8]

Con ayuda de XNA se planeó una aplicación para captura de los parámetros del Guante de Datos, convertirlos a valores útiles

para Maya y guardarlos en un archivo de texto que después sería interpretado por MEL Se sabe que en potencia se podría hacer

la interfaz completa en XNA pero los conocimientos con los que se cuenta y debido al poco tiempo que implicaría entender toda

la teoría y programación requerida era más sencillo realizarse con ayuda del Lenguaje Embebido de Maya.

En XNA y C# se desarrolló un módulo intermediario entre el Guante de Datos y la computadora, a razón de que en XNA ofrece

las iteraciones propias de un motor de gráficos en código por default refrescando la pantalla en un promedio de 60 cuadros por

segundo, así que, si queremos capturar los datos del guante se obtendrán a una tasa bastante aceptable.

7

c) Modelado

Para que cada dedo de la mano del modelo en 3D tenga un movimiento lo más cercano a la realidad se analiza primero cuales

son los límites más apropiados de los movimientos de los dedos que debería tener el modelo, para eso se estudia un poco la

estructura anatómica para saber cómo está dividido el esqueleto y hacerlo de igual manera en Maya.

Figura 4 – Anatomía de los huesos de la Mano y Muñeca

Un esqueleto en programas como Maya, 3DMax, Blender, entre otros. es una estructura jerárquica de figuras unidas unas con

otras por una especie de “articulación” en las que si se mueve la unión o hueso padre, sus hijos también se moverán junto con él

dándole la apariencia de un esqueleto real. Se puede acoplar a un modelo 3D para que éste se transforme de acuerdo a como

se muevan sus uniones o roten sus articulaciones.

Conocer las partes en las que se divide la mano permitió dividir los “joints” o uniones del esqueleto, mover los ejes de las

articulaciones y limitarlos para un doblez adecuado tratando que fuese lo más cercano a la estructura de una mano real y sobre

todo que funcionara igual que una al mover o rotar las articulaciones. En la figura 5 se muestra como se ve el esqueleto de la

mano en maya una vez acoplado con el modelo. En total son 21 articulaciones en el esqueleto, pero debido a las limitantes del

Guante de Datos 5 Ultra solo se necesitarán rotar 15 para lograr el efecto de flexión-extensión. Es importante no colocarle

textura al modelo ya que requiere más trabajo en el procesador a la hora de rotar las articulaciones.

8

Figura 5 – Modelo de Mano en 3D con esqueleto acoplado.

d) Comunicación

La aplicación final en XNA muestra en pantalla el nombre del Guante de Datos, el número y descripción del gesto

predeterminado que se realiza en tiempo Real, el valor escalado de 0.00 de totalmente extendido a 1.00 para flexionado de cada

sensor, los cuadros por segundo a los que se ejecuta nuestra interfaz, el tiempo total y los cuadros totales que se han

reproducido. Lo realmente necesario son los valores escalados, así que una vez que se están obteniendo se designó un botón

(tecla Z) para que, mientras se encuentra presionada, tome los valores escalados de esa iteración, los convierta a valores útiles para la

rotación de las articulaciones del esqueleto en Maya y las grabe en un archivo de texto o .txt , como se muestran en las figuras 6 y 7.

El único detalle que es necesario mencionar es que como Guante de Datos se autocalibra, a veces, cerrando y abriendo la mano los valores

escalados ya no tocan el 0.00 y eso podría evitar que se representara la mano totalmente plana en el modelo virtual de la mano.

9

Figura 6 – Aplicación en XNA leyendo Parámetros del Data Glove

La información en pantalla del nombre del guante de Datos, el número de gesto y su descripción y el valor de los sensores

provienen de funciones predefinidas de las librerías para c# proporcionadas por la compañía 5DT.

Los cuadros por segundo (CPS) o FPS (Frames per Second en Inglés) se designan por el número de veces que se ha llevado a

cabo el método Update o de refrescado en XNA dividido entre el tiempo total en segundos transcurrido desde que se ejecuta la

aplicación. La fórmula es sencilla:

Para que el resultado sea el correcto tanto la variable donde se coloca el número de iteraciones como la del tiempo total son

actualizadas en cada iteración, esto nos permitirá darnos cuenta si cambia el ritmo al que se ejecuta nuestra aplicación en XNA.

El tiempo y cuadros que se muestran son los mismos valores que se utilizaron para obtener los cuadros por segundo.

10

Figura 7– Archivo de Texto con los Parámetros que leerá MEL

Para evitar errores a la hora de programar las conversiones de los datos del guante se tuvo a Maya a la mano todo el tiempo. A

todas las articulaciones de los dedos excepto a las del pulgar se les limitó la rotación a un solo eje, en este caso al eje Y, con el

fin de que rotaran hacia el mismo lugar siempre cuando se quisiera doblar, esto se hace en el apartado “Limit Information” de las

propiedades de cada articulación. El dedo pulgar fue caso especial pues son solo dos articulaciones y cuando lo flexionamos se

dobla en ejes diferentes a los del resto de los dedos, así que la primera articulación del dedo pulgar rota en Z y la segunda en Z y

en Y para verse más natural.

La estructura en la que se colocan los datos en el archivo de texto consta de valores que se van guardando en 15 a la vez por

iteración, 3 valores por cada dedo los cuales designan el valor de la rotación del eje en ese momento que debe tener cada

articulación. Si el valor del sensor del dedo índice muestra 0.50 y los grados máximos que puede rotar una articulación del

mismo dedo son 30° entonces la rotación del eje Y en ese momento debe de guardarse con un valor de 15°. Matemáticamente

se puede expresar esto con la siguiente fórmula:

El siguiente paso fue realizar un “script” o código en MEL para leer el archivo de texto y colocar estos valores en el atributo

“Rotation” del eje predeterminado de cada articulación. Primero se crean 15 variables flotantes en donde captaremos de 15 en

15 los valores del archivo de texto por iteración de lectura y con ayuda de las funciones de manejo de archivos incluidas en MEL

abrimos el archivo de texto con ayuda del método “fopen”, que nos pide como parámetros la dirección en donde se encentra

almacenado nuestro archivo de texto seguido de una letra específica que determinará leer o escribir en el archivo, en este caso

se quiere leer y se colocó la letra “r” de la palabra “Read” en inglés, por ejemplo: fopen(“C:\\Archivo.txt”,”r”). Después se creaba

un bucle para leer nuestro archivo de principio a fin y con ayuda de la función “fgetword” se lee y se coloca en cada una de las 15

variables float los valores que se guardaron en el archivo de texto para posteriormente con ayuda del comando “setAttr” de MEL

se coloca ese valor en la rotación del eje correspondiente. Suponiendo de esta forma que estará tanto leyendo como colocando

los valores del archivo de texto en el atributo correspondiente a buena velocidad haciendo animar a la mano con los parámetros

pregrabados en XNA.

Utilizando la misma fórmula de los cuadros por segundo en XNA se puede poner en MEL como apoyo para saber los CPS a los

que se está ejecutando código. Asi que se creó una variable $cuadros y otra $tiempo y con ayuda del comando “dgtimer”

podremos obtener el tiempo que transcurrió para ejecutar las iteraciones completas.

11

Resultados

El programa de captura de los datos en XNA se ejecuta sin problemas, lo muestra a una tasa de 60 cuadros por segundo y varía

en valores pocos significativos inclusive aunque se estén grabando los datos al archivo de texto. Como se mencionó antes tras

algunos movimientos de abrir y cerrar de la mano ya casi no se tocan los valores de los dedos totalmente extendidos que son de

0.00. Hay que ajustar el Guante de Datos hasta que quede bien colocado para obtener los datos más cercanos a la realidad.

Figura 8 – Grabando los valores del Guante de Datos 5 Ultra

Una vez terminado de grabar se ejecutó el código que lee los valores en Maya, y se logró que la mano virtual hiciera los mismos

movimientos que se grabaron con XNA pero a una tasa de alrededor de 25 cuadros por segundo.

Figura 9 – Maya reproduciendo los valores grabados con XNA

12

Se comprobó que si se reproducen los parámetros del archivo de texto en una computadora con un procesador con más

capacidad los parámetros se leen más rápidamente. Se hizo la prueba varias computadoras como se ilustra en la figura 10.

Computadora Procesador CPS

Laptop Hp Pavilion dm1 AMD E350 Fusion Dual Core 1.6 Ghz 25

HP Intel Pentium Dual Core 39

MAC Intel I5 62

Laptop Hp Pavilion dv7 Intel I7 2.8Ghz 52

Figura 10 – Tabla Comparativa de Resultados

Conclusiones

Los resultados obtenidos durante la investigación aunque no fueron los óptimos pero si cumplieron con el objetivo principal que

era lograr que una mano se moviera en un entorno virtual de acuerdo a los movimientos que se llevaran a cabo con el Guante de

Datos 5 Ultra de la compañía 5DT.

Aunque al principio se tenía pensado que la interfaz fuera desarrollada sólo en XNA, se fue descubriendo que el conocimiento

necesario para desarrollar la aplicación era mucho más extenso, los conceptos que se requieren dominar la programación en 3D

necesitarían más tiempo del que contaba y fue necesario buscar otra salida para lograr el objetivo de ésta investigación.

En potencia si se le dedica más tiempo a este proyecto, la mano virtual podría moverse en tiempo real en Maya o inclusive en

XNA. Y se espera que con lo que se desarrolló, se utilice como base para futuras aplicaciones que ayuden en el área de

rehabilitación de personas con hemiplejia.

Bibliografía y Referencias Electrónicas

[1] – Sturman, D.J., Zeltzer, D. (Enero 1994). "A Survey of Glove-Based Input". IEEE Computer Graphics and

Applications 14 (1): 30–39

[2] – Página web del Centro Nacional de las Artes, http://www.cenart.gob.mx/doc/doc/timeline/avantec/data.html

[3] – Página web de la compañía fabricante del guante de datos 5 ultra 5DT http://www.5dt.com/products/

pdataglove5u.html

13

[4] – Página web de procedimientos y documentación de productos de Microsoft http://msdn.microsoft.com/es-

es/library/ms123401.aspx

[5] – Página web de Autodesk, http://www.autodesk.es/adsk/servlet/pc/index?siteID=455755&id=14626995

[6] – Blog de Renderati, http://www.renderati.com/render/%C2%BFque-es-blender/

[7] – Página web de EICAD (Especialistas en Software de Arquitectura, Ingeniería, Construcción y Multimedia),

http://www.eicad.es/producto.aspx?idsecc=135

[8] – Página Web 3D Find, para descargar modelos en 3D gratis, http://3dfind.ru