продолжаю серию с тех.постами
сегодня немножко про Wiimote:
текст начал писать оооочень давно для одного проекта
kryzander'a, но ввиду моей сверхвысокой скорости, проект успел закрыться раньше :)
Технологически очень сложные интерактивные решения всегда требуют много работы и являются оправданными в подобных случаях. Но часто для случаев, когда сам компонент управления не столь выделен, как отдельный значимый элемент ткани, то более простые, готовые решения являются и более удобными.По затратам времени на соединение Wiimote с остальной частью сетапа он гораздо проще любых самодельных устройств, несмотря на меньшую гибкость по сравнению с ними. Но, естественно, уступает в удобстве готовым решениям в виде синтезаторов и тому подобных.
Напрямую в MaxMSP Wiimote присоединяется при помощи модуля aka.wiimote
http://www.iamas.ac.jp/~aka/max/ . Вообще стоит заметить, что модули этого автора - Masayuki Akamatsu -достаточно популярны и порой незаменимы во многих задачах. Также данный модуль используется в иркамовской библиотеке FTM для подключения Wiimote
http://ftm.ircam.fr/index.php/WiimoteМодуль работает прекрасно без ошибок и нареканий, но иногда проблемы возникают при синхронизации при неправильной последовательности команд подключения устройств и нажатий кнопок синхронизации на самом устройстве, но так как тестировал это только на одном компьютере (Max 5.0.5, OS X 10.5.5) - не берусь утверждать об ошибке с точностью.
Таким образом я воспользовался другим готовым решением - OSCulator. Программа платная (минимум $20) , но своих небольших денег стоит - все работает достаточно стабильно. Еще одна плюшка: большинство коммерческих продуктов-контроллеров обладают недостаточной индикацией, которой можно было бы управлять с компьютера - из массовых продуктов стоит особо отметить лишь серию продуктов Novation c Automap и различные midi-педали. Есть monome, но штука все-таки не везде доступная.
OSCulator позволяет также делать часть той работы, которую обычно делают в максе - маршрутизацию различных данных. Тем не менее, это субъективный вопрос удобства, я данной возможностью не воспользовался. При отсутствии макса и использовании Wiimote с другим софтом этот функционал бывает незаменим.
Помимо передачи данных в Макс и любую программу, которая поддерживает OSC, программа передает данные на комплекс Kyma и еще в виде простых MIDI данных:
Click to view
Click to view
Теперь о возможностях самого устройства. За примерно 50 условных единиц в этом устройстве есть 3 акселерометра, 8-позиционная кнопка с 4мя стрелками (фактически это 4 управлющие кнопки), 4 назначаемые кнопки и 3 служебные кнопки. Помимо этого есть инфракрасная камера, с помощью которой а также специального sensor bar с инфракрасными диодами можно определять точное положение контроллера в пространстве и использовать его как некий аналог мышки. Плюс вибрация для обратной связи. Связывается устройство с компьютером посредством Bluetooth. Очевидно ценовое преимущество данного прибора относительно наборов "сделай сам", где один акселерометр может стоить $20. Цена сопоставима со стоимостью компонентов без учета сборки и разработки, что дополнительно радует.
Вариант сетапа, который я собрал на данный момент - управление 2мя параметрами при помощи вращения контроллера по горизонтали и вертикали (то есть Pitch и Roll, если быть точным). Параметры выбираются при помощи всех кнопок кроме трех вспомогательных (+, -, Home). Таким образом всего можно управлять 16 параметрами, хотя одновременно можно управлять парой при одной нажатой кнопке. Эргономика устройства позволяет нажимать 2-3 кнопки одновременно - таким образом, некоторые комбинации параметров достаточно удобно использовать.
Очевидный вопрос - а почему не использовать 3 оси при 3х акселерометрах? Есть один ньюанс - акселерометр измеряет ускорение в случае прямого перемещения вдоль рабочей оси. в случаи вращения он реагирует лишь на свое положение в пространстве в зависимости от гравитации. Плюс математически процесс вращения имеет свои тонкости, желающие могут подробно ознакомиться с этим в учебнике геометрии за старшие классы, я не претендую на точный пересказ.
На данный момент производитель программы OSCulator дорабатывает функционал, использующий гироскопы в дополнении Wii Motion Plus, таким образом, скоро эта самая третья ось будет доступна.
Возможность реагирования на ускорение я не использую по ряду причин. Совместное использование его вместе с вращением невозможно (опять же, без гироскопов) - только если распознавать отдельные жесты как отдельные элементы (для этого стоит использовать библиотеку FTM от IRCAM, там есть готовые наработки). Плюс, у датчика есть "инерция" и ускорение в одну сторону всегда отображается как два пика и необходима дополнительная фильтрация, которая несколько ухудшает весь процесс. Наиболее интересное применение распознавания ускорения можно видеть в примере Kyma со звуками барабанов, но возможности такого подхода достаточно ограничены...