Documente Academic
Documente Profesional
Documente Cultură
CONSERVACIN
D ET
INNOVACIN
EC
CI
CENTRO DE INNOVACION Y DESARROLLO
TECNOLOGICO EN COMPUTO
Presenta:
Directores de Tesis:
Mexico, D.F.
Julio 2015.
Resumen
En el presente trabajo se presenta una forma de interactuar con objetos virtuales haciendo uso
de un dispositivo para detectar gesturas de las manos, las cuales van a indicar el tipo de interaccion
que se desea hacer con el objeto, o dicho de otra manera, las gesturas van a indicar una instruccion
o conjunto de instrucciones que se van a ejecutar sobre el objeto. El numero mnimo de gesturas
seran cuatro y se observara todo lo realizado en tiempo real haciendo uso de una pantalla montable
en la cabeza. Se pretende utilizar unas gafas de Realidad Aumentada, pero tambien existe la opcion
de utilizar unas gafas de Realidad Virtual y adaptarle una camara para que se comporte como gafas
de Realidad Aumentada.
I
Abstract
In this work it is presented a way of interact with virtual objects using a gadget for hand
gesture detection, the hand gesture will indicate the interaction type wished for the object, or in
other words, the gestures will indicate a instruction or group of instructions that are going to be
executed over the object. The minimun number of gestures will be four and it will be observed all
in real time, using a head monted display. It is pretended use augmented reality glasses, but it is
posible to use virtual reality glasses with a webcam mounted over the glasses simulating the use of
augmented reality glasses.
II
Agradecimientos
Tambien doy gracias a mi ta por apoyarme y darme alojamiento el tiempo que necesite y gracias
tambien a mis asesores por apoyarme y guiarme en este camino que sin ellos no hubiera podido ser
capaz de recorrer. Gracias tambien a mi hijo que siempre estuvo presente en mi pensamiento y fue
una de las principales razones para seguir adelante.
Y por ultimo pero no menos importante, doy gracias a Dios por darme lo necesario para culminar
satisfactoriamente este trayecto que me fue otorgado, y por la compana que me brindo estos dos
anos en forma de un ser muy especial para mi.
III
Indice general
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I
Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II
Agradecimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III
Captulo 1 Introduccion 1
1.1 Historia de la Realidad Aumentada . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Aplicaciones de la Realidad Aumentada . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Medicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Manufactura y reparacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.3 Anotacion y visualizacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.4 Control de la ruta de un robot . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.5 Entretenimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.6 Aeronaves militares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Problemas de la Realidad Aumentada . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.1 Desajustes de registros estaticos y dinamicos . . . . . . . . . . . . . . . . . . 9
1.3.2 Campo de vision restringido . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.3 Limitaciones y desajustes por claridad de imagen y resolucion . . . . . . . . 10
1.3.4 Desajustes y limitaciones de luminosidad . . . . . . . . . . . . . . . . . . . . 10
1.3.5 Desajustes de contraste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.6 Desajustes de tamano y distancia . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.7 Resolucion de profundidad limitada . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.8 Desajuste de alineamiento vertical . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.9 Fallas de interposicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
IV
1.3.10 Ausencia de sombras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4 Estado del arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.5.1 Justificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6 Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6.1 Objetivos Particulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.7 Metodologa y discusion preliminar . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.8 Organizacion de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Captulo 2 Dispositivos para la aplicacion 21
2.1 Deteccion de gesturas de manos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.1 Leap Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.1.1 Gesturas disponibles en Leap Motion . . . . . . . . . . . . . . . . . 24
2.1.2 MYO[1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1.3 DepthSense 325[2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1.4 Touch+[3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.1.5 Guante DG5-VHand 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2 Gafas de Realidad Aumentada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.1 Google Glass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.2 Oculus Rift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.3 Meta Pro[4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2.4 Epson Moverio BT-200[5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2.5 ICIS[6] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.2.6 ORA[7] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.2.7 Vuzix M100[8] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Captulo 3 Diseno y propuesta de la solucion 39
3.1 Integracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.1 Montado de camara de video sobre Oculus . . . . . . . . . . . . . . . . . . . 40
3.1.2 Montado de Leap Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.2 Sistema propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
V
3.2.1 Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2.2 HMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2.3 Leap Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.4 Procesamiento y RV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.5 Unity3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3 Funcionamiento interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3.1 Blender-Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3.2 Leap-Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3.3 Oculus-Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4 Especificaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4.1 Software requerido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4.1.1 Blender[9] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4.1.2 Unity[10] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.4.1.3 Leap Motion Version 2 . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.4.1.4 Leap Motion V2 Skeletal Assets . . . . . . . . . . . . . . . . . . . . 51
3.4.1.5 Oculus Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4.1.6 Oculus SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4.1.7 Oculus-Unity Integration . . . . . . . . . . . . . . . . . . . . . . . 51
3.4.2 Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4.2.1 Calculadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.4.2.2 Casa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.4.2.3 Silla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.4.3 Gesturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4.4 Programacion de scripts en Unity . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4.5 Integracion de los elementos a Realidad Aumentada . . . . . . . . . . . . . . 63
3.4.6 Interaccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.4.6.1 Seleccion y de-seleccion . . . . . . . . . . . . . . . . . . . . . . . . 65
3.4.6.2 Arrastre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.4.6.3 Rotacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
VI
3.4.6.4 Rotacion en un eje . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.4.6.5 Escalado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.4.6.6 Eliminar objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Captulo 4 Pruebas experimentales 71
4.1 Pruebas de la aplicacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.2 Comentarios personales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Captulo 5 Conclusiones 80
5.1 Obstaculos, limitaciones, problemas y desafos . . . . . . . . . . . . . . . . . . . . . 81
5.2 Trabajo a futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Anexos 83
Anexo A. Diagramas de flujo 84
Anexo B. Especificaciones tecnicas de los dispositivos 87
DepthSense 325 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Guante DG5-VHand 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Google Glass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Oculus Rift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
ICIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Meta Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Epson Moverio BT-200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
ORA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Vuzix M100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Camara web USB Logitech C170[11] . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Anexo C. Scripts de la aplicacion 97
Bibliografa 137
Glosario 141
Acronimos 155
VII
Indice de figuras
2.1 Imagen del Leap Motion con sus respectivos ejes de coordenadas. . . . . . . . . . . . . . . . . 23
2.2 Gestura circular con el dedo ndice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Gestura tipo swipe horizontal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4 Gestura tipo Key Tap con el dedo ndice. . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5 Gestura tipo Screen Tap con el dedo ndice. . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6 Dispositivo MYO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.7 Dispositivo DEPTHSENSE 325 de SoftKinetic. . . . . . . . . . . . . . . . . . . . . . . . . 27
2.8 Algunos componentes del dispositivo DEPTHSENSE . . . . . . . . . . . . . . . . . . . . . . 28
2.9 Una mirada dentro de las partes electronicas del dispositivo.[15] . . . . . . . . . . . . . . . . 29
2.10 Dispositivo Touch+.[15] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
VIII
2.11 Guante de datos DG5-VHand 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.12 Imagen de las Google Glass. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.13 Imagen de las gafas Oculus Rift. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.14 Imagen de las gafas Meta Pro[16]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.15 Imagen de las gafas Epson Moverio BT-200. . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.16 Imagen de las gafas ICIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.17 Imagen de las gafas ORA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.18 Imagen de las gafas Vuzix M100. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
IX
3.21 Base de la silla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.22 Silla en formacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.23 Silla finalizada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.24 Objetos fuera de lugar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.25 Planos de obstruccion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.26 Proceso de seleccion de objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.27 Proceso de arrastre de objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.28 Proceso de rotacion de objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.29 Proceso de rotacion en eje de imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.30 Proceso de escalado de objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.31 Proceso de eliminacion de objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
X
Indice de tablas
XI
Captulo 1
Introduccion
Hoy en da la tecnologa forma parte importante de la vida diaria, puesto que la mayora de
las personas tiene en sus hogares refrigeradores, televisiones, radios y muchos otros dispositivos que
poco a poco se van haciendo mas populares y necesarios de lo que muchos pensaban que podan
lograr serlo.
Hablando de dispositivos mas actuales, existen los lectores de Blu-ray, las computadoras per-
sonales, las televisiones inteligentes, telefonos inteligentes, consolas de video juegos y ultimamente
los relojes inteligentes, todos estos tienen algo en comun, eso es que deben de tener una forma en
la que el usuario tiene que interactuar con ellos. En los primeros intentos de interacciones con los
dispositivos, bastaba con oprimir algun boton que estaba integrado directamente en el dispositivo,
despues se paso a la opcion de oprimir algun boton de un control remoto, pasando por oprimir
algun boton virtual en la pantalla del dispositivo, comandos de voz, entre muchas otras formas de
interaccion cuyo objetivo no es otro mas que el hacerle la vida mas facil al usuario.
1
Adentrandonos un poco mas al tema de interes, que en este caso es la Realidad Virtual (VR
por sus siglas en Ingles, Virtual Reality) y la Realidad Aumentada (AR por sus siglas en Ingles,
Augmented Reality), las consolas de video juegos son un ejemplo muy entendible de lo que es el
concepto de VR. Se sabe que estos dispositivos nos introducen a un mundo imaginario, un mundo
virtual en el que los jugadores interactuan con ese mundo y se sumergen tanto, que en ocasiones
lograran pensar que son parte de el. La AR es una combinacion de nuestro mundo real (todo lo
que tocamos y apreciamos diariamente) y ciertos objetos virtuales que no forman parte del mundo
real, pero que se ven como si estuvieran en el.
Los marcadores son algo a tener muy en cuenta en la AR, puesto que casi todo lo relacionado con
este tema trabaja con al menos un marcador. Un marcador es generalmente un dibujo que puede
variar, los mas comunes constan de un borde negro de un ancho determinado, y en su interior,
tienen un dibujo negro o un patron que hace que se diferencien unos de otros. En la Figura 1.1
se puede apreciar un ejemplo de la utilizacion de un marcador, donde la mujer que aparece en el
telefono celular en la imagen de la derecha, no existe en el mundo real.
2
La AR se clasifica en 4 niveles:[17]
Nivel 0: Hipervnculo del mundo fsico: Un simple enlace del mundo fsico al mundo virtual
sin involucrar graficas o algun renderizado en tiempo real. Los ejemplos incluyen codigos de
barras y reconocimiento de imagenes 2D.
Nivel 2: AR sin marcadores: No hay requisitos para los marcadores en cuestion de metodos
de rastreo y de registro. El rastreo es mas robusto, permitiendo la realizacion de AR movil.
Sensorama: En los anos 1960-1962 Morton Heiling creo un simulador multi-sensorial. Una
pelcula pre-grabada en color, fue aumentada por un sonido binaural, esencia y experiencias
de vibracion. Esta fue la primera aproximacion para crear un sistema de VR y tiene todas las
caractersticas de dicho ambiente, pero no era interactivo.
3
GROPE: El primer prototipo de un sistema de retroalimentacion de fuerza realizada en la
Universidad de Carolina del Norte (UNC) en 1971.
VIDEOPLACE: Realidad artificial creada en 1975 por Myron Krueger, un entorno concep-
tual, sin existencia(basicamente es VR). En este sistema las siluetas de los usuarios tomadas
por las camaras eran proyectadas sobre una pantalla larga. Los participantes eran capaces de
interactuar uno con otro gracias a las tecnicas de procesamiento de imagen que determinaban
sus posiciones en una pantalla de espacio 2D.
VIVED: Pantalla visual de ambiete virtual (VIrtual Visual Environment Display). Cons-
truido por la NASA Ames en 1984 con tecnologa comercial, un HMD estereoscopico mono-
cromatico.
BOOM: comercializado en 1989 por los laboratorios Fake Space. BOOM es una pequena caja
que contiene dos monitores CRT que pueden ser vistos a traves de unos agujeros para los ojos.
El usuario poda agarrar la caja, posicionar sus ojos y moverse a traves del mundo virtual,
mientras un brazo mecanico meda la posicion y orientacion de la caja.
4
CAVE: presentado en 1992, CAVE (Automatic Virtual Environment o ambiente virtual au-
tomatico) es un sistema de visualizacion cientfica de VR. En lugar de usar HMD, proyecta
imagenes de tipo estereoscopico en las paredes de un cuarto (el usuario debe usar lentes ob-
turadores LCD). Esta aproximacion asegura una mejor calidad y resolucion de las imagenes
vistas, y un campo mas amplio de vista en comparacion con sistemas basados en HMD.
1.2.1. Medicas
Los doctores pueden usar AR como auxiliar para la visualizacion y entrenamiento para una
ciruga. Puede ser posible recolectar conjuntos de datos del paciente en tiempo real, usando sensores
no invasivos como imagen de resonancia magnetica.
5
de imagenes 3D pueden ser animadas, haciendo las instrucciones mas explicitas.
Muchos proyectos de investigacion han demostrados prototipos en esta area. El grupo de Steve
Feiner en Columbia construyo una aplicacion prototipo para el mantenimiento a una impresora
laser como se muestra en la Figura 1.2, ah se muestra como quitar la bandeja de papel.
La AR puede ser usada para mostrar anotaciones sobre objetos y entornos, ya sea con informacion
publica o privada. Las aplicaciones que usan informacion publica asumen la disponibilidad de bases
de datos para su utilizacion. Por ejemplo, una pantalla de mano puede proveer informacion acerca
de contenidos de los estantes de una librera mientras el usuario camina por la librera. En el centro
de desarrollo de equipo para la industria Europea (European Computer-Industry Research Centre,
ECRC), un usuario puede apuntar a partes de un modelo de un motor y el sistema de AR muestra
el nombre de la parte que esta siendo apuntada. La Figura 1.3 muestra esto, cuando el usuario
apunta al colector de escape (exhaust manifold), sobre el modelo aparece la etiqueta colector de
escape, y dependiendo del lugar al que apunte el usuario, se muestra la etiqueta correspondiente
de la parte del modelo de un motor.
6
Figura 1.3: Uso de etiquetas.[13]
7
Figura 1.4: Lineas virtuales para teleoperacion.[13]
1.2.5. Entretenimiento
Por muchos anos, las aeronaves militares y los helicopteros han usado pantallas para la cabe-
za (Head-Up Displays, HUD) y cascos montados con vision (Helmet-Mounted Sights, HMS) para
superponer graficas vectoriales sobre la vista del mundo real del piloto. Ademas de proveer infor-
macion basica de navegacion y de vuelo, estas graficas en ocasiones son registradas con blancos en
el entorno, proveyendo una manera de apuntar las armas de las aeronaves.
8
1.3. Problemas de la Realidad Aumentada
Existen varias situaciones que debemos de tomar en cuenta debido a los problemas de la AR. A
continuacion se mencionaran los problemas obtenidos de [19].
Asumiendo que una pantalla grafica calibrada y ortoscopica puede ser creada por un sistema de
pantalla de AR o mixta, el problema recae en como registrar o alinear el sistema de coordenadas del
mundo virtual con el mundo real. Por ejemplo, los cambios visuales asociados con girar la cabeza
de una persona son esencialmente instantaneos, mientras que el retraso en la respuesta visual del
sistema de graficos o de video pueden ser de muchas decenas o cientos de milisegundos. Mantener el
registro en un ambiente dinamico y cambiante es un aspecto tecnologico muy desafiante. Un sistema
de AR donde los graficos retrasan la vista inmediata, puede llevar rapidamente a mareos, nausea y
otros sntomas similares a una enfermedad simulada, la cual es causada por disparidades entre la
informacion recibida por los sentidos visuales, de balance y equilibrio.
Un completo y acertado sentido del espacio requiere un muy amplio campo de vision. Nuestro
entendimiento del mundo que nos rodea es generalmente construido una cosa a la vez usando
arreglos relativos a cada cosa para ayudar a solidificar nuestras percepciones. Debido a un campo
de vision estrecho antinatural, cuando no somos capaces de ver las partes importantes del mundo
como el piso y nuestro cuerpo dentro del mundo perdemos gran confianza en nuestro entendimiento
del mundo. Acciones simples, como dar la vuelta a una esquina, puede ser muy difcil cuando el
usuario esta usando una pantalla montable en la cabeza con un campo de vista muy limitado.
Mientras mas grande es el campo de vision, en general, mas completo y acertada sera nuestra
percepcion de la profundidad.
9
1.3.3. Limitaciones y desajustes por claridad de imagen y resolucion
Los objetos que son mostrados en un HMD, monitor o proyector, necesariamente tienen menos
resolucion o frecuencia espacial que los objetos vistos directamente. Esto significa que sera
provista menos textura que en un objeto real en la misma posicion. Si esta falta de detalle es
inapropiadamente interpretada como una textura en perspectiva, la imagen sobre el objeto puede
parecer mucho mas lejos que lo que debera parecer el objeto en el mundo real.
Pocas pantallas son capaces de producir el rango e intensidad de iluminacion que tpicamente es
experimentada en el mundo real. El uso de una fuente de luz mucho mas intensa, como la luz de sol
directa, o la luz intensa en un punto focal, o de un proyector grande, resulta en una imagen que es
mucho mas complaciente, con mucho mas sentido del espacio visual, y con mucha mayor sensacion
de presencia.
Las imagenes borrosas no pueden ser acomodadas con precision, lo que lleva a la incertidumbre
o mala interpretacion del tamano y profundidad de las imagenes. Si el objeto es familiar o si el
observador asume conocer su tamano, entonces si el tamano aparenta ser mas pequeno de lo que
debera, esto implicara que esta mucho mas lejos de lo que debera, y viceversa. Los efectos de esto
podran ser significativos, y tambien podran variar dependiendo del ambiente de visualizacion.
10
1.3.7. Resolucion de profundidad limitada
La interposicion u oclusion, es la senal mas fuerte de profundidad, que puede sobrepasar todos
los otros. Un hecho que domina nuestra percepcion del mundo es que no importa que tan ambigua
pueda ser la situacion, los objetos cercanos no pueden ser ocluidos por objetos lejanos.
Independientemente de que tan bien desarrollado este un modelo del mundo real dentro de un
ambiente de AR, es casi imposible crear sombras realistas que aparenten caer en los objetos reales,
incluso para los sistemas de AR basados en video, especialmente bajo condiciones complejas del
mundo real. Las sombras son crticas para la teleoperacion que use video monoscopico, y juegan un
papel muy importante incluso con video estereoscopico.
11
1.4. Estado del arte
A continuacion, se presenta una revision de trabajos que utilizan AR:
En [21] trata del potencial que proveen los ambientes virtuales para nuevas aplicaciones, pero
tambien de la complejidad y los problemas de interaccion con estos ambientes, ademas del soporte
para la navegacion dentro del mundo que proporcionan y la adicion de vida al ambiente.
En [22] se aprecia como la AR esta creciendo poco a poco y obteniendo gran impacto en el sector
comercial, y que algunos estudios indican que la AR puede mejorar la visualizacion e incrementar
la comprension por parte del usuario. Tambien se mencionan proyectos que utilizan AR y entornos
de desarrollo, todo lo anterior basandose en AEC/FM (Architecture, Engineering, Construction,
and Facility Management. Su traduccion sera, Arquitectura, Ingeniera, Construccion y Facilidad
de Administracion). Ademas menciona una Conferencia Internacional sobre Realidad Aumentada
llamada ISMAR (International Symposium on Mixed and Augmented Reality).
En [14] trata del impacto y el potencial de la AR en la educacion, de como puede ser una buena
herramienta para incrementar la comprension de los alumnos y algunos dispositivos que se suelen
usar para detectar la posicion de la cabeza y las manos de las personas, como por ejemplo una
camara, giroscopios, acelerometros y GPS. En la Figura 1.5 y la Figura 1.6 se pueden apreciar
dispositivos que utilizan camaras y giroscopios, entre otro tipo de sensores.
En [23] se menciona que la AR debe de tener modelos tridimensionales de las manos y la cabeza
para que puedan interactuar con el mundo virtual. Tambien menciona que en la AR, el punto crtico
es detectar un marcador para iniciar nuestra interaccion con el mundo virtual, pero que se puede
leer el modelo geometrico de una mano humana, y utilizar ese modelo como marcador.
En [24] se presenta una manera de utilizar gesturas basadas en dos manos para interactuar con
dispositivos. Utilizan un Wiimote.
12
Figura 1.5: Pantallas montables en la cabeza (HMD).[14]
En [25] se hacen comparaciones de diferentes formas de interaccion con el usuario, desde los
modos auditivos, los menus visuales, menus circulares entre otros. Se hacen comparaciones del
tiempo de respuesta que necesito el usuario para realizar ciertas acciones y como el usuario se senta
al realizarlas, ademas de cuales eran las formas en las que el usuario senta que era mas rapida la
ejecucion. En la Figura 1.7 se puede apreciar una forma de deteccion de gesturas de manos utilizada
en este artculo.
13
Figura 1.7: Algoritmo simple de rastreo de mano usando Kinect. De izquierda a derecha: (1)imagen RGB de la
mano, (2)imagen de profundidad del Kinect, y (3)contornos detectados y un crculo blanco que marca
las puntas de los dedos y el punto a ser rastreado. [25]
TC V (Touch screen and visual circular menu, menu visual circular con pantalla tactil).
TC A (Touch screen and auditory circular menu, menu audible circular con pantalla tactil)
GC V (Gesture and visual circular menu, menu visual circular por gesturas)
GC A (Gesture and auditory circular menu, menu audible circular por gesturas)
TN V (Touch screen and visual numpad menu, menu visual con pantalla tactil y teclado
numerico)
TN A (Touch screen and auditory numpad menu, menu audible con pantalla tactil y teclado
numerico)
En [26] se menciona lo que es una camara de AR, en especfico una que trabaja con C, C++ y
OpenGL, y su funcionamiento, ya que lo que hace es sobreponer un objeto o imagen virtual en la
imagen que se tiene del mundo real, creando una combinacion entre ambos. Tambien define varios
aspectos de la camara de AR, coordenadas, algunas formulas y los sistemas que utiliza para el
posicionamiento.
En [27] se trata de las anotaciones, que es el proceso de agregar informacion extra a algun objeto
y su uso en ambientes de AR. En este artculo, se menciona que la forma mas comun para determinar
la posicion de la anotacion, es por medio de triangulaciones utilizando mas de una imagen.
En [28] se estudia una forma de que el marcador, que sirve como base, no este completamente
presente si algun objeto interfiere un poco en su vision, esto permite que el objeto virtual no
14
Figura 1.8: Tiempos de respuesta entre diferentes metodos de interaccion. Se puede observar como el metodo que
utiliza gesturas es mas lento debido a que los usuarios se encuentran mas familiarizados con el teclado
numerico, y el menu circular no es tan conocido.[25]
desaparezca porque no encuentra la posicion del marcador. El trabajo se basa en tecnologa RFID
(Radio Frecuency Identification).
En [29] se presenta una forma de como hacer que un objeto virtual se mueva sobre un plano
del mundo real, aplicando un algoritmo descrito en este mismo artculo. Todo esto se basa en el
posicionamiento de varios marcadores en diferentes lugares y planos del mundo real para determinar
las posibles opciones de movimiento del objeto virtual. En la Figura 1.9 se muestra la forma en que
se mezcla el mundo real con el mundo virtual.
Figura 1.9: Concepto de vision basada en AR. Un usuario puede observar tanto el mundo virtual y el real, sobre-
poniendo los objetos virtuales en las imagenes. Los usuarios observan un mundo mezclado.[29]
15
En [30] se hace un experimento para determinar el impacto positivo que tiene la AR en estu-
diantes de escuela media, ademas de mencionar algunas aplicaciones de AR enfocadas al entorno
academico. En la Figura 1.10 se muestran ejemplos de aplicaciones de AR sacados de este mismo
artculo.
Figura 1.10: Imagenes del arte del renacimiento italiano. Las imagenes estan aumentadas con informacion, pre-
guntas y objetos 3D.[30]
En [32] trata de la interaccion directa con las manos en un ambiente de AR. Se utiliza un
dispositivo Kinect para la deteccion de la profundidad de la mano y brazo, y as determinar la
posicion del objeto virtual sin que este se encuentre sobre la mano, esto hace que la sensacion de
realidad sea mejor.
En [33] se presenta un artculo que trata acerca de unas gafas especiales que utilizan una nueva
tecnologa llamada iAir Touch, la cual permite que la mano del usuario este libre de algun
dispositivo como una pantalla tactil o algun teclado para realizar una entrada tactil. Las gafas
cuentan con una camara con tecnologa DDDR (por sus siglas en ingles, Defined Distance with
Defined Range) para ver e interactuar con dispositivos de entrada, como una pantalla tactil o un
raton que pareciera como si estuvieran flotando en el aire, mientras que todava se puede ver e
interactuar con el mundo real. En la Figura 1.11 se pueden apreciar estas gafas.
16
Figura 1.11: Gafas con tecnologa i Air Touch. La tecnologa permite la interaccion virtual con pantallas de
computadoras.[33]
Como se puede lograr una interaccion mas natural con los objetos en un ambiente de AR?
Siempre se estan buscando formas para hacer que la interaccion con un ambiente de AR sea
cada vez mas natural para el usuario. Esta es la razon por la que esta tesis se centra en el desarrollo
de un software de AR para la manipulacion de objetos virtuales haciendo uso de gesturas de las
manos.
17
1.5.1. Justificacion
Como se mencionaba anteriormente, algunos estudios indican que la AR puede mejorar la vi-
sualizacion e incrementar la comprension por parte del usuario[22] por lo que puede ser de gran
ayuda para el sector educativo, ademas de proporcionar nuevas maneras y metodos de aprendizaje
que van estrechamente ligados a la tecnologa.
Este tema de tesis producira un prototipo que va a generar el conocimiento y los documentos
de como llegar a este mismo prototipo, para que si alguien quiera posteriormente utilizarlo en un
caso aplicado, darle las herramientas para lograr hacer algo como lo que se pretende realizar en este
tema.
Tambien se puede utilizar en proyectos de salud y de rehabilitacion, ya que haciendo uso del
movimiento de los dedos, manos o algun otro miembro del cuerpo, se puede poner a una persona
con problemas de movimiento en algun dedo a hacer ejercicios para mover ciertos objetos en un
ambiente de AR.
Hacer uso de las cuatro gesturas para interactuar con los tres objetos virtuales.
18
1.7. Metodologa y discusion preliminar
Se debera conocer el funcionamiento y las instrucciones del software y hardware requerido para
su posterior aplicacion. En cuanto al software requerido se encuentra Blender, el cual se utilizara
para el modelado de los objetos 3D debido a su gran potencial y licencia de software libre. Para el
hardware se necesitaran unas gafas de AR o algo similar y un dispositivo que permita la deteccion
de las gesturas de las manos. Tambien se debera utilizar AR y se debera hacer uso de por lo menos
cuatro gesturas de las manos para la interaccion con al menos tres objetos virtuales.
19
El Captulo 2 trata lo relacionado con los dispositivos que puedan ser de utilidad en la Tesis, los
dispositivos de deteccion de las gesturas de las manos y los que tienen capacidad de visualizacion de
sistemas de VR o AR. En esta tesis se debera de utilizar unas gafas de AR, pero existe la posibilidad
de utilizar unas gafas de VR adaptandole una camara digital con capacidad de video, y con el video
poder simular el ambiente de AR.
El Captulo 4 trata de las pruebas que se le realizaron a la aplicacion, en otras palabras, trata
de la ejecucion de la aplicacion y prueba por parte de algunos usuarios.
20
Captulo 2
Actualmente en el mercado, se puede encontrar una gran variedad de dispositivos tanto para la
deteccion de gesturas de manos como gafas de VR y gafas de AR. Estos pueden tener caractersticas
que van desde lo basico hasta lo mas complejo, as que es necesario examinar algunos de ellos para
determinar cuales son los dispositivos mas adecuados y factibles para la realizacion del proyecto.
Se comenzara el captulo con los dispositivos que realizan la deteccion de gesturas de manos,
analizando su utilidad, algunas de sus caractersticas, disponibilidad y precio.
21
2.1. Deteccion de gesturas de manos
El ser humano lleva mas de un millon de anos utilizando gestos y comunicacion no verbal.
Este tipo de comunicacion se ha empezado a estudiar hace solo unas decadas. El investigador
Albert Mehrabian descompuso en porcentajes el impacto de un mensaje: 7 % es verbal, 38 % vocal
(tono, matices y otras caractersticas) y un 55 % senales y gestos. El componente verbal se utiliza
para comunicar informacion y el no verbal para comunicar estados y actitudes personales. Este
investigador, Albert Mehrabian, afirma que en una conversacion cara a cara el componente verbal
es un 35 % y mas del 65 % es comunicacion no verbal[34].
Muchos gestos utilizados son comunes en la mayora de los pases, aunque otros pueden signi-
ficar cosas distintas dependiendo de donde estemos. La mayora de los gestos y movimientos que
utilizamos habitualmente, nos vienen condicionados por el entorno en el que nos hayamos criado.
Los matices culturales, son de gran importancia en el lenguaje corporal. Tambien el entorno fami-
liar, tiene una clara influencia en nuestro comportamiento y en nuestra manera de hablar con el
cuerpo[34].
A continuacion se van a explorar algunos dispositivos que pueden servir para la deteccion de las
gesturas de las manos.
22
2.1.1. Leap Motion
Este dispositivo maneja camaras infrarrojas que detectan la posicion y el movimiento de las
manos, el unico problema con este dispositivo es que el area de trabajo es de alrededor de medio
metro, que es el rango de alcance del dispositivo, ademas de que debe de estar conectado a un
ordenador por medio de un cable USB. En estos momentos existe en progreso un trabajo similar al
de esta tesis liderado por Elon Musk utilizando el Leap Motion[36]. El Leap Motion salio a la venta
el 15 de Agosto de 2013 y para el 19 de Agosto del mismo ano ya se encontraba disponible en las
instalaciones del CIDETEC, as que no exista en la comunidad cientfica hasta hace poco y se sabe
que apenas se estan desarrollando aplicaciones y explotando el potencial del mismo. En la Figura
2.1 se puede apreciar este dispositivo. Actualmente tiene un costo de 99.99 dolares.
Figura 2.1: Imagen del Leap Motion con sus respectivos ejes de coordenadas.
Las gesturas disponibles en el Leap Motion[37], son las que se describen a continuacion:
23
2.1.1.1. Gesturas disponibles en Leap Motion
A. Gestura Crculo
B. Gestura Swipe
24
C. Gestura Key Tap
25
2.1.2. MYO[1]
Como se puede apreciar en la Figura 2.6, este dispositivo es como una pulsera que se coloca en
la parte superior del brazo y lo que hace es detectar los movimientos de los musculos de parte de
quien lo este usando, con esto se podran detectar las gesturas de las manos. MYO salio a la venta
a mediados del ano 2014 y este sera un dispositivo adecuado para la realizacion de la tesis puesto
que no se limita a un area en particular, su unico lmite sera la intensidad de la senal que sera
el rango de alcance de una senal Bluetooth (alrededor de 10 metros). Aunque tambien hara falta
ver la cantidad de gesturas que puede detectar este dispositivo, cuales son estas gesturas y si puede
proporcionar la posicion del mismo para poder trabajar con estas coordenadas en el mundo virtual.
Actualmente tiene un costo de 149 dolares.
26
2.1.3. DepthSense 325[2]
Aqu tambien se tiene otra opcion, es el DepthSense de la compana SoftKinetic. Este dispositivo
tiene dos versiones, la 325 y la 311, siendo la primera especficamente para la deteccion de gesturas
de mano y la segunda sirve para la deteccion de siluetas del cuerpo. A continuacion se describe mas
a detalle el DepthSense 325 que sirve para la deteccion de la mano y los dedos.
La camara DS325 ve en tres dimensiones (incluye profundidad) y dos dimensiones de alta de-
finicion (para el color), permitiendo el rastreo preciso de los dedos y la mano en un amplio rango
de aplicaciones, incluyendo ordenadores portatiles, de escritorio y aplicaciones automovilsticas.
Actualmente tiene un costo de 249 dolares. En la Figura 2.7 se puede apreciar este dispositivo.
En la Figura 2.8 se pueden apreciar algunos componentes de este dispositivo con una breve
descripcion de los mismos.
27
Figura 2.8: Algunos componentes del dispositivo DEPTHSENSE
2.1.4. Touch+[3]
Este dispositivo es basicamente una camara, mas especficamente, consiste en dos sensores de
imagen CMOS (los que se encuentran en las camaras web), las cuales capturan la posicion de las
manos con una resolucion de 640x360, estan adjuntas a un microcontrolador, el cual hace la mayor
parte del procesamiento para que la computadora no tenga que hacerlo. Trabaja con luz visible,
pero emplea luz infrarroja cuando la iluminacion ambiental es baja, por lo que tambien trabaja
en la oscuridad. Se conecta a la computadora por medio de un cable USB 2.0. En la Figura 2.9 se
pueden ver los componentes internos del dispositivo.
28
Figura 2.9: Una mirada dentro de las partes electronicas del dispositivo.[15]
29
2.1.5. Guante DG5-VHand 3.0
Este guante de datos esta disenado para satisfacer los requerimientos rigurosos de la captura de
movimientos modernos y animaciones profesionales. Ofrece confort, facilidad de uso y multiples usos
de control para aplicaciones. Es ideal para animaciones realistas en tiempo real. Cuenta con paquetes
de expansion opcionales para comunicacion por puerto RS232 y otro para realizar comunicacion
inalambrica o por Bluetooth (hasta 20m de distancia) para conectividad de alta velocidad de hasta
8 horas con la batera. Hechos con tela de lycra. En la Figura 2.11 se puede apreciar este modelo
de guante.
Figura 2.11: Guante de datos DG5-VHand 3.0 de la compana Virtual Realities, LTD.[38]
Actualmente cuesta 895 dolares. De hecho, la mayora de los guantes de datos son caros y los
mas baratos cuestan alrededor de 300 dolares, por esta razon no se seleccionara ningun guante de
datos para la realizacion de este trabajo, pero es necesario conocer que tambien existe este tipo de
tecnologa.
30
2.2. Gafas de Realidad Aumentada
El mercado para las pantallas vestibles de AR es potencialmente grande. Algunas estimaciones
muestran que en un futuro no muy distante, los lentes de AR podran ser la interfaz de usuario de
moda y gradualmente remplazara a la interfaz tactil de los telefonos inteligentes de mano. Por lo
tanto, el mercado actual se basa en el uso de video movil, navegacion, AR y juegos. Los telefonos
inteligentes son capaces de mas funcionalidades que antes y los operadores de telecomunicaciones
estan buscando incrementar sus ingresos sin-voz, ofreciendo mas servicios (video bajo demanda,
navegacion, juegos, entre otros). El mayor problema es que las pantallas en los telefonos moviles no
son lo suficientemente grandes (tpicamente de tres a cuatro pulgadas en su diagonal) como para
poder explotar por completo estos nuevos modelos de uso.[7].
A continuacion se hara mencion de algunas gafas de AR y algunas otras de VR, pero que se le
podra agregar una camara de vdeo de tal manera que se pudiera convertir en AR.
31
2.2.1. Google Glass
Son unas gafas de AR fabricadas por Google. Este dispositivo salio a la venta a finales del ano
2014 solo para cierta parte de la poblacion de Estados Unidos, puesto que estaban en fase beta.
Algunos meses despues salio a la venta para toda la poblacion de Estados Unidos, pero debido al
alto costo de este producto, fue cancelado el proyecto a principios del 2015, dando senales de que
posteriormente saldran a la venta una vez mas con mejoras que haran posible su venta a gran escala.
Tambien cuenta con la opcion de poderse adaptar sobre gafas de prescripcion con aumento. Cuenta
con una superficie tactil que sirve para desplazarse entre los menus de las aplicaciones y tambien
cuenta con reconocimiento de voz. El ultimo costo conocido de estas gafas rondaba los 1500 dolares.
En la Figura 2.12 podemos observar una imagen de estas gafas.
32
2.2.2. Oculus Rift
Son unas gafas de VR que estan disenadas especialmente para juegos. Ofrecen un rastreo de la
posicion de la cabeza completo, es decir, que abarca los 360 grados, y un amplio campo de vision de
100 grados. Aunque su principal aplicacion es para video juegos, se han hecho ya varias aplicaciones
para otros campos, como por ejemplo la investigacion. Este dispositivo concede a los usuarios una
mayor inmersion en el ambiente virtual al interactuar intuitivamente con su entorno visual, esto
lo hace sin la ayuda de algun dispositivo intermediario como por ejemplo un control. Actualmente
tienen un costo de 350 dolares. En la Figura 2.13 se puede apreciar este dispositivo.
33
2.2.3. Meta Pro[4]
Las gafas tienen dos pantallas LCD con resolucion de 1280x720, cada una con un campo de vision
de 40 grados y alineacion de tipo estereoscopico en 3D; dos camaras RGB, sonido 3D envolvente y
una unidad integrada de movimiento de 9 ejes con acelerometro, giroscopio y brujula.
La computadora de bolsillo de Meta Pro incluye un CPU Intel i5, 4 GB de RAM, 128 GB
de almacenamiento, WiFi 802.11n, Bluetooth 4.0, y una pila que debera de tener un rendimiento
mnimo de 4 horas. El peso de los lentes es de 180 gramos y soporta lentes de prescripcion que se
colocan por medio de un magneto.
Meta Pro tiene unos lentes mucho mas delgados y quince veces el area de vision de los Google
Glass, el cual solo presenta imagenes 2D. Sin embargo, Meta Pro es tres veces mas pesado que
Google Glass y su precio es substancialmente mayor. Actualmente tienen un costo de 3000 dolares.
En la Figura 2.14 se muestra una imagen de las gafas.
34
2.2.4. Epson Moverio BT-200[5]
A diferencia de muchas gafas de AR, estas gafas requieren estar conectadas siempre a un telefono
inteligente con Android, es de aqu donde viene el poder de procesamiento. Por esto mismo puede
trabajar con la batera hasta por 6 horas. Cada lente tiene su propia pantalla, cuenta tambien
con camara y detector de movimiento ademas de Bluetooth y aplicaciones para Android. Su precio
actual es de $699.99 dolares y se pueden comprar por internet desde la pagina oficial. En la Figura
2.15 se muestra una imagen de las gafas.
35
2.2.5. ICIS[6]
Estas gafas de AR tienen gran variedad de disenos y estan listos para lentes de prescripcion
medica (con aumento). Este dispositivo muestra notificaciones directamente de tu telefono inteli-
gente, esto incluye actualizaciones en tiempo real de las redes sociales, lo cual permite interactuar
con tu telefono inteligente sin necesidad de sacarlo del bolsillo. Cuenta con camara, microfono y
bocinas. El precio de estas gafas es de $549 dolares y se puede ordenar el producto por internet
desde la pagina oficial. En la Figura 2.16 se muestra una imagen de las gafas.
Existen tres tipos de estas gafas, el Icis Early Beta Kit (IeBK), el Icis Beta Kit y el Icis
BOLD, siendo estos ultimos los unicos que poseen camara para fotos de 5 MP, grabado de video de
720p HD y una resolucion de la pantalla de 800x600, los primeros dos tipos no cuentan con camara
y la resolucion de la pantalla es de 640x480.
36
2.2.6. ORA[7]
Estas gafas de AR pueden ejecutar aplicaciones como una computadora portatil y puede co-
nectarse va WiFi o Bluetooth a cualquier dispositivo inteligente. Su pantalla virtual tiene dos
configuraciones permitiendo tanto AR como modo discreto. Cuenta tambien con una caracterstica
que permite que la imagen se encuentre directamente en el campo de vista del usuario o por debajo
de su campo de vista. ORA esta equipado con un procesador de doble nucleo con GPU, camara,
microfono, sonido, sensores de inercia, WiFi, Bluetooth, GPS, sensor de luz ambiental, lentes foto-
sensibles y una batera de alta capacidad. El precio de este dispositivo es de $949 dolares y se puede
comprar por medio de la pagina oficial en internet. En la Figura 2.17 se muestra una imagen de las
gafas.
37
2.2.7. Vuzix M100[8]
Estas gafas inteligentes basicamente son un dispositivo portatil basado en Android mejorado
con una pantalla monocular portatil, computadora, caractersticas de grabado y capacidades de
conectividad inalambrica disenadas para usos comerciales, profesionales y usuarios comunes.
Las gafas Vuzix proveen las caractersticas y capacidades de un telefono inteligente moderno,
en un dispositivo portatil de manos libres. Incluye una camara de alta definicion para tomar fotos
o capturas de vdeo y le permite al usuario guardar su contenido en una memoria extrable o
transmitirlo en vivo. El precio de estas gafas es de $999.99 dolares y pueden comprarse por internet
desde la pagina oficial. En la Figura 2.18 se muestra una imagen de las gafas.
38
Captulo 3
Una vez examinado el hardware, costos y disponibilidades, se tomo la decision de utilizar el Leap
Motion para la deteccion de gesturas de las manos y el Oculus Rift con una camara de vdeo como
sustituto de las gafas de AR. Ahora, teniendo esto en cuenta, se debe hacer la integracion del Leap
Motion y la camara de video con el Oculus, analizar el software que se utilizara para la realizacion
de esta tesis y los requerimientos mnimos del sistema. Posteriormente instalar lo necesario (tanto
software como controladores para los dispositivos) y despues continuar con la programacion e ir
paso a paso hasta la culminacion del trabajo.
Comenzaremos este captulo con la integracion del hardware, examinando los pasos para el
montado del Leap Motion en el Oculus, una vez hecho esto, se procedera a montar la camara
de video en el Oculus, se examinara el sistema propuesto para la solucion del problema y los
requerimientos mnimos que debe tener la computadora y los programas utilizados en esta tesis,
mencionando una breve descripcion de los mismos y para que fueron utilizados dichos programas.
Posteriormente, se disenaran tres modelos virtuales y se ira realizando lo que se vaya necesitando.
39
3.1. Integracion
El Oculus, por ser unas gafas de VR, no cuenta con AR, por esto es necesario adecuar estas gafas
a la necesidad de mostrar AR. Esto es posible si le agregamos una camara de video para mostrar
el entorno de nuestro mundo fsico. Una vez que el Oculus pueda realizar la funcion de unas gafas
de AR, sera necesario integrarle el Leap Motion para poder realizar la deteccion de gesturas de las
manos. Los siguientes puntos tratan estos temas con mas detalle.
Ahora bien, para la camara de vdeo se va a hacer uso de una camara web USB Logitech C170.
En la Figura 3.1 se puede observar la camara.
La camara web se va a sujetar de la parte superior del Oculus. El Oculus va a mostrar directa-
mente lo que va a ver la camara de vdeo y por medio de codigo y Unity se van a sobreponer las
imagenes y modelos 3D para convertir la VR del Oculus a AR y as cumplir con el requisito de que
el sistema debe de utilizar AR.
40
3.1.2. Montado de Leap Motion
Existe una manera de montar el Leap Motion en el Oculus Rift, y es mediante un dispositivo
que se pega directamente sobre el oculus. Este dispositivo cuesta 19.99 dolares mas envo y se
puede encontrar a traves de internet como VR Development mount for Leap. En la Figura 3.2 se
puede ver este dispositivo que consta de dos partes y en la Figura 3.3 se aprecian mejor las partes
individuales de este dispositivo, siendo la parte del fondo la que va pegada sobre el Oculus.
Existe tambien la opcion de imprimir este dispositivo en una impresora 3D y es la opcion que
se va a ocupar en esta ocasion, puesto que en la institucion se cuenta con una impresora 3D. El
modelo para imprimir esta disponible en internet.
Tanto la camara web como el dispositivo para montar el Leap en el Oculus, fueron fijados por
unos cuadros de montaje, de los que se utilizan para fijar espejos en superficies planas. Estos cuadros
de montaje se pueden apreciar en la Figura 3.4.
41
Figura 3.3: Dispositivo para montar el Leap en el Oculus. En esta imagen se puede ver con mas detalle las partes
individuales y como van colocadas
En la Figura 3.5 se puede observar la combinacion de los dispositivos, el Oculus con el Leap
Motion y la camara de video.
42
Figura 3.5: Imagen de la combinacion de los dispositivos. As queda el prototipo con el Leap Motion y la camara
de video.
En la Figura 3.1 se tiene el sistema propuesto. En esa imagen se puede observar como va colocado
el Oculus en la cabeza del usuario. El Leap Motion es el sistema de captura de datos, que se encarga
de detectar el movimiento de las manos del usuario, dando as la posibilidad de que con gesturas
de la mano, se pueda interactuar con el mundo virtual. Tambien sera necesaria una computadora
que sera la encargada del procesamiento y VR. Las imagenes seran transmitidas y visualizadas en
el Oculus por medio de un cable HDMI que tendra que estar conectada a la computadora. Los
movimientos que se hagan con la cabeza seran registrados y mandados a la computadora por medio
de un cable USB, a su vez, la camara de video y el Leap Motion tambien necesitaran un cable USB
conectado, dando un total de 3 conexiones USB que seran necesarias.
43
Figura 3.6: Diagrama de funcionamiento general del sistema
3.2.1. Usuario
El usuario debera tener conocimiento de las gesturas que son permitidas en el sistema, para esto
debera haber ledo anteriormente un documento que contenga informacion detallada de las gesturas
permitidas, o en su caso, debera contar con una persona con experiencia previa que le vaya guiando
a traves del proceso de interaccion con el mundo virtual.
3.2.2. HMD
El HMD (en este caso, el Oculus), sera el encargado de mostrar al usuario la AR, o bien, se
mostraran las imagenes de los objetos virtuales sobrepuestas en el mundo real que sera captado por
la camara de video. El HMD tambien se encargara de mandarle a la computadora el movimiento
de la cabeza de acuerdo a lo que detecten los sensores del mismo.
44
3.2.3. Leap Motion
Este dispositivo sera nuestro sistema de captura de datos, es decir, se encargara de obtener datos
del mundo real para traducirlo en informacion para la computadora, cabe mencionar que solamente
funcionara para la deteccion de las gesturas de las manos, detectando tambien la posicion de los
dedos.
3.2.4. Procesamiento y RV
45
3.2.5. Unity3D
En la Figura 3.8, se muestra como recibe la informacion Unity. Primero debe de obtener los
modelos 3D de Blender, esto se hace simplemente colocando los archivos de los modelos en una
carpeta dentro de un proyecto de Unity, y la aplicacion hace el trabajo automaticamente por medio
de herramientas que se encargan de la interpretacion del archivo.
La API de Oculus le manda informacion de sus sensores a Unity, donde le indica la orientacion
de la cabeza del usuario. La API de Leap tambien le manda informacion a Unity de todo lo que
detecta como manos o dedos para que pueda trabajar con esa informacion y detectar gesturas o
movimientos de dedos y trabaje de acuerdo a sus necesidades. Todo esto esta determinado por
scripts hechos con codigo de C#. Este codigo le indica a Unity que hacer con cada uno de los datos
para obtener el resultado deseado.
46
El usuario observa las imagenes que le despliega el Oculus y con esa informacion, mueve sus manos
para tratar de interactuar con los objetos, al mover las manos el Leap detecta los movimientos de
las mismas y pasa la informacion a Unity. Por ultimo, Unity determina por medio de scripts si
es una gestura valida y en caso de que as sea, realiza una operacion con el objeto 3D y enva la
informacion al Oculus. Este proceso se repite infinidad de veces mientras el programa se encuentre
en ejecucion.
3.3.1. Blender-Unity
Blender es el software que se utilizo para el modelado de los objetos 3D. Para mandar los modelos
que se elaboraron en Blender a Unity, simplemente es necesario ponerlos en una carpeta del proyecto
de Unity, y cuando se abra el proyecto, Unity hara el procesamiento y conversiones necesarias para
que el modelo realizado en Blender pueda ser utilizado en Unity. Esto se hace por medio de una
herramienta de Blender que se encarga de exportar a un tipo de archivo llamado FBX, y as, Unity
puede leer la informacion del modelo 3D.
47
3.3.2. Leap-Unity
El Leap Motion se encarga de determinar la posicion de las manos y los dedos detectados dentro
de cierta distancia cercana al dispositivo. Esta informacion es pasada a Unity para que pueda
determinar las gesturas predeterminadas o bien, que pueda manejar la informacion para detectar
gesturas propias por medio de scripts.
3.3.3. Oculus-Unity
Aqu, el Oculus enva informacion a Unity de la posicion de la cabeza del usuario, y dependiendo
de la informacion recibida, Unity se encarga de cambiar la posicion de su camara, haciendo creer
que el usuario esta viendo dentro del mundo virtual. Oculus trabaja con dos imagenes ligeramente
distintas, una para cada ojo, esta tecnica es conocida como esteroscopa, y es como funcionan
nuestros ojos, en otras palabras, nuestros ojos perciben dos imagenes ligeramente movidas una de
otra, esto es debido a la separacion que existe entre los ojos. Esta separacion de las dos imagenes,
nos permiten determinar que tan lejos se encuentran los objetos, o en otras palabras, gracias a esta
separacion podemos determinar la profundidad de los objetos. As mismo trabaja Oculus, mandando
una imagen ligeramente movida una de otra para dar la sensacion de profundidad.
3.4. Especificaciones
3.4.1.1. Blender[9]
Blender es una suite de animacion 3D gratuita y de software libre. Soporta la totalidad de lineas
de modelado, rigidez, animacion, simulacion, renderizado, composicion y rastreo de movimiento, in-
cluso edicion de video y creacion de juegos. Los usuarios avanzados emplean las API de Python para
realizar scripts y personalizar la aplicacion y escribir herramientas personalizadas; a menudo estas
son incluidas en versiones posteriores de Blender. Blender es adecuado para estudios individuales
y pequenos que se benefician de su linea y proceso de desarrollo sensible. Hay muchos ejemplos de
48
proyectos basados en Blender disponibles en linea.
Como es un proyecto dirigido por la comunidad bajo la Licencia Publica General GNU (GPL),
el publico tiene el poder de hacer pequenas y grandes modificaciones al codigo fuente, que lleva
a nuevas caractersticas, correccion de errores y mejor usabilidad. Blender no tiene precio, pero se
puede invertir, participar y ayudar el avance de una poderosa herramienta colaborativa: Blender es
como tu propio software 3D.
Lo que se crea en Blender es de tu propiedad. Todas tus obras - imagenes o archivos de pelcula
- incluyendo los archivos .blend (archivos propios de Blender) y otros archivos de datos que Blender
pueda escribir, son libres para que tu los uses como quieras. Eso significa que Blender puede ser
usado comercialmente por artistas, por estudios para hacer pelculas de animacion, por artistas de
juegos para trabajar en juegos comerciales, por cientficos para investigacion y por estudiantes en
instituciones educativas. En la Figura 3.10 se puede ver el logotipo de Blender.
49
3.4.1.2. Unity[10]
Tambien se puede utilizar codigo que permita manipular el comportamiento de los objetos y del
mundo virtual por medio de scripts. Estos scripts pueden ser programados en algunos lenguajes que
permite Unity, los mas populares son javascript y C#. En la Figura 3.11 se puede ver el logotipo
de Unity 3D.
Este software es obviamente una actualizacion de la Version 1 y se utiliza para que el dispositivo
Leap Motion pueda ser utilizado en la computadora, basicamente es el controlador del dispositivo
y contiene tambien ciertas herramientas para trabajar debidamente con el.
50
3.4.1.4. Leap Motion V2 Skeletal Assets
Este software es un paquete para Unity. Aqu contiene lo necesario para el correcto funciona-
miento del dispositivo Leap Motion en Unity, ademas de ciertos archivos de ejemplo para poder
familiarizarse con las cosas que se pueden hacer con el dispositivo. Este paquete se puede descargar
directamente de la pagina oficial de Unity, en la Asset Store.
Este software viene siendo basicamente el controlador para el Oculus, ademas de que tiene ciertas
herramientas para su configuracion y correcto funcionamiento del dispositivo. Es necesario tenerlo
instalado para que se puedan ejecutar aplicaciones hechas para el Oculus.
Este software es necesario para poder programar aplicaciones para el Oculus en la computadora,
tiene todo lo necesario para que un desarrollador pueda trabajar y verificar que sus aplicaciones
hechas para el Oculus funcionen correctamente.
Este software sirve para poder programar aplicaciones para el Oculus desde Unity. Es un paquete
para Unity que se puede descargar desde la pagina oficial del Oculus.
51
3.4.2. Objetos
Aqu se va a hablar de como se crearon los tres objetos 3D en Blender. Ahora bien, la manera en
que se interactua con los objetos en Blender es un poco diferente a lo que se trabaja comunmente en
Windows, debido a que para hacer la seleccion de un objeto, se hace por medio de un clic derecho,
y el clic izquierdo que es el que se utiliza en Windows para seleccionar, en Blender tiene otras
funciones. En la Figura 3.12 se puede observar la primer pantalla que muestra Blender al abrirlo,
siempre inicia la escena con una camara y un cubo.
Existen diferentes modos para trabajar en Blender, dependiendo de lo que necesitemos, pero los
principales dos son: el modo objeto y el modo edicion. El modo objeto es para trabajar directamente
con los objetos que esten creados en Blender, ah se podran mover, girar, escalar, y se podran realizar
muchas otras funciones del objeto en s. En el modo edicion, se pueden editar los vertices del objeto,
las caras y los bordes. En la Figura 3.13 se pueden apreciar los modos de iteracion permitidos.
52
Figura 3.13: Modos de interaccion en Blender.
3.4.2.1. Calculadora
Para hacer una calculadora sencilla, se va a comenzar de una figura basica de Blender, que es el
que siempre esta por defecto al iniciar una nueva escena, el cubo. Dentro del modo edicion podemos
editar los vertices, los bordes y las caras de la figura. En la Figura 3.14 se pueden apreciar los
botones para entrar a cada uno de estos modos de seleccion.
Figura 3.14: Modos de seleccion para el modo edicion. De izquierda a derecha tenemos: 1)Vertice 2)Borde 3)Cara.
Primero se debe de hacer un rectangulo aplanado con forma de calculadora e ir haciendo subdi-
biciones. Una subdivicion en Blender es basicamente partir la figura en una N cantidad de partes
53
iguales, esto se hace con el metodo de combinacion de teclas Ctrl-R. La idea es hacer todo con
figuras rectangulares para hacerlo mas sencillo, y al final utilizar un modificador que tiene Blender
para darle un terminado circular a lo cuadrado. En la Figura 3.15 se puede apreciar la imagen de
la calculadora despues de muchas subdiviciones con el objetivo de hacer un hueco que representara
la pantalla donde se muestran los numeros.
Ahora se haran los botones, primero se comienza con insertar un nuevo cubo en el modo de
edicion de la calculadora, esto hara que los vertices del cubo sean parte del objeto calculadora.
ahora se aplanara el cubo y se escalara hasta que tenga la forma de un boton cuadrado, el tamano
de este boton debera ser el necesario para que entren cuatro botones de manera horizontal. Una
vez hecho este boton, simplemente se haran copias del mismo con la combinacion de teclas Ctrl-D
y se posicionaran en el lugar correcto. En la Figura 3.16 se muestra lo que se acaba de explicar con
anterioridad.
Despues solo se seleccionan los cuatro botones y se duplican para hacer 4 filas de los mismos
y as concluir con los botones de una calculadora sencilla con los numeros del 0 al 9, botones de
encendido, suma, resta, multiplicacion, division e igual, que nos dan un total de 16 botones. Despues
de esto tenemos una calculadora muy cuadrada, lo que se necesita hacer es agregarle el modificador
54
Figura 3.16: Cuatro botones sin posicionar.
subdivision surface que lo que hace es hacer una subdivision de todos los vertices para hacer
que la figura tenga terminaciones redondeadas. Tambien hay que cambiar el parametro view del
modificador a cinco para que se vea mas redondo. En la Figura 3.17 se puede apreciar la calculadora
terminada y el modificador requerido.
55
3.4.2.2. Casa
Para realizar el modelo 3D de una casa muy sencilla, tomamos el ejemplo pasado como referencia,
hay que partir de un cubo e ir agregando subdivisiones y cambiando el tamano segun sea necesario.
En este caso solamente se agregara una subdivision para la base de la casa y posteriormente hacer
un techo triangular. En la Figura 3.18 se muestra la base de la casa de donde todo parte.
Una vez teniendo la base de la casa, tomamos el modo de seleccion por caras y eliminamos
la parte superior de la casa, esto con el proposito de posteriormente formar el techo. Concluido
esto, elegimos el modo de seleccion por vertices y seleccionamos dos vertices, los que se encuentran
en medio, despues hacemos una extrusion de los vertices con las teclas Ctrl-E y acomodamos los
vertices alrededor de dos unidades arriba de donde estan. Lo que hace una extrusion es duplicar los
vertices, bordes o caras que se encuentren seleccionadas, pero agregandole una union a los vertices
originales. Una vez hecho esto tendremos que seleccionar los tres vertices de arriba y crear una cara,
esto se hace presionando la tecla F cuando ya se tienen los vertices seleccionados. Se hace lo mismo
para el otro lado de la casa. En la Figura 3.19 se muestra la base de la casa y como se va formando
el techo.
56
Figura 3.19: Casa con techo en formacion.
Posteriormente vamos seleccionando los grupos de vertices faltantes y creando las caras de una
por una hasta tener formado todo el techo. En la Figura 3.20 se muestra el modelo de la casa
finalizada.
57
3.4.2.3. Silla
Para el modelado de una silla vamos a partir nuevamente de un cubo, lo aplanamos y lo movemos
un poco para arriba (eje z), puesto que este va a ser nuestro asiento y en la parte de abajo deben
de ir las patas, ahora hacemos cuatro subdivisiones tanto de manera vertical como horizontal y
se seleccionan los cuatro pequenos cuadrados interiores de la parte de abajo donde van a salir las
patas. En la Figura 3.21 se muestra como debe quedar la base de la silla de donde todo parte.
Despues, ya con los cuatro pequenos cuadrados seleccionados, extrumos con Ctrl-E y movemos
el raton hacia abajo para que se formen las patas de la silla. Una vez hecho esto, ahora se tiene que
crear el respaldo de la silla. Esto se hara algo similar a lo de las patas, pero ahora en la parte superior
y en lugar de ser cuatro, solamente tomaremos dos cuadrados, y despues extrumos nuevamente pero
ahora hacia arriba. Subdividimos en dos y quitamos la cara de la parte interna de en medio. En
la Figura 3.22 se muestra la silla con el asiento y las patas de la misma, ademas de los huecos que
debe de tener para crear el respaldo.
58
Figura 3.22: Silla en formacion.
Posteriormente, solo basta con seleccionar los vertices en grupos de cuatro y creando caras con
la tecla F para formar el respaldo de la silla. En la Figura 3.23 se muestra la silla finalizada.
59
3.4.3. Gesturas
Como se va a utilizar el Leap Motion para la deteccion de gesturas de las manos, se van a utilizar
algunas gesturas predefinidas del mismo, las cuales fueron explicadas anteriormente. Se va a utilizar
la gestura key tap para la seleccion del objeto antes de hacer cualquier otra accion sobre este, y
se utilizaran algunas caractersticas del Leap para otras acciones. La lista completa de comandos
permitidos se mostrara a continuacion:
Arrastre: Para arrastrar (mover) un objeto de su posicion actual a otra, el objeto primero
debera estar seleccionado y la mano derecha debera estar abierta, luego la mano pasara de
estar abierta a estar completamente cerrada, como si se fuera a dar un golpe con el puno
cerrado, y sin abrir el puno, mover la mano, esto ocasionara que el objeto se mueva una
distancia semejante al movimiento que realice la mano. Cuando se quiera dejar de mover el
objeto, simplemente habra que abrir el puno y regresar la mano a una posicion natural y
abierta.
Rotacion: Para rotar un objeto de su posicion actual a otra, el objeto primero debera estar
seleccionado y tanto la mano izquierda como la mano derecha deberan estar abiertas, luego la
mano izquierda pasara de estar abierta a estar completamente cerrada y abrirla rapidamente
en un espacio de tiempo menor a medio segundo. Si se ejecuto bien la accion se podra rotar el
objeto de acuerdo a la rotacion de la mano derecha. Para dejar de rotar el objeto simplemente
se tendra que cerrar nuevamente el puno de la mano izquierda y abrirlo rapidamente como se
hizo al principio. Esta accion solo podra ser ejecutada en cualquier objeto a excepcion de las
imagenes.
Rotacion en un eje: Cabe mencionar que esta accion solo funciona para objetos de tipo
imagen. Para realizar esta accion, se debera tener seleccionado un objeto tipo imagen y pos-
teriormente, cerrar ambas manos (punos cerrados), teniendo en cuenta que primero se debera
60
cerrar la mano izquierda e inmediatamente despues cerrar la mano derecha, despues de hecho
esto, se deberan girar las manos como si se estuviera sosteniendo un volante, esto provocara
que la imagen gire de acuerdo al angulo que se genere entre ambas manos. Para dejar de
ejecutar esta accion, simplemente se debera de abrir ambas manos.
Escalado: Para realizar el escalado de algun objeto, se debera tener seleccionado un objeto,
y posteriormente cerrar ambas manos (punos cerrados), teniendo en cuenta que primero se
debera cerrar la mano derecha e inmediatamente despues cerrar la mano izquierda. Si se
ejecuto correctamente ahora se podra escalar el objeto, haciendolo mas pequeno o mas grande
dependiendo de la distancia que exista entre ambas manos. Para dejar de ejecutar esta accion,
simplemente se debera de abrir ambas manos.
Eliminar objeto: Para eliminar un objeto, primero se debe tener seleccionado el objeto que
se desea eliminar y despues de esto, se ejecuta la gestura predeterminada del Leap Motion
llamada swipe. Esto simula que se avienta el objeto como desechandolo y ocasiona su elimina-
cion completa del area de trabajo. Esta accion debera ser ejecutada dos veces en un lapso de
tiempo de alrededor de un segundo y medio, puesto que la primera vez, solo mostrara un men-
saje de confirmacion, y la segunda ves que se ejecute dentro del rango de tiempo establecido,
se eliminara definitivamente.
Todos los scripts fueron realizados en codigo para C#, utilizando MonoDevelop, que es el en-
torno de desarrollo que tiene predeterminado Unity. Antes de programar fue necesario explorar y
experimentar con los archivos y scripts de prueba que venan con las integraciones para Unity.
Despues de analizar y a base de prueba y error, se obtuvieron tres archivos principales para la
deteccion de las gesturas de las manos. El primero fue llamado handleGestures. Este archivo se
encargara basicamente de la deteccion de las gesturas que estan ya predeterminadas en el dispositivo
Leap Motion. Cabe mencionar que el dispositivo tiene cuatro gesturas predefinidas, de las cuales
solo se ocuparon dos, la gestura keytap para la seleccion del objeto actual y la gestura swipe para
la eliminacion de un objeto. Este archivo detecta las gesturas predefinidas y con base a la gestura
61
detectada ejecuta cierta accion que se encuentra programada en otro archivo. Cada accion cuenta
con su propio archivo para facilitar la programacion.
Para la deteccion del arrastre de un objeto, el SDK del Leap cuenta con una instruccion que
permite detectar la fuerza con la que se encuentra cerrada la mano, esta instruccion nos manda un
numero que vara entre cero y uno. Cero indica que la mano esta completamente abierta y uno que
se encuentra completamente cerrada. Aqu simplemente se realizo una comparacion, que en caso de
que el valor sea mayor a 0.95, entonces se ejecutara la accion, puesto que para esta aplicacion eso
es suficiente para determinar que la mano se encuentra cerrada.
Si se fue lo suficientemente observador, se noto que tanto para las gesturas de escalar y rotar en
un eje, se deben de tener ambas manos cerradas, esto resultaba en que, en ocasiones, la aplicacion no
detecta correctamente la accion deseada por el usuario, por esta razon, se opta por cerrar primero
la mano izquierda para el escalado, en caso opuesto, para la rotacion en un eje se debe cerrar
primero la mano derecha. Ademas, para la rotacion en un eje se tuvo que programar una funcion
para calcular el angulo, puesto que la funcion predeterminada de Unity, calcula el angulo entre
dos puntos pero utilizando al cero como punto de referencia, y esto no proporciona el resultado
deseado. La funcion que se programo para calcular el angulo, primero saca el punto medio entre
las dos manos, y al tener este punto medio, saca el angulo de cada mano tomando el punto medio
como referencia y se hace uso de la funcion trigonometrica seno inverso para calcular el angulo. Esto
siempre da un angulo en un rango de 0 a 90 grados, y se agrego un objeto temporal que se crea y
se elimina automaticamente, que mira hacia la posicion del usuario en el mundo virtual, esto para
determinar la posicion del angulo con una funcion predeterminada de Unity. Si se encuentra a la
derecha del punto de referencia, se mantiene igual el angulo, pero si se encuentra del lado izquierdo,
se hacen sumas algebraicas para obtener el rango deseado de 0-180 positivo y 0-180 negativo. Para
62
el escalado simplemente se toma la distancia entre las dos manos y se escala el objeto dependiendo
de si la distancia entre las manos aumenta o disminuye.
La ultima clase principal es para determinar si se ha hecho un tipo clic con la mano izquierda,
esto es para la rotacion normal de los objetos. Aqu simplemente se detecta si el tiempo en el que se
cierra y abre la mano izquierda esta dentro del rango especificado, se active o desactive un indicador.
Como ya se sabe, para que una aplicacion se pueda considerar como de AR, la aplicacion
debe tener imagenes del mundo real y sobreponer imagenes virtuales, u objetos virtuales sobre las
imagenes del mundo real, esto se va a realizar por medio de la camara web. Unity permite utilizar
video extrado de la camara web y ponerlo como textura sobre un objeto, generalmente un plano,
as que esta sera la manera en la que se visualizara el mundo real. El plano debe estar un poco lejos
del usuario en el mundo virtual para que este pueda verse claramente.
Aqu es donde surge un problema. En las especificaciones del Oculus se aprecia que su campo de
vision es de alrededor de unos 100 grados, y el campo de vision de la camara actual es de 58 grados,
es decir, que lo que abarca la camara no va a ser suficiente para cubrir todo lo que abarca el Oculus.
Esto se pudo apreciar en las pruebas, puesto que al intentar hacer coincidir lo que poda captar
la camara con el rango de vision del Oculus, todo pareca estar exageradamente grande, haciendo
que todo se viera irreal, tal como se menciono en la seccion anterior, en el punto Problemas de
la Realidad Aumentada, en especfico Desajustes de tamano y distancia. Para resolver esto, se
experimentaron diferentes posiciones y tamanos del plano hasta encontrar uno que fuera lo mas
acercado a la realidad, una vez hecho esto, se procedio a escalar el tamano de las manos del Leap
hasta que fueran lo bastante proximos al tamano de las manos reflejado en el video.
Despues de esto, los objetos virtuales parecan fuera de su lugar, como si estuvieran flotando en
un mundo inexistente como se puede apreciar en la Figura 3.24.
Para solucionar este detalle se hizo uso de cuatro planos de color negro colocados de tal forma
que solo permitieran observar lo que se encuentra en el rango del plano que nos muestra el video
63
Figura 3.24: Objetos fuera de lugar. La imagen pareciera que fueran dos imagenes en lugar de una, pero esto
es debido a que del lado izquierdo es lo que sera proyectado al ojo izquierdo y del lado derecho, lo
proyectado al otro ojo.
obtenido de la camara. En la Figura 3.25 se pueden apreciar los cuatro planos y al mismo tiempo
se muestra la vista que tendra el usuario en la aplicacion.
Figura 3.25: Planos de obstruccion. En la parte de arriba se muestran los cuatro planos colocados en frente de la
camara para obstruir lo que se sale del rango de vision para darle mas realismo a la aplicacion. En la
parte de abajo se muestra la forma en la que el usuario lo puede apreciar.
64
3.4.6. Interaccion
En la Figura 3.26 se muestra el proceso de seleccion de un objeto virtual. Esta imagen cuenta a
su vez, con 4 capturas de pantalla tomadas en tiempos diferentes. De arriba a abajo, en la captura
A se muestra el puno cerrado a excepcion del dedo ndice, el cual se encuentra estirado y el objeto
cercano que es una calculadora, se encuentra en su color gris por defecto. En la captura B se muestra
el dedo ndice bajando hacia la calculadora. En la captura C se tiene que el dedo ndice ha hecho
contacto con la calculadora y ha subido ligeramente, esto hace que se detecte la gestura keytap,
muestre el mensaje correspondiente y seleccione el objeto, poniendolo de color azul. En la captura
D se muestra el dedo mas alejado de la calculadora.
65
3.4.6.2. Arrastre
En la Figura 3.27 se muestra el proceso de arrastre de un objeto virtual. Esta imagen cuenta
a su vez, con 4 capturas de pantalla tomadas en tiempos diferentes. De arriba a abajo, en la
captura A se muestra la mano derecha completamente abierta, en la captura B se muestra la misma
mano pero ahora con el puno cerrado, esto activa la accion de arrastrar y se muestra el mensaje
correspondiente en la pantalla. En la captura C, D y E se muestra como se mueve la mano con el
puno cerrado y a su vez se mueve el objeto en forma de espejo, haciendo el mismo recorrido que la
mano pero en su posicion correspondiente. En la captura F se muestra que el puno de la mano se
abrio, y en consecuencia la accion de arrastre del objeto se cancela quitando el mensaje que haba
anteriormente.
66
3.4.6.3. Rotacion
En la Figura 3.28 se muestra el proceso de rotacion de un objeto virtual. Esta imagen cuenta a
su vez, con 4 capturas de pantalla tomadas en tiempos diferentes. De arriba a abajo, en la captura
A se muestran las dos manos completamente abiertas. En la captura B se observa que el puno de
la mano izquierda esta cerrado, y en la captura C se muestra como la mano izquierda se abre, cabe
mencionar que el cierre y apertura de la mano izquierda debe hacerse rapidamente para que la
accion pueda activarse, si esto se realizo dentro del rango de tiempo establecido, se podra observar
un mensaje indicando que la accion se activo correctamente. En la captura D y E muestra como el
objeto rota dependiendo de la rotacion de la mano derecha.
67
3.4.6.4. Rotacion en un eje
En la Figura 3.29 se muestra el proceso de rotacion en un eje de una imagen dentro del mundo
virtual. Esta imagen cuenta a su vez, con 4 capturas de pantalla tomadas en tiempos diferentes.
De arriba a abajo, en la captura A se muestra que ambas manos estan completamente abiertas
y ya se tiene seleccionado el objeto de tipo imagen. En la captura B se muestra que el puno de
la mano derecha se encuentra cerrado, esto hace que se active la accion de arrastrar y muestra el
mensaje correspondiente. En la captura C se observa que el puno de la mano izquierda se cierra sin
abrir el de la mano derecha, esto hace que la accion de Rotar en eje se active y muestra el mensaje
correspondiente. En las capturas D y E se observa que las manos giran como si se estuviera girando
el volante de un automovil, y esto hace que la imagen gire en su eje imitando el movimiento de la
rotacion que hacen ambas manos.
68
3.4.6.5. Escalado
En la Figura 3.30 se muestra el proceso de escalado de un objeto. Esta imagen cuenta a su vez,
con 4 capturas de pantalla tomadas en tiempos diferentes. De arriba a abajo, en la captura A se
muestran las dos manos abiertas. En la captura B se muestra que el puno de la mano izquierda se
cierra. La captura C ahora nos muestra que se cierra el puno de la mano derecha sin haber abierto
el de la izquierda, esto hace que la accion de escalar se active y muestre el mensaje correspondiente.
Las capturas D y E nos muestran como con los punos cerrados, las manos se van alejando haciendo
que el objeto se haga mas grande. La captura F nos muestra que se cancela la accion si se abre
cualquiera de los dos punos y en consecuencia se borra el mensaje de que se estaba escalando el
objeto.
69
3.4.6.6. Eliminar objeto
En la Figura 3.31 se muestra el proceso de eliminacion de un objeto virtual. Esta imagen cuenta
a su vez, con 4 capturas de pantalla tomadas en tiempos diferentes. De arriba a abajo, en la captura
A se muestra la mano derecha abierta. En la captura B se observa como la mano se mueve hacia
el visor, posteriormente baja ligeramente activando la gestura swipe y su respectivo mensaje se
activa, como la accion de eliminar no se puede revertir, antes de eliminar muestra el mensaje de
confirmacion. En la captura C se ve la mano mas abajo que la captura anterior para tener espacio
para realizar nuevamente la gestura swipe. En la captura D se observa nuevamente como sube la
mano y la captura E nos muestra que al bajar la mano se activa nuevamente la accion y ahora, al
repetir la gestura, el objeto es eliminado y muestra su respectivo mensaje.
70
Captulo 4
Pruebas experimentales
Una vez finalizada la aplicacion es necesario hacer pruebas con diferentes personas para ver
sus reacciones, tendencias, dificultades entre otros aspectos y conocer los comentarios que tiene los
usuarios de sus experiencias con la aplicacion, si les parecio facil, difcil o si tienen alguna sugerencia
para mejorar la aplicacion en sus versiones posteriores.
Este captulo se centra en realizar las pruebas que se consideran necesarias para determinar si la
aplicacion cumple con la caracterstica de manipular objetos virtuales mediante el uso de gesturas
de manos, as que se iniciara realizando las pruebas de la aplicacion.
Todas las pruebas fueron ejecutadas en una computadora Toshiba Satellite L845D, Procesador
doble nucleo a 2.7 GHz con graficos Radeon(tm) HD 7520G (usa la memoria RAM de la compu-
tadora), 4 GB en RAM y Sistema Operativo Windows 8 de 64 bits.
71
4.1. Pruebas de la aplicacion
Se realizo una prueba de la aplicacion con una alumna de Maestra, a la que se nombrara como
Alumna A, y antes de usar la aplicacion se le explico el funcionamiento de la misma y las gesturas
permitidas. En la Figura 4.1 se puede apreciar a la Alumna A haciendo uso de la aplicacion.
72
Se realizo otra prueba de la aplicacion con otra alumna de Maestra, a la que se nombrara como
Alumna B, y antes de usar la aplicacion se le explico el funcionamiento de la misma y las gesturas
permitidas. En la Figura 4.2 se puede apreciar a la Alumna B haciendo uso de la aplicacion.
Al finalizar, se le pidio a la Alumna B que explicara su experiencia con la aplicacion, sus comen-
tarios fueron los siguientes:
Las instrucciones por parte del programador para utilizar el programa e interactuar
con los objetos me parecieron muy intuitivas; por ejemplo, seleccionar haciendo un clic
con el ndice en el objeto o dimensionar el mismo cerrando las manos en los extremos y
moverlas hacia afuera para agrandar el objeto y hacia el centro del mismo para hacerlo
mas pequeno. Al principio para seleccionar los objetos fue necesario solicitar apoyo con
un ejemplo por parte del programador para verificar la distancia y rapidez con que era
necesario ejecutar los movimientos. Sin embargo, considero que como en los videojuegos,
a medida que se practica es cada vez mas fluido el manejo de los objetos y en mi opinion
no toma mucho tiempo (menos de 10 minutos) familiarizarse con la aplicacion.
73
Se realizo otra prueba de la aplicacion ahora con un alumno de Maestra, al que se nombrara
Alumno A, y antes de usar la aplicacion se le explico el funcionamiento de la misma y las gesturas
permitidas. En la Figura 4.3 se puede apreciar al Alumno A haciendo uso de la aplicacion.
Al finalizar, se le pidio al Alumno A que explicara su experiencia con la aplicacion, sus comen-
tarios fueron los siguientes:
La aplicacion me parece facil de usar, permite que el usuario interactue con el ambiente
de una forma intuitiva. Los gestos que se utilizan son muy intuitivos y permiten que el
usuario aprenda a utilizar la aplicacion mas facilmente. Las opciones de interaccion con
los objetos me parecen muy practicas para ser utilizadas en aplicaciones en las que el
usuario necesite manipular objetos en un entorno virtual.
Para mejorar la aplicacion se podra presentar un ambiente mas complejo, con mas
objetos para que el usuario pueda interactuar as como mejorar un poco la precision con
la que la aplicacion reconoce los gestos.
74
En las pruebas siguientes se tomaron tres usuarios, uno con conocimientos y experiencia en la
aplicacion (el desarrollador), y los otros dos sin experiencia. A los dos usuarios sin experiencia se les
explico la manera en realizar tres gesturas en el siguiente orden: seleccion, rotacion y arrastre, y el
desarrollador les guio y oriento de manera verbal. El unico objeto que se pide que sea seleccionado
para trabajar con el mismo, es la calculadora. Se le pidio al usuario que hiciera las gesturas antes
mencionadas en orden (seleccion, rotacion, y arrastre) y se toman los tiempos en que tarda en
realizar cada una. Una vez hecho esto, la aplicacion se reinicia para que todos los objetos queden en
su posicion inicial y se le pide que repita nuevamente las gesturas de seleccion, rotacion y arrastre
con el objeto calculadora. Esto se repitio diez veces para cada usuario y se asentaron sus tiempos en
una tabla. En el caso de que el usuario tardara mas de tres minutos (180 segundos) en realizar alguna
gestura, se pasa a la siguiente, poniendo una X representando que la gestura no fue concluida
satisfactoriamente. Para el calculo del promedio de los tiempos, en caso de que exista una X, se
tomo como valor los 180 segundos del intento. En caso de ser la opcion de seleccion la que no pueda
ejecutarse, el desarrollador reinicia la aplicacion poniendo a la calculadora como objeto seleccionado
por defecto, esto para que el usuario pueda realizar las otras gesturas. Para la rotacion, el objeto
no tendra que rotar a alguna posicion en especfico, solamente se tendra que ver en la pantalla
su rotacion en cualquier eje, y posteriormente finalizar la operacion. Para arrastrar, tampoco sera
necesario mover el objeto hacia algun lugar en especfico, solo se debera ver que el objeto se mueva,
terminar la operacion y que el objeto se quede en esa la posicion. Ademas de esto, antes de comenzar
se le hacen dos preguntas a los usuarios, esto con el fin de conocer sus experiencias pasadas con la
tecnologa y aplicaciones de AR. Las preguntas son las siguientes:
75
Primero se realizan las pruebas con el desarrollador, sus respuestas a las preguntas fueron las
siguientes:
Como considera su relacion con la tecnologa?
Ninguna Baja Media Alta
Ahora se tomaron los tiempos que le toma al desarrollador realizar las acciones arriba mencio-
nadas. En la Tabla 4.1 se pueden ver los tiempos.
76
Se continua con la realizacion de las pruebas con otra alumna, a la que se nombrara Alumna
C, sus respuestas a las preguntas fueron las siguientes:
Como considera su relacion con la tecnologa?
Ninguna Baja Media Alta
Ahora se registraron los tiempos que le tomo a la Alumna C realizar las acciones arriba men-
cionadas. En la Tabla 4.2 se pueden ver los tiempos.
77
Se continua con la realizacion de las pruebas con un alumno, al que se nombrara como Alumno
B, sus respuestas a las preguntas fueron las siguientes:
Como considera su relacion con la tecnologa?
Ninguna Baja Media Alta
Ahora se registraron los tiempos que le toma al Alumno B realizar las acciones arriba mencio-
nadas. En la Tabla 4.3 se pueden ver los tiempos.
78
4.2. Comentarios personales
Por lo que se pudo observar, existe cierta dificultad para la realizacion de las gesturas por parte
de usuarios que por primera vez usan la aplicacion, pero toda persona requiere de capacitacion o un
tiempo de aprendizaje previo para poder ejecutar nuevas acciones o desarrollar nuevas habilidades,
esto es parte de toda persona y es necesario para poder generar un conocimiento que permita realizar
mejor las actividades, en este caso las gesturas.
Tambien se pudo observar que existen algunos usuarios a los que no se les dificulto mucho
adaptarse a la aplicacion, y que tardaron unos cuantos segundos en realizar las gesturas y adaptarse
a los movimientos de las manos que se requeran para ellas. Por lo tanto, en mi opinion, la facilidad
o dificultad del uso de la aplicacion esta determinada tambien por experiencias previas en este tipo
de aplicaciones.
Ahora bien, con respecto a las tablas, se puede observar que la gestura que mas trabajo cuesta
realizar, es la seleccion, esto es debido a que el dispositivo Leap Motion todava cuenta con ciertos
detalles en la deteccion correcta de las manos. Debido a su experiencia y largo tiempo de trabajar
con la aplicacion, se aprecia que el desarrollador tiene mas facilidad con las gesturas y por esta
razon, la mayora de sus tiempos son menores, aunque el alumno demostro tambien facilidad y
adaptabilidad con la aplicacion.
79
Captulo 5
Conclusiones
La Realidad Aumentada es un tema muy interesante que tiene muchas aplicaciones y que todava
no se explota como se debera, pero poco a poco va ayudando a cubrir necesidades y haciendo mas
facil el trabajo de las personas, aunque el costo de esta es elevado. Debido a esto, la mayora de las
personas solo puede tener acceso a ella desde su telefono inteligente, puesto que estos dispositivos
cada vez son mas populares y su precio se esta haciendo accesible para el publico en general. Desde
el telefono inteligente se pueden tener aplicaciones de AR, aunque la limitacion en este es que se
debe de hacer uso de las manos para poder manipular hacia donde apunta la camara.
En cuanto a este trabajo de tesis, los objetivos fueron cumplidos y se puede ver que la AR tiene
muchas aplicaciones, aunque tambien existen desafos tecnologicos que deben ser cubiertos.
Se haba comentado que para la Realidad Aumentada era necesario el uso de marcadores, esto
es debido a que el marcador nos sirve como un punto de referencia, generalmente para determinar
el inicio (centro) de nuestro mundo virtual y de ah juntarlo con el mundo real. En este caso no se
utilizo ningun marcador, puesto que el Oculus era el que nos proporcionaba la referencia o centro
de nuestro mundo virtual.
80
5.1. Obstaculos, limitaciones, problemas y desafos
Algo que en lo personal me parecio algo frustrante, es que el Leap Motion, que es el dispositivo
que se utilizo para la deteccion de las gesturas, tena muchas limitaciones con respecto a la deteccion
de las manos, por ejemplo, cuando la mano estaba de espaldas al dispositivo, este detectaba que
estaba de frente, tambien en ocasiones la mano derecha la detectaba como si fuera la izquierda
o viceversa. Aunque este dispositivo es muy preciso y detecta muy bien la posicion de los dedos,
todava tiene muchos falsos cuando los dedos estan sobrepuestos y en ocasiones no es necesario que
esten sobrepuestos para que mande senales falsas. Este fue el mayor problema puesto que el punto
principal de esta tesis es la deteccion de las gesturas de las manos, y si el dispositivo con el que se
detectan las gesturas tiene falsos, entonces resulta difcil la deteccion.
Un problema que se tuvo, fue que la idea era hacer esta tesis con gafas de AR, en lo personal
se quiso desde el principio que fuera realizada con las Google Glass, pero hubo retrasos en su
lanzamiento, y cuando el dispositivo se lanzo al publico, fue solo para los residentes de Estados
Unidos. Hubo algunas que llegaron aqu a Mexico, sin embargo todas eran vendidas por fuentes
no oficiales y por lo tanto no se puede explotar al maximo todas sus caractersticas, debido a que
requieren de un servicio web que no ha sido lanzado en Mexico. Me hubiera gustado mucho trabajar
con estas gafas.
Un desafo fue la camara web, no su funcionamiento, sino su colocacion sobre el Oculus, debido
a que deba ponerse en un lugar determinado y estar en un angulo adecuado para que ambos
dispositivos (Leap y camara) funcionaran adecuadamente. Si la camara estaba apuntando muy
arriba o muy a la derecha, en la aplicacion las manos del Leap aparecan muy lejos de las manos
detectadas por la camara, haciendo la aplicacion irreal. Uno de los mayores temores fue que la
camara se desprendiera del Oculus y tener que volver a acomodarla correctamente. Tal vez esto no
dure mas de 1 hora en realizarse si se cuenta con los materiales a la mano, pero cuando no se sabe
identificar que este es el origen del problema, el tiempo perdido se incrementa considerablemente.
81
Tambien existen limitaciones economicas, puesto que tambien estaba la posibilidad de comprar
las gafas de AR Meta-Pro, pero su precio es exagerado para el publico en general, dejando acceso
solo a personas o empresas con altos ingresos.
Otra cosa que se puede mejorar, es el poder moverse en el mundo virtual, esto podra hacerse
con alguna otra gestura de la mano, poder agregar mas objetos de una lista, ya sean sencillos o
complejos y modificar sus vertices, y una vez con la posibilidad de agregar mas objetos, se podran
guardar caractersticas de los objetos agregados a un archivo, esto con la finalidad de volver a cargar
todo desde el ultimo momento antes de salirse de la aplicacion, debido a que en estos momentos,
siempre que se sale de la aplicacion, el escenario es restablecido a sus valores por defecto y sin
importar que se muevan, roten o eliminen, al iniciar todo se restablece.
Tambien podra utilizarse para construccion o decoracion a escala, puesto que se podra tener
un modelo base de un edificio o incluso de una ciudad, seleccionar un edificio y entrar a algun piso
del mismo para agregar muebles, quitar o agregar paredes, cambiar posiciones de escaleras, agregar
pisos, ventanas, unir o dividir (cortar) objetos, en fin, el unico lmite sera nuestra imaginacion.
82
Anexos
83
Anexo A
Diagramas de flujo
En la Figura A1 se muestra el diagrama de flujo general del sistema, iniciando desde el momento
en que se ejecuta la aplicacion y finalizando solamente cuando se cierra el programa.
84
En la Figura A2 se muestra el diagrama de flujo del script nombrado handleGestures, el cual es
el encargado de la deteccion de las gesturas que se encuentran predeterminadas en el Leap Motion.
85
En la Figura A3 se muestra el diagrama de flujo del script nombrado handlePerGestures, el
cual es el encargado de la deteccion de las gesturas que fueron personalizadas, es decir, que no se
encuentran incluidas con el Leap Motion y fueron programadas por separado.
Figura A3: Diagrama de gesturas personalizadas (no incluidas con el Leap Motion)
86
Anexo B
DepthSense 325
87
Guante DG5-VHand 3.0
Numero de sensores: (Uno por dedo) y la orientacion (pendiente y giro) de la mano del
usuario.
Interfaz de salida: USB 1.1, rango de muestreo mnimo 75 Hz, Sensor integrado de pendiente
y giro.
Software incluido: Rutinas de instalacion para la DLL para Windows de 32 bits, emulacion
del raton, visor de baja calidad de datos, modelo grafico poligonal de la mano, emulacion de
palanca de mando, codigo fuente de programa de ejemplo DOS para 16 y 32 bits.
Google Glass
Batera: Un da de uso normal. Algunas caractersticas como la grabacion de video, son mas
demandantes para la batera.
88
Oculus Rift
Caractersticas generales
Tipo de rastreo: Rastreo posicional para detectar los movimientos del usuario
Pantalla
ICIS
Compatibilidad: Mac, Windows, Android. Compatible con cualquier dispositivo con Blue-
tooth habilitado con sistema iOS 7, Windows Phone 8 o Android Ice Cream Sandwich (o
sistemas operativos posteriores).
89
Meta Pro
Pantalla
Camara de profundidad
Resolucion: 320x240 (QVGA) pxeles con campo de vision (Horizontal x Vertical x Profun-
didad): 74 x 58 x 87 grados
Camara a color
Seguimiento de cabeza
AUDIO
90
Epson Moverio BT-200
Opticas
Frecuencia de actualizacion: 60 Hz
Sensores
Camara: VGA
Microfono: Si
Conectividad
Bluetooth: 3.0
CPU y Memoria
91
RAM: 1 GB
Memoria interna: 8 GB
Interfaz de usuario
Teclas de funcion: Encendido (bloqueo), Inicio, Menu, Atras , Brillo, 2D/3D, Volumen
(+/-), Reinicio
92
ORA
Caractersticas de la pantalla
Caractersticas mecanicas
Caractersticas Electricas/Electronicas
Conectividad: Bluetooth 4 y WiFi 802.11b/g/n con Miracast, microUSB para carga y enlace
93
Vuzix M100
Caractersticas generales
Color: 24 bits
Uso: Puede usarse tanto para el ojo izquierdo como para el derecho
Sistemas operativos soportados: Android ICS 4.04, API 15, iOS (en desarrollo)
Controles
Control remoto: Aplicacion de control remoto, corre a la par con el dispositivo Android
Sensores
GPS: Si
94
Proximidad: Si
Batera
Duracion con pantalla apagada: Hasta seis horas con manos libres
Duracion uso intenso: Una hora de manos libres + pantalla + camara + carga alta de
trabajo del CPU
Camara
Resolucion: 5 MP
Video: 1080p
Conectividad
WiFi: 802.11b/g/n,
Bluetooth: Si
95
Camara web USB Logitech C170[11]
Caractersticas generales:
Microfono: Si
Dimensiones de la camara:
96
Anexo C
Scripts de la aplicacion
Archivo comandos.cs
using UnityEngine ;
using System . Collections ;
circle ,
keytap ,
screentap ,
swipe
}
97
Archivo CollisionIndex.cs
using UnityEngine ;
using System . Collections ;
using Leap ;
98
case Gesture . GestureType . TYPESCREENTAP :
p . setComandoActual ( comandos . screentap ) ;
break ;
case Gesture . GestureType . TYPESWIPE :
p . setComandoActual ( comandos . swipe ) ;
break ;
} // switch
}
}
} // foreach
}
}
99
accionBorrar . ejecutaAccion ( hm ,
p . objSelected . GetComponent < Collider >() ) ;
}
else p . showOcuMessage ( " swipe . Eliminar ? " , true ) ;
}
p . setComandoActual ( comandos . none ) ;
}
break ;
}
}
void Start () {
ges = new detectaGestura () ;
void Update () {
if (! p . clk_izq_act ) {
if ( controller != null ) {
100
lastFrame = frame ;
frame = controller . Frame () ;
checarGesturas () ;
}
Archivo handlePerGestures.cs
using UnityEngine ;
using System . Collections ;
using Leap ;
101
public han dlePer Gestur es () {
}
102
p . setComandoActual ( comandos . none ) ;
p . openLHand () ;
p . hideMessage () ;
}
break ;
}
}
103
}
private void c h e c a r R o t a c i o n N o r m a l () {
if ( p . getComandoActual () == comandos . none && p . clk_izq_act ) {
104
if ( p . objSelected . GetComponent ( typeof ( imagenPlano ) ) == null ) {
if ( p . setComandoActual ( comandos . rotar ) )
p . showOcuMessage ( " Rotando " , false ) ;
}
else {
p . showOcuMessage ( " NO CON IMAGEN " , true ) ;
p . clk_izq_act = false ;
}
}
}
105
}
void Start () {
accionArrastrar = new accionGrab () ;
accionRotar = new a cc io n_ LC lic k_ RR ot () ;
accionEscalar = new accionScale () ;
accionRotarUnEje = new accionRotar1Eje () ;
p = ( Params ) GameObject . Find ( " Scripts " ) . GetComponent ( typeof ( Params ) ) ;
Hand hnd = GetComponent < HandModel >() . GetLeapHand () ;
if ( hnd . IsLeft ) p . setLHand ( hnd ) ;
else p . setRHand ( hnd ) ;
}
void Update () {
HandModel hand_model = GetComponent < HandModel >() ;
if ( hand_model == null ) return ;
void OnDestroy () {
if ( name . Equals ( " LeftRigidHand ( Clone ) " ) ) p . openLHand () ;
if ( name . Equals ( " RightRigidHand ( Clone ) " ) ) {
p . openRHand () ;
if (! p . clk_izq_act )
106
p . hideMessage () ;
}
}
}
Archivo imagenPlano.cs
using UnityEngine ;
using System . Collections ;
107
Archivo Params.cs
using UnityEngine ;
using System . Collections ;
using System . Collections . Generic ;
using Leap ;
108
private UILabel lbl ;
private bool lHandClosed ;
private bool rHandClosed ;
private bool lHandFirstClosed ;
public LineRenderer lr ;
public Params () {
clk_izq_act = false ;
quaternionZero = new Quaternion (0 , 0 , 0 , 0) ;
magnetDistance = 1.0 f ;
offset = new Vector3 (0 , 0 , 0) ;
span = new Vector3 (0.02 f , 0.02 f , -0.02 f ) ;
submenu = false ;
autoHideMessage = false ;
frmsCount = 0;
maxFrames = 100;
109
lHandPosBase = Vector3 . zero ;
rHandPosBase = Vector3 . zero ;
comandoActual = comandos . none ;
timeBetw e e nG e s tu r e s = 25;
timeNextGesture = t i m eB e t we e n Ge s t ur e s ;
}
public GameObject g et La st Co ll is io ne d () {
return lastCollisioned ;
}
public Transform g et Ce nt ro Tr an sf or m () {
110
if ( centro == null ) return null ;
return centro . transform ;
}
void Start () {
if ( objSelected != null ) s e l e c c i o n a r N o D e s e l e c c i o n a r ( objSelected ) ;
lHand = null ;
rHand = null ;
111
void Update () {
if ( autoHideMessage ) {
if ( frmsCount == maxFrames ) {
autoHideMessage = false ;
frmsCount = 0;
lbl . text = " " ;
}
else frmsCount ++;
}
if ( timeNextGesture >0) timeNextGesture - -;
if ( timeForSeleccion >0) timeForSeleccion - -;
}
112
if ( newCom == comandos . none ) {
comandoActual = newCom ;
timeNextGesture = t i m eB e t we e n Ge s t ur e s ;
deleteCentro () ;
return true ;
}
else {
if ( timeNextGesture ==0) {
comandoActual = newCom ;
// El if es para que se pueda ejecutar la rotarEje
if ( comandoActual != comandos . arrastrar )
timeNextGesture = t i m eB e t we e n Ge s t ur e s ;
return true ;
}
}
return false ;
}
113
public bool bot hHClos edLFirst () {
if ( rHandClosed && lHandClosed && lHandFirstClosed ) return true ;
return false ;
}
114
lbl . text = msj ;
autoHideMessage = autoHide ;
}
}
115
s e l e c c i o n a r N o D e s e l e c c i o n a r ( newObj ) ;
}
}
116
GameObject ins = ( GameObject ) Instantiate ( Resources . Load ( go . name ) ) ;
ins . transform . localScale = new Vector3 (0.5 f , 0.5 f , 0.5 f ) ;
ins . transform . localPosition = new Vector3 ( newx , 0.0 f , newy ) ;
newx +=3;
}
submenu = true ;
}
}
Archivo RotateLeapWithObject.cs
using UnityEngine ;
using System . Collections ;
void Start () {
}
void Update () {
Vector3 r = objeto . transform . localRotation . eulerAngles ;
transform . eulerAngles = new Vector3 (270 - r .x , r . y +180 , r . z ) ;
}
}
Archivo webcam.cs
using UnityEngine ;
117
public WebCamTexture webcamTexture ;
private int timeForChanging ;
private bool change ;
void Start () {
timeForChanging = 10;
change = true ;
webcamTexture = new WebCamTexture ( " Webcam C170 " , 1280 , 760 , 10) ;
GetComponent < Renderer >() . material . mainTexture = webcamTexture ;
webcamTexture . Play () ;
}
void Update () {
if ( change ) {
if ( timeForChanging ==0) {
change = false ;
(( Camera ) GameObject . Find ( " LeftEyeAnchor " ) . GetComponent (
typeof ( Camera ) ) ) . fieldOfView = 100;
(( Camera ) GameObject . Find ( " RightEyeAnchor " ) . GetComponent (
typeof ( Camera ) ) ) . fieldOfView = 100;
}
else timeForChanging - -;
}
118
}
}
public acc io n_ LC li ck _R Ro t () {
p = ( Params ) GameObject . Find ( " Scripts " ) . GetComponent ( typeof ( Params ) ) ;
objRotBase = p . getQuatZero () ;
handRotBase = p . getQuatZero () ;
rot = p . getQuatZero () ;
rotando = false ;
}
119
hm . GetPalmRotation () .z ,
hm . GetPalmRotation () . w ) ;
rotando = true ;
}
else {
rot = hm . GetPalmRotation () ;
c . transform . localRotation = objRotBase *
Quaternion . AngleAxis ( -( rot . x -
handRotBase . x ) * Mathf . Rad2Deg *2 , Vector3 . right ) ;
c . transform . localRotation = c . transform . localRotation *
Quaternion . AngleAxis (( rot . z -
handRotBase . z ) * Mathf . Rad2Deg *2 , Vector3 . up ) ;
c . transform . localRotation = c . transform . localRotation *
Quaternion . AngleAxis (( rot . y -
handRotBase . y ) * Mathf . Rad2Deg *2 , Vector3 . forward ) ;
}
}
else {
if ( rotando ) {
rotando = false ;
objRotBase = p . getQuatZero () ;
handRotBase = p . getQuatZero () ;
rot = p . getQuatZero () ;
return true ;
}
}
}
return false ;
}
}
120
Archivo detectaGestura.cs
using UnityEngine ;
using System . Collections ;
using Leap ;
public detectaGestura () {
inicializa () ;
}
121
private void actualizaBarrido ( Gesture . GestureState edo ) {
if ( edo == Gesture . GestureState . STATESTART && barrido == 0 )
barrido = 1 ;
else if ( edo == Gesture . GestureState . STATEUPDATE && barrido == 1 )
barrido = 2 ;
else if ( edo == Gesture . GestureState . STATESTOP && barrido == 2 )
barrido = 3 ;
}
122
case Gesture . GestureType . TYPESWIPE : actualizaBarrido ( edo ) ;
break ;
}
break ;
case Gesture . GestureState . STATEUPDATE :
switch ( tipo ) {
case Gesture . GestureType . TYPECIRCLE : actualizaCirculo ( edo ) ;
break ;
case Gesture . GestureType . TYPESWIPE : actualizaBarrido ( edo ) ;
break ;
}
break ;
case Gesture . GestureState . STATESTOP :
switch ( tipo ) {
case Gesture . GestureType . TYPECIRCLE : actualizaCirculo ( edo ) ;
break ;
case Gesture . GestureType . TYPESWIPE : actualizaBarrido ( edo ) ;
break ;
case Gesture . GestureType . TYPEKEYTAP :
if ( circulo != 3 && barrido != 3 )
keytap = true ;
break ;
case Gesture . GestureType . TYPESCREENTAP :
if ( circulo != 3 && barrido != 3 )
screentap = true ;
break ;
}
break ;
case Gesture . GestureState . STATEINVALID :
break ;
} // switch
123
return getTipo () ;
}
}
Archivo LeftHandClick.cs
using UnityEngine ;
using System . Collections ;
using Leap ;
void Start () {
framesTimer = 50;
framesTimerCount = 0;
124
if (! p . clk_izq_act ) {
p . clk_izq_act = true ;
}
else {
p . clk_izq_act = false ;
p . hideMessage () ;
}
}
framesTimerCount =0;
}
}
void Update () {
Hand leap_hand = hand_model . GetLeapHand () ;
if ( leap_hand . IsLeft )
VerifyGrabbing ( leap_hand ) ;
}
}
Archivo accionCircle.cs
using UnityEngine ;
using System . Collections ;
125
Debug . Log ( " Creating sub menu " ) ;
p . createSubMenu () ;
}
else {
return true ;
}
return false ;
}
}
Archivo accionGrab.cs
using UnityEngine ;
using System . Collections ;
using Leap ;
public accionGrab () {
handPosBase = Vector3 . zero ;
p = ( Params ) GameObject . Find ( " Scripts " ) . GetComponent ( typeof ( Params ) ) ;
camaraRig = GameObject . Find ( " OVRCameraRig " ) ;
retardo = 0;
}
126
public void baseToCero () {
handPosBase = Vector2 . zero ;
}
127
posObj . x * p . span .x , - posObj . z * p . span .y , posObj . y * p . span . z ) -
handPosBase ;
Archivo accionRotar1Eje.cs
using UnityEngine ;
using System . Collections ;
using Leap ;
128
private Quaternion objRotBase ;
private Params p ;
private float angleBase ;
private float angleDer ;
private float tolerancia ;
private GameObject camaraRig ;
private imagenPlano img ;
public accionRotar1Eje () {
p = ( Params ) GameObject . Find ( " Scripts " ) . GetComponent ( typeof ( Params ) ) ;
camaraRig = GameObject . Find ( " OVRCameraRig " ) ;
objRotBase = p . getQuatZero () ;
tolerancia = 10;
}
public void s et Ob jR ot at io nB as e () {
objRotBase = new Quaternion ( p . objSelected . transform . localRotation .x ,
p . objSelected . transform . localRotation .y ,
p . objSelected . transform . localRotation .z ,
p . objSelected . transform . localRotation . w ) ;
Vector3 centro = Vector3 . Lerp ( p . palmPosToUnity ( p . getLHand () ) ,
p . palmPosToUnity ( p . getRHand () ) , 0.5 f ) ;
p . setCentro ( centro ) ;
angleBase = AngleSigned2 ( p . ge tC en tr oT ra ns fo rm () ,
p . palmPosToUnity ( p . getRHand () ) ) ;
p . enable Li ne Re nd er er ( true ) ;
img = ( imagenPlano ) p . objSelected . GetComponent ( typeof ( imagenPlano ) ) ;
}
129
img . rotacion = img . rotacion - ( angleDer - angleBase ) ;
return true ;
}
float angleIzq = AngleSigned2 ( p . ge tC en tr oT ra ns fo rm () ,
p . palmPosToUnity ( p . getLHand () ) ) ;
angleDer = AngleSigned2 ( p . g et Ce nt roT ra ns fo rm () ,
p . palmPosToUnity ( p . getRHand () ) ) ;
float diferencia =0;
if ( angleIzq <0) diferencia = angleIzq +180 - angleDer ;
else diferencia = angleIzq -180+ angleDer ;
130
float co = Vector3 . Distance ( getPto3 ( ptoRef . position , v ) , v ) ,
h = Vector3 . Distance ( ptoRef . position , v ) ;
retorno = Mathf . Asin ( co / h ) * Mathf . Rad2Deg ;
Archivo accionScale.cs
using UnityEngine ;
using System . Collections ;
using Leap ;
131
private float distBase ;
public accionScale () {
p = ( Params ) GameObject . Find ( " Scripts " ) . GetComponent ( typeof ( Params ) ) ;
objScaleBase = Vector3 . zero ;
}
132
float newx = objScaleBase . x * escalar , newy = objScaleBase . y * escalar ,
newz = objScaleBase . z * escalar ;
newx = ( newx >= p . getMinimumScale () ? newx : p . getMinimumScale () ) ;
newy = ( newy >= p . getMinimumScale () ? newy : p . getMinimumScale () ) ;
newz = ( newz >= p . getMinimumScale () ? newz : p . getMinimumScale () ) ;
c . transform . localScale = new Vector3 ( newx , newy , newz ) ;
}
}
Archivo accionSeleccionar.cs
using UnityEngine ;
using Leap ;
133
}
}
return Vector3 . zero ;
}
134
}
}
}
Archivo accionSwipe.cs
using UnityEngine ;
using System . Collections ;
using Leap ;
135
Archivo iAccion.cs
using UnityEngine ;
136
Bibliografa
[4] Dan Farber, Metas $3,000 3D glasses look to an augmented reality future.
http://www.cnet.com/news/metas-3000-3d-glasses-look-to-an-augmented-reality-future/,
Consultada en Agosto 2014.
137
[11] Logitech, Webcam C170. http://support.logitech.com/product/webcam-c170, Consultada
en Marzo 2015.
[14] Mehmet Kesim, Yasin Ozarslan, Augmented reality in education: current technologies and
the potential for education, Procedia - Social and Behavioral Sciences, vol. 47, pp. 297302,
2012.
[17] Xiangyu Wang, Mi Jeong Kim, Peter E.D. Love, Shih-Chung Kang, Augmented Reality in
built environment: Classification and implications for future research, Automation in
Construction, vol. 32, pp. 113, 2013.
[18] Tomasz Mazuryk and Michael Gervautz, Virtual Reality. History, Applications, Technology
and Future, Institute of Computer Graphics. Vienna University of Technology, Austria, 1996.
[19] David Drascic and Paul Milgram, Perceptual Issues in Augmented Reality, SPIE, vol. 2653,
pp. 123134, 1996.
[21] Jesus Ibanez, Carlos Delgado-Mata, Lessons from research on interaction with virtual
environment, Journal of Network and Computer Applications, vol. 34, pp. 268281, 2011.
138
[22] Hung-Lin Chi, Shih-Chung Kang, Xiangyu Wang, Research trends and opportunities of
augmented reality applications in architecture, engineering, and construction, Automation in
Construction, vol. 33, pp. 116122, 2013.
[23] Yoki Ariyana and Aciek Ida Wuryandari, Virtual Interaction on Augmented Reality for
Education with Nonparametric Belief Propagation Algorithm, Procedia - Social and
Behavioral Sciences, vol. 67, pp. 590599, 2012.
[24] Jiaqing Lin, Hiroaki Nishino, Tsuneo Kagawa, Kouichi Utsumiya, A method of two-handed
gesture interactions with applications based on commodity devices, Computers and
Mathematics with Applications, vol. 63 Issue 2, 2012.
[25] Raine Kajastilan, TapioLokki, Eyes-free interaction with free-hand gestures and auditory
menus, Int. J. Human-Computer Studies, vol. 71, pp. 627640, 2013.
[26] Do Hyoung Shin, Phillip S. Dunston, Technology development needs for advancing
Augmented Reality-based inspection, Automation in Construction, vol. 19, pp. 169182,
2010.
[27] Jason Wither, Stephen DiVerdi, Tobias Hollerer, Annotation in outdoor augmented reality,
Computers and Graphics, vol. 33, pp. 679689, 2009.
[28] Jae Yeol Lee, Dong Woo Seo, Gue Won Rhee, Tangible authoring of 3D virtual scenes in
dynamic augmented reality environment, Computers in Industry, vol. 62, pp. 107119, 2011.
[29] Yuko Uematsu, Hideo Saito, Multiple planes based registration using 3D Projective Space
for Augmented Reality, Image and Vision Computing, vol. 27, pp. 14841496, 2009.
[30] Angela Di Serio, Mara Blanca Ibanez, Carlos Delgado Kloos, Impact of an augmented
reality system on students motivation for a visual art course, Computers and Education,
vol. 68, pp. 586596, 2013.
[31] Cristina Portales, Jose Luis Lerma, Santiago Navarro, Augmented reality and
photogrammetry: A synergy to visualize physical and virtual city, ISPRS Journal of
Photogrammetry and Remote Sensing, vol. 65, pp. 134142, 2010.
139
[32] Dong Woo Seo, Jae Yeol Lee, Direct hand touchable interactions in augmented reality
environments for natural and intuitive user experiences, Expert Systems with Applications,
vol. 40, pp. 37843793, 2013.
[33] Lucas Mearian, Minority Report-style goolges enable interaction with floating display.
140
Glosario
1080p
Es el nombre corto para una de las categoras de los modos de vdeo, usado principalmente
en la television de alta definicion. El numero 1080 representa 1080 lneas horizontales de
resolucion de pantalla, mientras que la letra p significa barrido progresivo, es decir, que las
1080 lineas que forman la imagen se van formando de una en una, de arriba hacia abajo. 93,
95
2D
Es una abreviacion para hacer referencia a dos dimensiones, es decir, alto y ancho, sin tomar
en cuenta la profundidad. 3, 4, 34, 92
3D
Es una abreviacion para hacer referencia a tres dimensiones, es decir, ancho, alto y
profundidad. 5, 6, 8, 16, 1820, 34, 40, 41, 4550, 52, 56, 90, 92
720p
Es el nombre corto para una de las categoras de los modos de vdeo, usado principalmente en
la television de alta definicion. El numero 720 representa 720 lneas horizontales de resolucion
de pantalla, mientras que la letra p significa barrido progresivo, es decir, que las 720 lineas
que forman la imagen se van formando de una en una, de arriba hacia abajo. 36, 87, 88
141
802.11
Es un estandar de la IEEE para conexiones inalambricas. La letra o letras que le siguen indican
el tipo de estandar del que se trata, variando basicamente la velocidad de transferencia de
datos. Si existe una diagonal entre letras, por ejemplo b/n, esto quiere decir que soporta ambas
velocidades. 34, 88, 91, 93, 95
Acelerometro
Adyacente
Algoritmo
Conjunto de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar
una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha
actividad. VIII, 14, 15, 22
Android
Anotacion
Cuando se habla de una anotacion en Realidad Aumentada, quiere decir que se pone un texto
sobre alguna imagen, para as poder obtener mas informacion de la imagen o algun objeto, o
parte de un objeto dentro de esa imagen. IV, 6, 14
Asset Store
142
Base de datos
Binaural
Un ejemplo muy claro de algo binaural, son nuestros odos. Los odos estan separados cierta
distancia uno del otro, por lo cual, se puede saber de donde proviene el sonido. En otras
palabras, binaural es cuando se percibe un sonido de dos lugares diferentes. 3
Binocular
De acuerdo a su raz etimologica, bis = dos veces; oculus-i = ojo. Por lo tanto se refiere al
empleo de los dos ojos, simultaneamente. 11
Bit
Un bit es un dgito del sistema de numeracion binario, el cual puede representar solo uno
de dos valores, 0 o 1. Es muy usado en sistemas electronicos donde un 0 representa ausencia
de voltaje y un 1 significa presencia de voltaje. Un conjunto de muchos bit se utiliza para
representar datos. 71, 88, 91, 94
Bluetooth
Es una tecnologa de ondas de radio de corto alcance, que posibilita la transmision de voz y
datos entre diferentes dispositivos. 26, 30, 34, 35, 37, 88, 89, 91, 93, 95
143
Calibrada
Calibrar es el proceso de comparar los valores obtenidos por un instrumento de medicion con
la medida correspondiente de un patron de referencia (o estandar). 9
Capacitivo
Que posee lo que se llama Capacitancia, que es la capacidad de almacenar energa electrica
en forma de campo magnetico. 92
Colector de escape
Es un conjunto de tubos que conducen los gases de la combustion y los dirigen al exterior del
vehculo a traves del sistema de escape. 6
Contraste
Controlador
Cursor
Digitalizar
Es el proceso de convertir cualquier cosa, ya sea una imagen, texto, o algun objeto, en su
equivalente digital, es decir, por computadora. 8
144
Dinamico
Disparidad
Es la diferencia o desemejanza entre dos cosas. En otras palabras, que no son iguales. 9, 11
Emulacion
Es una tecnica de imitacion con el fin de que un dispositivo realice el funcionamiento de otro.
88
Esquema
Estereoscopico
Que da una impresion de profundidad parecida a la que percibe la vision normal o binocular.
4, 5, 11, 34
Estatico
FBX
Es un tipo de formato de archivo que se utiliza para facilitar el transporte de los datos de un
modelo 3D entre aplicaciones. 47
Frecuencia espacial
Gafas de AR
Son unas gafas cuya funcion principal es proporcionar un entorno de AR. I, 1921, 31, 32,
3537, 39, 40, 81, 82
145
Gafas de VR
Son unas gafas cuya funcion principal es proporcionar un entorno de VR. I, 1921, 33, 40
Gestura
Forma de comunicacion no verbal ni vocal en la cual ciertas acciones especficas visibles del
cuerpo comunican mensajes particulares. I, V, VIII, 1215, 1727, 39, 40, 4348, 6062, 65,
7075, 79, 81, 82, 85, 86, 94
Giroscopio
Grafica vectorial
Son un tipo de graficas en las que las imagenes se almacenan y representan por medio de
trazos geometricos controlados por calculos y formulas matematicas, tomando algunos puntos
de la imagen como referencia para construir el resto. Esto significa que los graficos vectoriales
son creados con primitivas geometricas como puntos, lneas, curvas o polgonos a traves de
software o hardware. 8
Hardware
Es cualquier parte tangible de un sistema informatico, como pueden ser sus componentes
electricos, electronicos, electromecanicos y mecanicos. 3, 19, 20, 39
Hipervnculo
Es un enlace que nos lleva de un lugar a otro, generalmente se usa en internet donde nos
puede llevar a otra pagina, una imagen, texto o cualquier otro lugar. 3
Hz
Hercio, hertzio o hertz (smbolo Hz), es la unidad de frecuencia del Sistema Internacional
de Unidades. Este fue comenzado a adoptarse en 1960, y en la decada de 1970, reemplazo
146
completamente al nombre anterior de cps (ciclos por segundo), as como sus multiplos
relacionados. Se puede encontrar con sus multiplos relacionados, el mas comun actualmente
es GHz, que significa GigaHertz y equivale a 1 000 000 000 Hz. 71, 88, 89, 91, 93, 94, 96
Incertidumbre
Interaccion
Es una accion que se basa en el intercambio de informacion entre dos o mas personas o cosas.
I, VIII, 1, 12, 13, 1517, 19, 43, 44
Interactivo
Interactuar
Que estas intercambiando informacion entre personas o cosas. I, 1, 4, 12, 1618, 22, 33, 36
Interfaz
Es un elemento o conjunto de elementos que permiten el viaje de informacion entre dos objetos
o personas. 31, 49, 88, 92, 93
Interposicion
Es una accion que se produce cuando un objeto esta delante y entorpeciendo parcialmente la
vision de otro, es evidente que el objeto que esta delante, esta mas cerca, produciendose una
clara impresion de profundidad. IV, 11
Javascript
JavaScript es un lenguaje de programacion que se diseno con una sintaxis similar al C, aunque
adopta nombres y convenciones del lenguaje de programacion Java. Sin embargo Java y
JavaScript no estan relacionados y tienen semanticas y propositos diferentes. 50
147
Kinect
Li-Ion
Esto se usa para indicar que la batera funciona a base de iones de litio. Un ion es una partcula
cargada electricamente constituida por un atomo o molecula que no es electricamente neutral,
es decir, debe de estar cargado positivamente o negativamente. 93
Luz infrarroja
Infrarrojo proviene de la palabra griega infra, que quiere decir por debajo de, por lo tanto
una luz infrarroja es una luz que se encuentra por debajo del rojo que puede percibir el ser
humano (que no puede ser vista). 28
Magnetometro
Es un dispositivo que sirve para cuantificar en fuerza o direccion la senal magnetica de una
muestra. 89
MAh
Marcador
Es generalmente un dibujo que puede variar, los mas comunes constan de un borde negro de
un ancho determinado, y en su interior, tienen un dibujo negro o un patron que hace que se
diferencien unos de otros. VIII, 2, 3, 12, 14, 15, 80
148
Matiz
MicroSD
Es un formato de tarjeta de memoria. Presentada por primera vez por SanDisk y es mas
pequena que la miniSD. 92
MicroSDHC
Es un formato de tarjeta de memoria donde SDHC son las siglas para Secure Digital High
Capacity, por lo tanto, estas son de alta capacidad a comparacion con las microSD. 92
Miracast
Es un estandar que permite transmitir audio y vdeo mediante WiFi entre distintos
dispositivos. 91, 93
Modelo geometrico
Monocromatico
Del griego mono (uno) y chroma (superficie o color), es decir, que tiene un solo color. 4
Monoscopico
Es una accion por la cual se puede obtener una imagen de un solo punto de vista. 11
Nit
149
Objeto virtual
Obturador
Es un dispositivo que controla el tiempo durante el que llega la luz a un dispositivo fotosensible
(sensible a la luz). 5
Ocluido
Que existe un objeto que estan antes que este y por lo tanto, tapa una parte de el. 11
Oclusion
Es un efecto visual que se produce cuando el objeto mas cercano al observador impide ver al
objeto mas lejano. 11
OpenGL
Open Graphics Library, es una especificacion estandar que define una API multilenguaje y
multiplataforma para escribir aplicaciones que produzcan graficos 2D y 3D. 14, 49
Ortoscopica
Pantalla vestible
Son pantallas que se pueden usar como si fuera ropa, es decir, se visten, por ejemplo los
lentes. 31
Perspectiva
Prototipo
150
Python
Pxel
Es un acronimo del ingles para picture element o bien en espanol, elemento de una imagen.
Es la menor unidad homogenea en color que forma parte de una imagen digital (un pequeno
punto diminuto de la imagen digital). 4, 90, 91, 93
Realidad Aumentada
Realidad Virtual
Relacion de aspecto
Es la proporcion entre el ancho y la altura de una imagen. Se calcula dividiendo el ancho por
la altura de la imagen visible en pantalla, y se expresa normalmente como X:Y. 90, 94, 95
Renderizado
Es un termino usado en informatica para referirse al proceso de generar una imagen o vdeo
mediante el calculo de iluminacion partiendo de un modelo en 3D. 3, 48, 50
Resolucion
Es el numero de pxeles que pueden ser vistos en una pantalla y son representados en sentido
horizontal y vertical. Existen gran cantidad de resoluciones como por ejemplo: 320 x 480, 640
x 480, 800 x 600, 1280 x 800, etc. La multiplicacion de ambos numeros da como resultado el
total de pxeles que se representan en la pantalla. IV, 5, 10, 11, 28, 34, 36, 8790, 93, 94, 96
151
Resonancia magnetica
Es un examen que utiliza imanes y ondas de radio potentes para crear imagenes del cuerpo.
No se emplea radiacion (rayos X). 5
Retroalimentacion
Tambien conocida como realimentacion. Se utiliza para nombrar al regreso de una parte de la
salida de un sistema o circuito a su propia entrada, supone, por lo tanto, que una proporcion
de aquello que sale es redireccionado a la entrada. Esto permite regular el comportamiento y
controlar el sistema en cuestion. 3, 4
Script
Seguidor optico
Es generalmente una camara o dispositivo que se utiliza para rastrear (seguir) el movimiento
de algun objeto o persona. 4
Silueta
Es una vista de cierto objeto o escena que consiste en una representacion grafica sin rasgos
distintivos, generalmente se relaciona esto con algun tipo de sombra. 4, 27
Simulador
Sistema operativo
152
Software
Teleoperacion
Es un proceso que nos permite controlar el movimiento o la fuerza ejercida sobre algo,
generalmente ocupado sobre robots, pero el control se realiza de manera remota, es decir,
puede que el objeto controlado este realmente muy lejos o simplemente se necesite controlar a
cierta distancia para evitar estar presente en ese momento, como por ejemplo cuando se este
en un entorno hostil del que haya que proteger al operador. VIII, 7, 8, 11
Textura
Una textura es una imagen que se utiliza para cubrir la superficie de un objeto virtual ya sea
de dos o de tres dimensiones. En ocasiones una textura puede dar un efecto de relieve en el
objeto sobre el que es aplicado. 10, 63
Tiempo real
Esta palabra se usa en sistemas informaticos donde unicamente interesa la rapidez de dar
la respuesta dentro del intervalo de tiempo cuya medida, entre mas pequena es mejor, sin
importar el costo de generar esa respuesta. I, 3, 5, 7, 8, 30, 36
Triangulacion
Virtual
Se refiere a algo que no es real ni se puede tocar y generalmente es creado por la computadora.
VIII, 15, 79, 12, 1417, 19, 26, 31, 33, 37, 39, 44, 50, 62, 63, 68, 80, 82
Walkthrough
153
WiFi
Son las siglas para Wireless Fidelity, o bien, fidelidad inalambrica, que generalmente se usa
para representar que un dispositivo se puede conectar con otros sin la necesidad de cables. 34,
37, 88, 91, 93, 95
Wiimote
154
Acronimos
CPU Central Process Unit. Su traduccion sera Unidad centra de procesamiento, y es el encargado
de realizar las operaciones y el control en un sistema de computo. 34, 91, 95, 96
CRT Cathode Ray Tube, o bien, tubo de rayos catodicos. Es una pantalla que permite visualizar
imagenes por medio de un haz de rayos catodicos. 4
DDDR Defined Distance with Defined Range. Su traduccion sera Distancia definida con Rango
Definido. 16
155
DDR Double Data Rate. Su traduccion sera Doble Velocidad de datos, y es un termino que se
utiliza para determinar el tipo de memoria RAM que ocupa una computadora. 93
DLL Dynamic Link Library. Su traduccion sera Librera de Enlace Dinamico, y basicamente es un
archivo que contiene instrucciones para permitir a los programadores desarrollar aplicaciones
con dispositivos que requieran este tipo de archivos. 88
DOS Disk Operating System. Su traduccion sera Sistema Operativo de Disco y basicamente es un
sistema operativo que funcionaba por medio de lineas de comandos en modo solo texto. 88
FPS Frames Per Second. Es la medida de la frecuencia a la cual un reproductor de imagenes genera
distintos fotogramas (frames), o en otras palabras, es la cantidad de imagenes que se generan
en un segundo. 87
GB Giga Bytes. Es un acronimo muy usado que se utiliza para representar una cantidad de 1 000
000 000 Bytes (mil millones de Bytes). Un byte es un conjunto de 8 bits. 34, 71, 88, 89, 9294,
96
GNU GNU is Not Unix. Es un acronimo que hace alusion a un proyecto del tipo Movimiento
y comunidad de Software y Conocimiento Libres, en otras palabras, un software que este
dentro de GNU, es libre y puede ser utilizado de manera gratuita por cualquier persona. 49
GPL General Public Licence. Su traduccion sera, Licencia Publica General. Esto quiere decir
que el software es libre y puede ser utilizado por cualquier persona sin costo alguno, y en
ciertos casos tambien permite la modificacion de la aplicacion con la condicion de que esta
modificacion se encuentre tambien bajo la misma licencia libre. 49
GPS Global Positioning System, o bien, sistema de posicionamiento global. Es un objeto que
permite a una persona determinar en todo el mundo la posicion de un objeto, una persona o
un vehculo con una gran precision. 12, 37, 91, 93, 94
156
HD High Definition. Alta definicion. 36, 71, 87
HDMI High Definition Multimedia Interface. Interfaz multimedia de alta definicion. Es una norma
de audio y vdeo digital cifrado sin compresion que permite el uso de vdeo computarizado,
mejorado o de alta definicion, as como audio digital multicanal en un unico cable. 43
HMD Head Mounted Display. Es un dispositivo de visualizacion que permite reproducir imagenes
creadas por ordenador sobre una pequena pantalla muy cercana a los ojos. VIII, 35, 10, 13,
31
HMI Human Machine Interface. Interfaz Hombre Maquina. Estas siglas se utilizan para referirse
a la interaccion entre humanos y maquinas. 22
HMS HelmetMounted Sights. Cascos montados con vision. Es un casco usado por pilotos de
aviones que proporcionan cierta informacion en el visor acerca de blancos, municiones, entre
otros. 8
IEEE Institute of Electrical and Electronics Engineers. Sus siglas significan Instituto de Ingeniera
Electrica y Electronica, es una asociacion mundial de tecnicos e ingenieros que se encargan de
la estandarizacion y el desarrollo en areas tecnicas. 91, 142
LAN Local Area Network. Red de area local. Esta es una forma en la que se comunican dispositivos
electronicos ya sea de manera alambrica o inalambrica, con la restriccion de que debe ser de
un rango pequeno, generalmente abarca un edificio. 91
LCD Liquid Crystal Display. Pantalla de cristal lquido. Es una pantalla delgada y plana que utiliza
cantidades muy pequenas de energa electrica. 5, 34, 91
157
LED Lightemitting diode. Diodo emisor de luz. Un diodo es un componente electronico de dos
terminales que permite la circulacion de la corriente electrica a traves de el en un solo sentido.
Se puede decir entonces que el LED es un foco diminuto que tambien se puede encontrar en
diferentes colores. 96
MP Mega Pxeles. Representa 1 000 000 (un millon) de pxeles. 36, 88, 93, 95
QVGA Quarter Video Graphics Array. Es la resolucion grafica de 320x240 pxeles. Este termino
fue acunado as debido a que las pantallas QVGA ofrecen una cuarta parte de la resolucion
maxima del sistema VGA de IBM, es decir la cuarta parte de 640x480 pxeles. 87, 90
RAM RandomAccess Memory. Memoria de acceso aleatorio. Se utiliza como memoria de trabajo
de computadoras para el sistema operativo, los programas y la mayor parte del software. 34,
71, 92, 94, 96
RGB Red Green Blue. Rojo Verde Azul. Es un modelo de color basado en la sntesis aditiva, con
el que es posible representar un color mediante la mezcla por adicion de los tres colores de
luz primarios. Es decir, que con la combinacion de estos tres colores, puedes representar una
gran variedad de colores. 14, 34
158
RS232 Recommended Standard 232. Estandar recomendado 232. Designa una norma para el
intercambio de una serie de datos binarios entre dos dispositivos que utilicen este estandar.
30
USB Universal Serial Bus. Bus de Serie Universal. Es un estandar para la conexion de dispositivos,
como teclados, ratones, memorias, controles entre muchos otros. 23, 28, 40, 43, 87, 88, 91, 96
VGA Video Graphics Array. Adaptador Grafico de Video. Se utiliza para denominar a una pantalla
de computadora estandar la resolucion 640 x 480 pxeles. El conector VGA es de 15 contactos.
91
VR Virtual Reality. Su traduccion sera Realidad Virtual. 25, 13, 1921, 31, 33, 40, 43, 146
159