Общие замечания по NUI / сенсорному интерфейсу - PullRequest
5 голосов
/ 18 сентября 2011

В течение последних нескольких месяцев я занимался разработкой мультитач-интерфейса на основе Kinect для различных программных музыкальных синтезаторов.

Общая стратегия, которую я придумал, заключается в создании объектов, либо программноили (если возможно) алгоритмически представлять различные элементы управления мягкого синтеза.Они должны иметь:

  • Положение X
  • Положение Y
  • Высота
  • Ширина
  • Выходной MIDI-канал
  • Средство масштабирования MIDI-данных (преобразование координат xy в значения midi)

2 стратегии, которые я рассмотрел для создания агорифмических элементов, - это описание XML и как-то вытаскивание материала с экрана (т. Е. С помощью запущенной программы,xycoords всех элементов управления).Я понятия не имею, что делать с этим вторым, поэтому я выражаю это на таком специфическом техническом языке;).Я мог бы сделать какое-то промежуточное решение, например, использовать щелчки мышью по углам элементов управления для создания файла XML.Еще одна вещь, которую я мог бы сделать, которую я часто видел в приложениях flash, - это поместить размер экрана в переменную и использовать математические методы для построения всех объектов интерфейса в зависимости от размера экрана.Обратите внимание, что нет необходимости делать объекты того же размера, что и экранные элементы управления, или представлять все экранные объекты (некоторые из них являются просто индикаторами, а не интерактивными элементами управления)

Другие соображения;

Учитывая (на данный момент) два набора координат X / Y в качестве входных данных (левая и правая руки), какой мой лучший вариант для их использования?Моим первым инстинктом было / было создать какой-то тест фокусировки, в котором, если координаты x / y попадают в границы объекта интерфейса, этот объект становится активным, а затем становится неактивным, если они выходят за пределы некоторых других меньших границ в течение некоторого периода времени.Дешевое решение, которое я нашел, состояло в том, чтобы использовать левую руку в качестве указателя / селектора и правую в качестве контроллера, но, похоже, я могу сделать больше.У меня есть несколько решений жестов (скрытых цепей Маркова), с которыми я мог бы обойтись.Не то чтобы им было легко добираться до работы, но это то, что я мог видеть, что делал себя, имея достаточный стимул.

Итак, подведем итог, проблема в том, что

  • представляютинтерфейс (необходим, потому что интерфейс по умолчанию всегда ожидает ввода от мыши)
  • выберите элемент управления
  • манипулируйте им, используя два набора координат x / y (поворотный / непрерывный контроллер) или, в случаепереключатели, желательно использовать жест, чтобы переключать его, не отдавая / не принимая фокус.

Любые комментарии, особенно от людей, которые работали / работают в мультитач IO / NUI, очень ценятся.Ссылки на существующие проекты и / или некоторые хорошие материалы для чтения (книги, сайты и т. Д.) Могут помочь.

1 Ответ

2 голосов
/ 14 октября 2011

Вау, здесь много всего.Я работал над множеством NUI во время моего пребывания в Microsoft, так что давайте посмотрим, что мы можем сделать ...

Но сначала мне нужно убрать эту любимую мозоль с дороги: вы говорите: "Мультитач на основе Kinect".Это просто неправильно.Kinect по своей сути не имеет ничего общего с касанием (вот почему у вас есть задача «выбрать контроль»).Типы рассмотрения пользовательского интерфейса, необходимые для касания, отслеживания тела и мыши, совершенно разные.Например, в сенсорном интерфейсе вы должны быть очень осторожны при изменении размеров в зависимости от размера экрана / разрешения / DPI ... независимо от экрана, пальцы всегда имеют одинаковый физический размер, а люди имеют одинаковую степень физической точности, поэтому вы хотитеВаши кнопки и аналогичные элементы управления всегда будут иметь примерно одинаковый физический размер.Исследование показало, что 3/4 дюйма - лучшее место для сенсорных кнопок.Это не так важно для Kinect, так как вы ничего не трогаете напрямую - точность определяется не размером пальцев, а точностью сенсора и способностью пользователей точно управлять привередливыми и отстающими виртуальными курсорами.

Если вы проводите время за играми в игры Kinect, быстро становится ясно, что существует 4 парадигмы взаимодействия.1) Позы основанные команды.Пользователь нажимает и удерживает позу для вызова какой-либо прикладной программы или команды (обычно выводит меню) 2) Кнопки наведения.Пользователь перемещает виртуальный курсор над кнопкой и удерживает ее в течение определенного периода времени, чтобы выбрать кнопку. 3) Навигация и выбор на основе прокрутки.Пользователь машет руками в одном направлении для прокрутки и списка и в другом направлении для выбора из списка 4) Голосовые команды.Пользователь просто произносит команду.

Существуют и другие подобные мышью идеи, которые были опробованы любителями (не видевшими их в реальной игре), но, откровенно говоря, они сосут: 1) используя одну руку для курсора, а другую руку для«щелкнуть» там, где находится курсор, или 2) используя z-координату руки, чтобы определить, нужно ли «щелкнуть»

Мне не ясно, спрашиваете ли вы о том, как заставить некоторые существующие виджеты мыши работать с Kinect,Если да, то в Интернете есть несколько проектов, которые покажут вам, как управлять мышью с помощью ввода Kinect, но это неэффективно.Это может звучать очень круто, но вы на самом деле не пользуетесь преимуществами того, что устройство делает лучше всего.

Если бы я создавал музыкальный синтезатор, я бы сосредоточился на подходе № 3 - смахивании.Что-то вроде Dance Central.В левой части экрана отобразится список ваших MIDI-контроллеров с небольшой визуальной индикацией их состояния.Позвольте пользователю провести левой рукой, чтобы прокрутить и выбрать контроллер из этого списка.В правой части экрана покажите, как вы отслеживаете правую руку пользователя в некоторой плоскости перед его телом.Теперь вы позволяете им использовать обе руки одновременно, давая немедленную визуальную обратную связь о том, как интерпретируется каждая рука, и не требуя, чтобы они были сверхточными.

пс ... Я также хотел бычтобы кричать о новой книге NUI Джоша Блейка.Это хороший материал.Если вы действительно хотите освоить эту область, закажите копию :) http://www.manning.com/blake/

...