Juegos de realidad virtual y haciendo a su cuerpo un controlador! (Unidad Visual Studio + Kinect + Oculus) (9 / 11 paso)

Paso 9: Controles de mano con el Kinect

El siguiente script que vamos a crear será la que utilizamos en nuestro juego junto con la secuencia de comandos de administrador de cuerpo. Detectar el estado de la mano y accionar la rotación para nuestro juego.

Secuencia de comandos de administrador de mano

Ahora creamos otro script en la misma carpeta que la secuencia de comandos de administrador de cuerpo y cuerpo vista manager script. Llamar al HandManager. Este script se verá mucho como nuestro controlador de la vista del cuerpo.

Agregue lo siguiente de BodyView a nuestro HandManager Script.

utilizando UnityEngine;

utilizando System.Collections;

utilizando System.Collections.Generic;

usando Kinect = Windows.Kinect;

clase HandManager: MonoBehaviour

{

público GameObject BodyManager;

platformRotate de PlatformRotate privado;

ovrPlayerScript de OVRInfinitePlayerController privado;

playerScript de InfinitePlayerController privado;

_Bodies Diccionario privado = nuevo (de diccionario);

_BodyManager de BodyManager privado;

flipTimer flotador privado;

flipDelay flotador privada = 2;

int prevState = 0;

_BoneMap Diccionario privado = Dictionary() nuevo

{

{Kinect.JointType.FootLeft, Kinect.JointType.AnkleLeft},

{Kinect.JointType.AnkleLeft, Kinect.JointType.KneeLeft},

{Kinect.JointType.KneeLeft, Kinect.JointType.HipLeft},

{Kinect.JointType.HipLeft, Kinect.JointType.SpineBase},

{Kinect.JointType.FootRight, Kinect.JointType.AnkleRight},

{Kinect.JointType.AnkleRight, Kinect.JointType.KneeRight},

{Kinect.JointType.KneeRight, Kinect.JointType.HipRight},

{Kinect.JointType.HipRight, Kinect.JointType.SpineBase},

{Kinect.JointType.HandTipLeft, Kinect.JointType.HandLeft}, //Need para HandSates

{Kinect.JointType.ThumbLeft, Kinect.JointType.HandLeft},

{Kinect.JointType.HandLeft, Kinect.JointType.WristLeft},

{Kinect.JointType.WristLeft, Kinect.JointType.ElbowLeft},

{Kinect.JointType.ElbowLeft, Kinect.JointType.ShoulderLeft},

{Kinect.JointType.ShoulderLeft, Kinect.JointType.SpineShoulder},

{Kinect.JointType.HandTipRight, Kinect.JointType.HandRight}, //Needthis para el estado de la mano

{Kinect.JointType.ThumbRight, Kinect.JointType.HandRight},

{Kinect.JointType.HandRight, Kinect.JointType.WristRight},

{Kinect.JointType.WristRight, Kinect.JointType.ElbowRight},

{Kinect.JointType.ElbowRight, Kinect.JointType.ShoulderRight},

{Kinect.JointType.ShoulderRight, Kinect.JointType.SpineShoulder},

{Kinect.JointType.SpineBase, Kinect.JointType.SpineMid},

{Kinect.JointType.SpineMid, Kinect.JointType.SpineShoulder},

{Kinect.JointType.SpineShoulder, Kinect.JointType.Neck},

{Kinect.JointType.Neck, Kinect.JointType.Head},

};

Ahora hemos añadido una variable que no está en nuestro script de bodyview que es la variable prevState.

int prevState = 0;

Tenemos esta variable para evitar la constante rotación. En los controles de entrada regulares del juego que hacemos esto por solo activar la rotación cuando la tecla que se presionó, sube. Con el Kinect es bueno tener un estado de descanso que se debe lograr si queremos girar o voltear otra vez. En nuestro caso el resto estado es cualquier mano que no señalan una rotación; por ejemplo, cuando ambas manos están en puños.

Ahora en el método Update tenemos que agregar lo siguiente:

Todo el código anterior es igual a la vista del cuerpo, que es útil que ya sabemos cómo funciona.

Lo único que es diferente es:

Esta variable mantenga el estado actual de la mano, y al final del método de actualización, se guarde en la variable de estado anterior.

La siguiente parte del método de actualización diferente es en el bucle foreach.

void Update()

{

int estado = 0;

Si (BodyManager == null)

{

retorno;

}

_BodyManager = BodyManager.GetComponent ();

Si (_BodyManager == null)

{

retorno;

}

Kinect.Body [] datos = _BodyManager.GetData();

Si (datos == null)

{

retorno;

}

Lista de trackedIds = nuevo () de la lista;

foreach (var cuerpo en datos)

{

Si (cuerpo == null)

{

continuar;

}

Si (el cuerpo. IsTracked)

{

trackedIds.Add (cuerpo. TrackingId);

}

}

KnownIds la lista = new List (_Bodies.Keys);

En primer lugar eliminar cuerpos sin seguimiento

foreach (ulong trackingId en knownIds)

{

Si (! trackedIds.Contains(trackingId))

{

Destroy(_Bodies[trackingId]);

_Bodies.Remove(trackingId);

}

}

}

Tenemos que escribir los métodos CheckLeftHandState y CheckRIghtHandState. Estos métodos toman el parámetro de Kinect.HandState que equivale a un enumerable de cerrado, abierto o lazo. Tanto devuelve un int que será iguales a la variable de estado al juego qué comando que queremos ejecutar.

Originalmente el juego movido de un tirón si ambas manos en el estado de lazo, pero que es más difícil de controlar, porque para un marco una mano podría reconocerse un poco más rápido que el otro, y así el juego asume que estamos girando en el lugar de los bancos.

Así que ahora el juego: gira derecha si la derecha solo se encuentra en estado de lazo; gira izquierda si la mano izquierda solo se encuentra en estado de lazo; y tirones si la mano izquierda está abierta.

Con el CheckLeftHandState y CheckRightHandState hecho podemos volver al método Update y acabar. Actualmente basta ver si el Kinect registra nuestros Estados de mano correctamente. Para ello que creamos una instrucción switch que utiliza el estado actual y luego comprueba lo que el estado anterior era, impidiendo así toda rotación continua. Si el estado anterior era el descanso hemos estado gire, o en este caso imprime la pantalla Debug.

Está bien así que vamos a ver si esto funciona. En su escena crear otro objeto de juego vacío y lo llaman HandManager. Instale el script handmanager a él. Recuerda arrastrar la BodyManager de la jerarquía al marcador de posición BodyManger en el Inspector de HandManager.

IMAGEN 1

Ejecute el código en la unidad.

IMAGEN 2

Está bien pero todavía vemos el esqueleto. Si desactivamos el bodyView marcando la casilla de la izquierda en el inspector de podemos ejecutar otra vez el proyecto.

IMAGEN 3

¡ BAM! Ahí está, y sabes sigue siendo trabajo basado en el depurador, incluso si usted no puede ver el esqueleto ya!

Bueno ahora para añadir esto en el juego. Primero vamos a hacer las placas de los objetos HandManager y BodyManager.

IMAGEN 4

Una vez que les has creado arrastrar el encargado cuerpo de la jerarquía de la casa prefabricada Body Manager ha creado. Hacer lo mismo con el administrador de la mano. Ahora como prefabricados nos podemos mover fácilmente los objetos y la funcionalidad en nuestra escena principal del juego!

Artículos Relacionados

DIY realidad Virtual auricular - Google cartón

DIY realidad Virtual auricular - Google cartón

De la entrada-salida de Google aparece el cartón de Google , siempre quiero conseguir uno, debido a es una realidad virtual sensación de precio bajo dispositivo. Por desgracia, no pudiendo comprar un cartón de google me llevó loco. Así que he decidid
Realidad Virtual DIY Skate experiencia con Arduino y la cartulina de Google

Realidad Virtual DIY Skate experiencia con Arduino y la cartulina de Google

Este es un proyecto muy divertido y fácil que se puede hacer aproximadamente una hora. En la parte inferior de la patineta es un acelerómetro/giroscopio con una placa Arduino que transmite el movimiento angular de la Junta a través de bluetooth a un
Convertido en Tony Stark: Configuración de realidad Virtual móvil con movimiento de salto

Convertido en Tony Stark: Configuración de realidad Virtual móvil con movimiento de salto

¿Cuántos de ustedes han querido usar sus manos y mire a su alrededor naturalmente sin tener que utilizar el ratón, el teclado y la pantalla? Bueno, hoy voy a mostrar cómo utilizar un teléfono, leap motion, y gafas de Realidad Virtual para crear su pr
Realidad virtual para Dummies - TfCD (tecnología para el diseño de concepto)

Realidad virtual para Dummies - TfCD (tecnología para el diseño de concepto)

Las nuevas tecnologías hacen posible experimentar un mundo virtual en 3D. Esto se puede hacer con un Oculus Rift pero también con su propio smartphone, usando una cartulina de Google. Normalmente necesita mucho conocimientos y algunas habilidades de
Máquinas escultóricas para acceder a la realidad Virtual

Máquinas escultóricas para acceder a la realidad Virtual

En este Instructable que comparto una progresión de pasos que llevaron a la creación de un semi esculturas funcionales para la visualización de la realidad virtual, cuya forma está diseñada para asumir diferentes roles dependiendo de su tamaño ejecut
Entornos interactivos de prototipos en realidad virtual con Google cartón, unidad y línea de Bling (TfCD)

Entornos interactivos de prototipos en realidad virtual con Google cartón, unidad y línea de Bling (TfCD)

Estos días, experiencias (inmersión) son prioridad sobre la funcionalidad pura y especificaciones sobre el papel. Este cambio de enfoque ha influido en el proceso de diseño de diseñadores industriales, arquitectos, desarrolladores de aplicaciones y a
Casco de realidad virtual

Casco de realidad virtual

Usar un casco de realidad Virtual puede ser extremadamente peligroso, especialmente tan si usted está caminando (o corriendo) a través de mundos virtuales. Funcionamiento en paredes u otros objetos puede prevenirse si se lleva este casco de seguridad
Escritorio de PC a teléfono de la corriente para realidad Virtual (ahora con cabeza seguimiento!)

Escritorio de PC a teléfono de la corriente para realidad Virtual (ahora con cabeza seguimiento!)

Realidad virtual que he amado durante mucho tiempo. Aunque usted no necesita uno, I finalmente llegó a mis manos en una impresora 3D y pudo imprimir un casco VRPor desgracia, esto no viene con ninguna electrónica. He estado usando mi iPod Touch como
Cómo hacer un casco de seguimiento 3D de realidad Virtual por menos de 10$

Cómo hacer un casco de seguimiento 3D de realidad Virtual por menos de 10$

De los últimos 5 años, los dispositivos de realidad Virtual cada vez más populares como Oculus Rift, cartón de Google, Microsoft HoloLens, han dominado en la actualidad el sector de electrónica de consumo hasta el punto que agarra mucho con frecuenci
FISTO™ - el puño montado realidad Virtual teclado y Mouse

FISTO™ - el puño montado realidad Virtual teclado y Mouse

Utilizando un teclado y un ratón para navegar por en la realidad virtual es engorroso en el mejor. A tientas oculto y golpear el ratón o el teclado en bebidas MounatinDew o abrimos bolsas de Doritos son un problema constante. Yo prefiero usar un game
Dispositivo de teleconferencia de realidad virtual con Google cartón

Dispositivo de teleconferencia de realidad virtual con Google cartón

Realidad virtual dispositivo de teleconferencia con cartulina de GoogleCreado por John Choi | 2015Este proyecto es un dispositivo de teleconferencia por vídeo con dos cámaras Web para visión estereoscópica colocado encima de una plataforma motorizada
Ver cualquier contenido Web como realidad Virtual

Ver cualquier contenido Web como realidad Virtual

Hay ha sido recientemente un montón de entusiasmo alrededor de la realidad Virtual y eso es todo porque grandes empresas como Oculus Rift y dispositivos de entrada como el movimiento de salto, PrioVR, MotionPack tallo, han sido el diseño nuevo y expe
Inicial de ajustes de configuración para el casco de realidad Virtual (VR)

Inicial de ajustes de configuración para el casco de realidad Virtual (VR)

Recientemente he comprado uno de los muchos auriculares baratos de Google cartón "mejorados". En eBay estos dispositivos tienen un precio en la misma gama que el cartón de Google real pero ofrecen una calidad de construcción más robusta y mejor
Tamaño teléfonos inteligentes 3D Viewer y casco de realidad Virtual como Oculus Rift y cartulina de Google, para Ipod Touch y similares.

Tamaño teléfonos inteligentes 3D Viewer y casco de realidad Virtual como Oculus Rift y cartulina de Google, para Ipod Touch y similares.

Hagamos un Visor 3D y casco de realidad Virtual para juegos o para ver 3D lado a lado fotos y videos en 3D SBS con un IPOD TOUCH o SMARTPHONE (con pantalla tamaño hasta 4 o 4.5 pulgadas).Esto puede también usarse como una headmounted Mostrar con algu