Беспроводной VR и захват движения на оборудовании HTC Vive
Предисловие
Раньше я уже писал о своем проекте impulse — костюме захвата движений на базе инерциальных сенсоров. Прежде всего, хочу поблагодарить всех, кто оставил свой отзыв, так или иначе, помог проекту. Должен сказать, что особого развития проект не получил, проблема дрейфов не была решена 9-осевыми датчиками, но компенсации с помощью цифрового компаса значительно помогли, также использование простого оптического трекинга (например 2 светодиодных маркера на голове) позволяет получить среднее значения дрейфа. Но сегодня не об этом. Я хочу рассказать об относительно недорогом способе захвата движения для систем виртуальной реальности на базе HTC Vive без колхоза и паяльника, а также о том, как избавиться от провода, который неизбежно соединяет голову и компьютер, что создает множество неудобств. Еще расскажу, как удалось добиться области трекинга в ~80 метров кв.
Начнем
Система будет работать на оборудовании HTC Vive, это штатный шлем, 2 контроллера и 2 базовые станции, рекомендую приобретать HTC Vive 2, он хорошо себя показал, вероятно из-за обновленных базовых станций. Сейчас, цена снижена до 50 тысяч рублей.
В дополнение к стандартному набору порекомендую аддон VIVE Deluxe Audio, это не просто наушники (что уже удобно), это крайне удобное решение для более комфортного использования шлема, особенно это дополнение актуально при использовании шлема несколькими игроками или посетителями аттракциона. Также это крепление позволит надежно смонтировать систему беспроводного соединения, да и выглядит это круто:
VIVE Deluxe Audio. Цена вопроса 10 тысяч рублей.
Долой провода
Прежде всего, необходимо сорваться с этого «поводка» и почувствовать реальную свободу в VR пространстве без тяжелых и нагретых ноутбуков за спиной. Для этого понадобится аддон TPCast — устройство, которое позволит перевести Vive в беспроводной режим.
TPCast. Комплектация.
Вся система состоит из нескольких модулей, подробнее о каждом:
Отлично крепится на VIVE Deluxe Audio. Подключается к шлему короткими проводами USB и HDMI, другие 2 провода (USB и питание) подключаются к переходнику к аккумулятором.
Далее, нужно убрать в сторону штатный линкбокс Vive, и подключить следующий модуль (передатчик) напрямую в компьютер по HDMI:
Можно воспользоваться штатным проводом, или же 10-ти метровым HDMI. Питание от штатного линкбокса необходимо подключить в передатчик TPCast. Должен заметить, что можно использовать комбинацию и с линкбоксом, просто подключив передатчик вместо шлема (не подключая один из трех проводов — USB). Передатчик следует разместить в такой точке в помещении, в которой шлем будет виден всегда, т.к. передатчик работает на высоких частотах, то любая преграда будет помехой для передачи сигнала, та же самая голова, если человек отвернулся. Другими словами, обеспечить прямую видимость. Оптимальным вариантом служит размещение передатчика ровно по центру помещения на потолке, направив его перпендикулярно в пол.
Это еще не все, в комплекте также имеется роутер, который следует подключить в разрез интернет соединения ПК. Проще говоря, ethernet кабель в WAN порт роутера, и ПК подключить к роутеру через LAN. Если такое подключение неприемлемо, следует использовать дополнительную сетевую карту. Теперь почти все готово, осталось только загрузить софт и драйвера с официального сайта TPCast:
После установки приложение попросит ввести данные для подключения к точке доступа, логин и пароль указаны на наклейке на переходнике для аккумулятора. Далее остается только нажать Start и запустить SteamVR после успешного соединения. Если что-то пошло не так, то в верхнем правом меню есть пункт Switch channel. В целом потерю соединения несложно восстановить одним нажатием кнопки, так же можно «на лету» менять аккумулятор.
TPCast В сборе. Цена вопроса 35–40 тысяч рублей, но вот характеристики:
- Разрешение 2К (обычное для HTC Vive)
- 90 FPS
- Задержка меньше 2 мс
Разумеется, для домашнего использования это нецелесообразно, можно и провод потерпеть, но для коммерческого решения — отличный вариант, особенно, если расширить область трекинга.
Теперь можно попробовать походить по Steam Home и не вспоминать про провод, изломы, узлы и другое, разве что аккумулятор заряжать, а лучше приобрести дополнительные. Их хватает на 4–5 часов активного использования.
Выходим за границы дозволенного
Без провода вы быстро почувствуете себя в тесноте, захочется немного прогуляться, но в стандартных 16-ти квадратных метрах это не удастся. Первое что понадобиться — это помещение (100 квадратных метров подойдут), и с потолками повыше (3.5 метра). Это самое сложное. В центре потолка помещения размещается передатчик TPCast. В стороны от него под потолком крепятся базовые станции HTC Vive. расстояние между — 5 метров, так чтобы станции разместились на одной линии (перпендикулярной к двум стенам и параллельной двум другим), проходящей через центр помещения (в центре передатчик). Далее станции нужно наклонить под углом 30 градусов друг к другу (т.е. в большей степени они направлены на пол). Станции необходимо соединить проводом для синхронизации (оптическая не будет стабильно работать), каналы станций выставить на A и b. После монтажа произвести калибровку комнаты стандартными средствами. Стоить заметить, что на этапе построения шаперона (голубая сетка, обозначающая границы реального помещения) стоит выбрать режим advanced, что позволит указать лишь углы помещения, сетка будет ровным квадратом. Игровую область лучше разместить в центре. Данная конфигурация обеспечит большую область достаточно точного трекинга с минимальным количеством слепых зон и позволит эффективно использовать штатные станции. Перед погружением рекомендую установить OpenVR Advanced settings, их интерфейс будет доступен прямо в VR пространстве в стандартном меню. Эти настройки позволят улучшить разрешение, суперсемплинг и конфигурировать шаперон (область активации, цвет, высота, видимость и т.д.) Разумеется, можно еще поиграться с размещением базовых станций, изменить угол наклона или немного расстояние между ними под определенное помещение. Полученный результат впечатляет, по стандартному Steam Home возможно перемещаться, не вспоминая про телепортацию. В большинстве игр такой области более чем достаточно. В ноябре Vive грозятся добавить поддержку работы с большим количеством базовых станций, но пока не ясно, сможет ли текущее оборудование воспринимать больше двух, или на это будут способны только новые шлемы и контроллеры.
Хватит быть призраком
В целом, все VR игры можно определить как единый поджанр — «симулятор призрака», вы можете поднимать предметы, бросаться ими и так далее. Есть исключения, где вы можете видеть свое неподвижное тело, что сильно диссонирует. Так или иначе, чтобы нарисовать виртуальному протагонисту достоверно двигающееся тело, нужно что-то из области захвата движения. Захват движения — не самое дешевое удовольствие, если отбросить близорукий киннект и подобное, что малоэффективно в такой области трекинга. На выручку приходят две вещи — HTC Vive Tracker и инверсная кинематика (ИК). Первое понадобится для того, чтобы определять положение чего угодно в области трекинга, второе для воссоздания положения тела в виртуальном пространстве, зная положение только 6 точек (это минимум для full body).
Vive Tracker. Трекер стоит примерно 8 тысяч рублей
Для минимального набора понадобится 3 таких трекера. В целом, это те же самые стандартные контроллеры, только урезанные и немного в другом корпусе. Каждый такой трекер определяется в SteamVR, единственное отличие лишь в том, что для их подключение нужны специальные донглы (в комплекте), хотя можно привязать их к шлему вместо контроллеров. На задней части находятся контактная площадка для подключения пользовательских кнопок (можно использовать и USB разъем на трекере). Это может быть курок пистолета, кнопка активации светового меча, все что угодно. Нажатия таких кнопок обрабатываются таким же образом, как и нажатия кнопок на контроллере, с точки зрения разработки софта разницы нет. В целом, их можно использовать для трекинга игровых объектов, таких как оружие или инструменты, даже мебель и двери, но нас интересует захват движения.
Определять позицию головы возможно с помощью шлема, рук — с помощью контроллеров. 2 трекера следует разместить на обуви (сверху стоп), оставшийся будет неплохо себя чувствовать на поясе сзади. Такой сетап уже позволит поиграть в некоторые игры, поддерживающие такую конфигурацию, но если говорить о разработке своего софта, то для анимации персонажа понадобятся ИК решения. Принципиальное отличие инверсной кинематики от прямой в том, что в случае прямой рассчитывают позицию, зная углы, а в случае инверсной рассчитывают углы, зная позиции. Таким образом, очень простую модель можно сделать самому, зная позицию двух джоинтов рассчитать промежуточную, учитывая то, как обычно гнется человеческое тело. Но существуют готовые решения, такие как Final IK, VRIK и другие средства процедурной анимации. Есть студии, которые предоставляют решения подобного типа. Одна из таких, это IKinema и её продукт под названием Project Orion — софт, позволяющий производить захват движения на основе данных, полученных из SteamVR и транслировать их по протоколу VRPN в любое другое приложение (для Unity и Unreal есть готовые плагины и ассеты). Для бюджетного решения лучше воспользоваться предыдущими средствами, которые достаточно неплохо себя показывают.
Далее, уже в движке, полученную анимацию можно немного почистить, хотя Orion справляется с этим, убрать скольжения стоп, рассчитать компенсацию для неровности виртуального пола. У IKinema есть решение в виде плагина для Unreal:
По большому счету, с подобными задачами справляются плагины и попроще, даже бесплатные.
Для захвата движений пальцев сойдут вот такие перчатки, к примеру
Manus VR
Заключение
На сегодняшний день захват движения становится все более доступным, как и виртуальная реальность, что, безусловно, радует. Грядет целый ряд игр, в которых будет присутствовать поддержка трекеров и анимации главного героя в соответствии с движениями игрока. Конечно, все это еще не так удобно и доступно, как хотелось бы, но уже сейчас возможно собрать такую систему за относительно небольшую стоимость. Говорить о том, чтобы массовый игрок мог позволить себе оборудовать свое игровое пространство таким образом — не приходится, но в виде аттракциона, это будет качественно новый уровень.
Несколько наблюдений:
Чтобы отказаться от провода, проводов в целом стало больше.
После приобретения виртуального тела, кажется, что степень реализма повышается, однако видеть свою движущуюся тень в виртуальном пространстве — та еще задача для мозга, начинается головокружение, так что лучше выключить (это индивидуально)
С трекингом тела и объектов открывается огромное количество возможностей для создания игровых механик и эффекта погружения в целом.
Результат сборки такой системы на видео в начале поста. Также пример анимации персонажей в реальном времени: