2011-09-18 19 views
5

Durante los últimos meses he estado buscando desarrollar una interfaz multitáctil basada en Kinect para una variedad de sintetizadores de música por software.Consideraciones generales para NUI/interfaz táctil

La estrategia general que he encontrado es crear objetos, ya sea programáticamente o (si es posible) algorítmicamente para representar varios controles del sintetizador suave. Esto debería tener;

  • posición X posición
  • Y
  • Altura
  • Anchura
  • MIDI canal de salida
  • MIDI escalador de datos (convertir coords XY para valores MIDI)

2 estrategias I He considerado para la creación agorítmica son descripción XML y de alguna manera sacar cosas de th th e pantalla (es decir, dado un programa en ejecución, encuentre xycoords de todos los controles). No tengo idea de cómo hacerlo con el segundo, por eso lo expreso en un lenguaje técnico tan específico;). Podría hacer una solución intermedia, como usar clics del mouse en las esquinas de los controles para generar un archivo xml. Otra cosa que podría hacer, que he visto con frecuencia en las aplicaciones flash, es poner el tamaño de la pantalla en una variable y usar las matemáticas para construir todos los objetos de la interfaz en términos de tamaño de la pantalla. Tenga en cuenta que no es estrictamente necesario hacer que los objetos tengan el mismo tamaño que los controles en pantalla, o que representen todos los objetos en pantalla (algunos son solo indicadores, no controles interactivos)

Otras consideraciones;

Dado (por ahora) dos conjuntos de coordenadas X/Y como entrada (manos izquierda y derecha), ¿cuál es mi mejor opción para usarlos? Mi primer instinto es/era crear algún tipo de prueba de enfoque, donde si las coordenadas x/y caen dentro de los límites del objeto de la interfaz ese objeto se activa y luego se vuelve inactivo si quedan fuera de otros límites más pequeños durante un período de tiempo. La solución barata que encontré fue usar la mano izquierda como puntero/selector y la derecha como controlador, pero parece que puedo hacer más. Tengo algunas soluciones de gestos (cadenas de markov ocultas) con las que podría jugar. No es que sea fácil llegar al trabajo, exactamente, pero es algo que podría verme haciendo incentivos suficientes.

tanto, para resumir, el problema es

  • representan la interfaz (necesario porque la interfaz por defecto siempre espera la entrada del ratón)
  • seleccionar un control
  • manipularla usando dos conjuntos de x/y coords (controlador rotativo/continuo) o, en el caso de los interruptores, use preferiblemente un gesto para cambiarlo sin dar/tomar el foco.

Todos los comentarios, especialmente de personas que han trabajado/están trabajando en multitouch io/NUI, son muy apreciados. Los enlaces a proyectos existentes y/o algunos buenos materiales de lectura (libros, sitios, etc.) serían de gran ayuda.

+0

Meta-discusión sobre esta pregunta está sucediendo/ha sucedido: http://meta.stackexchange.com/q/106720/146495 –

Respuesta

2

Woah muchas cosas aquí. Trabajé en muchas cosas de NUI durante mi visita a Microsoft, así que veamos qué podemos hacer ...

Pero primero, necesito quitarle esta molestia a la mascota: dices "multitáctil basado en Kinect". Eso está mal. Kinect no tiene nada que ver con el tacto (por lo que tiene el desafío de "seleccionar un control").Los tipos de consideraciones de UI necesarios para el tacto, el seguimiento del cuerpo y el mouse son totalmente diferentes. Por ejemplo, en la IU táctil, debe tener mucho cuidado al cambiar el tamaño de las cosas según el tamaño/resolución/DPI de la pantalla ... independientemente de la pantalla, los dedos siempre tienen el mismo tamaño físico y las personas tienen el mismo grado de precisión física, por lo que desea sus botones y controles similares siempre tendrán aproximadamente el mismo tamaño físico. La investigación ha encontrado que 3/4 de pulgada es el punto ideal para los botones de la pantalla táctil. Esto no es tan preocupante para Kinect, ya que no tocas nada directamente: la precisión no depende del tamaño del dedo, sino de la precisión del sensor y la capacidad del usuario para controlar con precisión los curiosos cursores virtuales &.

Si pasas tiempo jugando con los juegos de Kinect, rápidamente queda claro que hay 4 paradigmas de interacción. 1) Comandos basados ​​en pose. El usuario golpea y mantiene una pose para invocar un comando o un comando de toda la aplicación (generalmente se abre un menú) 2) Botones de desplazamiento. El usuario mueve un cursor virtual sobre un botón y se mantiene quieto durante un cierto período de tiempo para seleccionar el botón 3) Navegación y selección basadas en deslizamiento. El usuario mueve sus manos en una dirección para desplazarse y en la lista, y en otra dirección para seleccionar de la lista 4) Comandos de voz. El usuario solo habla un comando.

Hay otras ideas parecidas a un mouse que los aficionados han probado (no las han visto en un juego real) pero francamente apestan: 1) usar una mano para el cursor y otra para "hacer clic" donde está el cursor 2) usando la coordenada z de la mano para determinar si "hacer clic" en

No está claro si está preguntando cómo hacer que algunos widgets de mouse existentes funcionen con Kinect. Si es así, hay algunos proyectos en la web que le mostrarán cómo controlar el mouse con la entrada de Kinect, pero eso es poco convincente. Puede sonar genial, pero en realidad no aprovecha en absoluto lo que hace mejor el dispositivo.

Si estaba construyendo un sintetizador de música, me centraría en el enfoque n. ° 3: deslizar. Algo así como Dance Central. En el lado izquierdo de la pantalla, muestra una lista de tus controladores MIDI con una pequeña indicación visual de su estado. Permita que el usuario deslice su mano izquierda para desplazarse y seleccione un controlador de esta lista. En el lado derecho de la pantalla, muestra cómo haces un seguimiento de la mano derecha de los usuarios dentro de un plano frente a su cuerpo. Ahora les permite usar ambas manos al mismo tiempo, dando una retroalimentación visual inmediata de cómo se interpreta cada mano y sin requerir que sean súper precisas.

ps ... También me gustaría dar un aplauso al libro de NUI de Josh Blake. Es bueno. Si realmente quiere dominar esta área, vaya a pedir una copia :) http://www.manning.com/blake/

+0

Robert - gracias un montón para su respuesta, es bueno ver a un chico ex-microsoft a bordo. Primero, re kinect vs multitouch. Comencé a jugar con varias soluciones de seguimiento de blob un tiempo atrás, y me rendí porque cuando las condiciones de iluminación cambiaban por el margen más pequeño imaginable, la respuesta del sistema se ralentizaba. Entré en kinect porque maneja el blob tracking internamente y genera uno o más coords de cursor x/y. He encontrado que el problema de resolución que mencionas (si estamos hablando de lo mismo) sigue siendo válido para kinect porque las resoluciones de pantalla y los tamaños de interfaz son diferentes. – jamesson

+0

Ratón Re, el middleware que estoy usando (primesense nite) esencialmente genera 2 cursores en modo manual y un clic basado en gestos ("empujando" su mano hacia la pantalla). Puedo usar todas las articulaciones (produce 10 o así, rodillas, caderas, etc.) si así lo deseo, aunque todavía no lo he sentido. Con su deslizamiento, eso es lo mejor que podría hacer por mi cuenta. Espero que otras personas tengan mejores ideas. – jamesson

+0

Aquí hay un ejemplo de lo que considero "mejor": http://anythinghonest.com/amos/. Utiliza todas las características disponibles de la nueva tecnología (ipad en este caso) de una manera intuitiva a la vez que proporciona un control profundo. Puedo robar partes de eso.De nuevo, gracias por tu ayuda. Joe – jamesson

Cuestiones relacionadas