Entrada de texto para juegos con solo una cámara Intel RealSense

Las cámaras Intel RealSense 3D llevan el seguimiento de las manos y los dedos a las PC domésticas y un SDK fácil de usar para los desarrolladores, lo que las convierte en un excelente nuevo método de entrada para juegos de realidad virtual y juegos basados ​​en pantalla.. 

Idealmente, nos gustaría poder crear juegos que no requieran que el jugador toque ningún tipo de periférico en ningún momento. Pero, al igual que con Kinect y EyeToy, nos encontramos con problemas cuando nos enfrentamos a una tarea común: ingresar texto. Incluso ingresar el nombre de un personaje sin usar un teclado puede ser tedioso.

En esta publicación, compartiré lo que he aprendido sobre la mejor (¡y la peor!) Formas de permitir que los jugadores ingresen texto solo con un gesto, y te mostraré cómo configurar el Intel RealSense SDK en Unity, para que puedas probarlo en tus propios juegos.

(Tenga en cuenta que me estoy enfocando en la entrada ASCII aquí, y específicamente en el alfabeto inglés. Los alfabetos y modos de entrada alternativos, como la estenografía, la taquigrafía y el kanji, pueden servirse mejor de otras maneras).

Métodos de entrada que podemos mejorar en

Hay otros enfoques para el ingreso de texto sin periféricos, pero tienen fallas. Nos gustaría proponer un enfoque que mejore en cada uno de ellos..

Teclado virtual

Los teclados son el estándar de oro para la entrada de texto, así que, ¿qué hay de imitar la escritura en un teclado en el aire o en una superficie plana??

Lamentablemente, la falta de retroalimentación táctil es más importante de lo que parece a primera vista. La escritura táctil es imposible en esta situación, porque la cinestesia es demasiado inexacta para actuar solo con el movimiento inercial. El toque físico y sensible de un teclado le da al mecanógrafo una percepción de la posición de los dedos y actúa como un mecanismo continuo de corrección de errores. Sin eso, los dedos tienden a desviarse del objetivo, y los ligeros errores de posición aumentan rápidamente, lo que requiere un "restablecimiento" de las teclas de inicio. 

Alfabeto gestual

Nuestro primer experimento con RealSense para el ingreso de texto fue un esfuerzo para reconocer la ortografía digital del lenguaje de señas estadounidense. Descubrimos que hay varias dificultades que hacen de esta una opción poco práctica..

Un problema es la velocidad. Los hábiles deletreadores de dedos pueden destellar aproximadamente dos letras por segundo o 120 letras por minuto. Con un promedio de cinco letras por palabra, eso es 24 WPM, que es considerablemente inferior incluso a la velocidad promedio del mecanógrafo de 40 WPM; un buen corrector de dedos es aproximadamente la mitad de rápido que un tecleador regular..

Otro problema es la necesidad de que el usuario aprenda un nuevo conjunto de caracteres. Uno de los valores menos obvios de un teclado estándar es que se adapta a todas las demás herramientas que usamos para escribir. El impreso T aprendemos en el jardín de infancia es lo mismo T visto en el teclado. Pedirle a los usuarios que aprendan un nuevo conjunto de caracteres solo para ingresar texto en un juego es un no-go.

Joystick y entrada espacial

Las consolas de juegos ya requieren entrada de texto para los números de tarjetas de crédito, contraseñas, nombres de personajes y otros valores personalizables. El método de entrada típico es mostrar un teclado virtual en la pantalla y permitir que una entrada espacialmente sensible "toque" una tecla dada.

Hay muchas iteraciones de este concepto. Muchos usan un joystick para mover un cursor. Otros pueden usar una tecnología de seguimiento manual como Intel RealSense o Kinect para hacer esencialmente lo mismo (con una ola de la mano actuando como un toque de la tecla). Stephen Hawking utiliza una entrada conceptualmente similar que rastrea los movimientos de los ojos para mover un cursor. Pero todos estos sistemas crean un escenario del peor de los dos mundos en el que se utiliza una entrada espacial de un solo punto, esencialmente un puntero del mouse, para trabajar en un dispositivo multitáctil; Es como usar un borrador de lápiz para escribir una letra a la vez..

Personas como Doug Naimo en Triggerfinger han hecho un trabajo interesante para hacer que la entrada de texto en el joystick sea más rápida y flexible, pero la velocidad de entrada aún no llega a la tipificación regular por un amplio margen, y en realidad solo es valiosa cuando existen métodos de entrada mejores o más rápidos. indisponible.

Mi método de entrada elegido

Toda esta charla sobre las debilidades de los métodos alternativos de ingreso de texto implica que el humilde teclado tiene varias fortalezas que no se reemplazan ni mejoran fácilmente. ¿Cómo se pueden conservar estas fortalezas demostradas en un sistema de entrada de texto que no requiere periféricos prácticos? Creo que la respuesta está en dos observaciones críticas:

  • La capacidad de usar hasta 10 dedos es imposible de cumplir o vencer con cualquier sistema de un solo punto.
  • El diseño compacto, en capas y personalizable del teclado es notablemente eficiente, pero es un diseño 2D y se puede expandir incorporando una tercera dimensión.

Con todo esto en mente, se me ocurrió un sistema gestual simple con dos manos que llamo "facekeys". Así es como funciona.

Iniciando lo simple: una calculadora

Antes de llegar a un teclado completo, comencemos con un teclado numérico, una calculadora simple. Necesitamos diez dígitos (0 a 9) y cinco operadores (más, menos, dividir, multiplicar e iguales). Con el objetivo de usar los diez dedos, podemos dividirlos en dos grupos de cinco dígitos y representarlos en la pantalla como dos pirámides de pies cuadrados, con los operadores como otra pirámide:

Cada dedo corresponde a una cara de cada pirámide. Cada cara puede considerarse como una "clave" en un teclado, así que las llamo facekeys. La mano izquierda introduce dígitos. 1 a 5 flexionando los dedos individualmente, mientras que la derecha ingresa dígitos 6 a 0. Flexionando el mismo dedo en ambas manos simultáneamente, ambos dedos anulares, digamos, activa una limpieza facial en la pirámide del operador. 

Las funciones sin dígitos (pero esenciales) incluyen un puño izquierdo para escribir el valor mostrado en la memoria, un puño derecho para leer (y borrar) la memoria, y dos puños cerrados para despejar las cubiertas y comenzar un nuevo cálculo.

Cuando probé esto por primera vez, asumí que los usuarios que sujetaban sus manos con la palma hacia abajo (como si escribieran en un teclado) serían más cómodos. Sin embargo, resulta que una posición con las palmas hacia adentro es más cómoda y permite un uso más prolongado y más velocidad:

También resulta que la retroalimentación visual de la pantalla es muy importante, especialmente cuando se aprende. Podemos proporcionar esto a través de una lectura de dígitos de estilo calculadora familiar, pero también es bueno hacer que las pirámides giren y animen con cada golpe, para establecer y reforzar la conexión entre un dedo y su correspondiente facekey.

Este sistema es cómodo y fácil de aprender, y también es fácilmente extensible. Por ejemplo, la falta de un punto decimal y una tecla de retroceso se frustran rápidamente, pero estas entradas se acomodan fácilmente con pequeñas modificaciones. Primero, una ola diestra puede actuar como un retroceso. En segundo lugar, el facekey igual se puede reemplazar con un punto decimal para la entrada, y un gesto de "aplauso" se convirtió en el operador igual, que tiene el delicioso resultado de hacer cálculos rítmicos y modestamente divertidos..

Extendiendo esto a un teclado completo

Una calculadora sin periféricos es una cosa, pero otra típica sustitución de teclado es otra. Hay, sin embargo, algunas formas muy simples y prácticas para continuar el desarrollo en torno a este concepto clave..

El teclado estándar está organizado en cuatro filas de teclas más una barra espaciadora: números y puntuación en la parte superior con tres filas de letras debajo. Cada fila está definida por su posición en el espacio, y podemos usar ese concepto aquí. 

En lugar de mover las manos hacia o desde un punto fijo como la cámara, un método más flexible es hacer que el sistema autorreferencial. Podemos dejar que el jugador defina una distancia cómoda entre sus palmas; El juego establecerá esta distancia internamente como 1-Delta. El equivalente de llegar a diferentes filas en el teclado es simplemente mover las manos más cerca o más alejadas entre sí: a 2-Delta accesos de distancia teclas "segunda fila", y 3-Delta alcanza las llaves de la tercera fila.

Toma tus manos 1-Delta aparte, y pueden escribir UNA a J; Mantenlo 2-Delta aparte, y pueden escribir KT.

Las "teclas de inicio" están configuradas para esto 1-Delta La distancia y el tecleo proceden mediante la asignación de letras y otros caracteres a una serie de pirámides que cubren secuencialmente todo el alfabeto. La experimentación sugiere que existen 3-4 Deltas cómodos y fácilmente reproducibles entre las manos que se tocan y el ancho de los hombros. Los usuarios expertos pueden encontrar muchos más, pero la inexactitud inherente de la cinestesia normal probablemente sea un límite para este factor..

Los gestos simples proporcionan otro eje de expansión. El teclado Cambio clave, por ejemplo, transforma cada clave en dos, y la Ctrl y Alt Las llaves lo extienden aún más. Los gestos simples con una sola mano crearían exactamente el mismo acceso a las capas clave, a la vez que mantendrían la velocidad y la flexibilidad. Por ejemplo, un puño podría ser el Cambio llave. Una mano de "pistola" puede acceder a comandos de edición o cualquier número de combinaciones. Al usar gestos con una sola mano para modificar las interfaces clave, el usuario puede acceder a diferentes caracteres.

¿Listo para probarlo usted mismo? Primero, deberá instalar el Intel RealSense SDK y configurar el complemento para Unity.

Curso intensivo en Unity y RealSense

A continuación, le ofrecemos una guía rápida que explica cómo instalar y configurar RealSense SDK y Unity. Haremos una demostración de prueba simple que cambia el tamaño de un objeto en función del movimiento de la mano del usuario.

1. Lo que necesitarás

Necesitará:

  • Una cámara Intel RealSense 3D (ya sea integrada en un dispositivo o una cámara externa)
  • Unity Professional 4.0 o superior
  • El SDK de Intel RealSense gratuito

También es posible que desee utilizar este complemento gratuito que le permite escribir el código de Unity en Visual Studio; tu decides.

Voy a usar la nave espacial del proyecto gratuito Space Shooter de Unity, pero puedes usar un cubo simple o cualquier otro objeto si lo prefieres..

2. Importando el kit de herramientas de unidad de RealSense

El paquete que contiene el kit de herramientas Unity para la tecnología Intel RealSense contiene todo lo que necesita para manipular objetos del juego. El paquete Unity se encuentra en el \ RSSDK \ Framework \ Unity \ carpeta. Si instaló RealSense SDK en la ubicación predeterminada, el RSSDK la carpeta estará en C: \ Archivos de programa (x86) \ (en Windows).

Puede importar el Kit de herramientas de Unity como lo haría con cualquier paquete. Al hacerlo, tienes las opciones para elegir y elegir lo que quieres. Para el propósito de este tutorial, usaremos los valores predeterminados e importaremos todo.

Como puede ver en la siguiente imagen, ahora hay varias carpetas nuevas en la carpeta Activos.

  • Complementos y Plugins.Managed Contiene los DLL necesarios para usar el SDK de Intel RealSense.
  • RSUnityToolkit es la carpeta que contiene todos los scripts y recursos para ejecutar el kit de herramientas.

No vamos a entrar en lo que todas las carpetas están aquí; Te lo dejo para que investigues!

3. Preparando la escena

Añade el barco a la escena..

A continuación, agregue una luz direccional para darle algo de luz a la nave para que pueda verla mejor.

Debe tener un aspecto como este:

4. Añadiendo la acción de la escala

Para agregar capacidades de escala al objeto del juego, tenemos que agregar el ScaleAction guión. los ScaleActionScript está bajo el RSUnityToolkit carpeta y en el Comportamiento subcarpeta. 

Simplemente tome el script y arrástrelo y suéltelo directamente en el barco en el Escena ver. Ahora podrás ver el ScaleAction parámetros de script en el Inspector

Aquí, he colapsado todos los parámetros para mostrar las tres áreas básicas del script de escala: Evento de inicio, la Gatillo de escala, y el Evento de parada.

5. Configuración de los parámetros

Comenzando con el Evento de inicio, expanda la flecha para mostrar el disparador predeterminado. En este caso, no queremos utilizar Gesto detectado, queremos usar Mano detectada

Clic derecho en Gesto detectado y seleccione retirar. Entonces, en el Evento de inicioes Añadir botón, haga clic y seleccione Mano detectada. Debajo Cual mano, seleccione y elija ACCESS_ORDER_RIGHT_HANDS.

Ahora vamos a configurar el Evento de parada. Ampliar la Evento de parada y quitar el Gesto perdido fila. A continuación, haga clic en Evento de paradaes Añadir botón y elegir Mano perdida. Cerca de Cual mano, seleccionar ACCESS_ORDER_RIGHT_HANDS.

No tendremos que cambiar el Gatillo de escala Porque de todos modos solo hay una opción para esto. Solo usaremos el predeterminado.

6. Probando

¡Eso es! Guarda tu escena, guarda tu proyecto y ejecútalo. Podrás redimensionar la nave en pantalla con un gesto..

Ahora es tu turno!

Hemos discutido las ideas detrás de ingresar texto sin tocar un periférico, y hemos visto cómo comenzar con RealSense SDK en Unity. A continuación, depende de ti. Toma lo que has aprendido y experimenta! 

Primero, haz que tu demo interprete diferentes personajes según los dedos que muevas. Luego, refleje esto en la pantalla de una manera apropiada (¡no tiene que usar el método de mi pirámide!). Luego, vaya más lejos: ¿qué hay de probar una posición de mano diferente, como con las palmas hacia la cámara, o un movimiento de entrada diferente, como torcer un cubo de Rubik??

El programa Intel® Software Innovator es compatible con desarrolladores innovadores independientes que muestran la capacidad de crear y demostrar proyectos de futuro. Los innovadores aprovechan las oportunidades de ponencia y demostración en eventos de la industria y reuniones de desarrolladores.

Zona de desarrolladores Intel® ofrece herramientas e información práctica para el desarrollo de aplicaciones multiplataforma, información de plataforma y tecnología, ejemplos de código y experiencia de pares para ayudar a los desarrolladores a innovar y tener éxito. Únete a nuestras comunidades para la Internet de las CosasAndroideTecnología Intel® RealSense ™, Código modernoDesarrollo de juegos y Windows para descargar herramientas, acceder a kits de desarrollo, compartir ideas con desarrolladores afines y participar en hackathons, concursos, roadshows y eventos locales.