Стандартные контроллеры популярных VR-гарнитур имеют сильно ограниченные возможности взаимодействия с виртуальным миром и некоторые задачи управления им практически не под силу, напр. имитация руля с коробкой передач. По схожей причине в мире игр уже давно существуют кастомные контроллеры и, пожалуй, наиболее известные из них — световой пистолет для NES и гитара Guitar Hero. У VR такого разнообразия нет, и отчасти из-за того, что производители не спешат предоставлять возможность подключения стороннего оборудования. Как это исправить и сделать свой контроллер для ходьбы — под катом.
Одна из проблем в VR — перемещение по миру на расстояния, большие чем помещение, в котором находится игрок. Наиболее распространенные способы — это телепортация из одной точки в другую или движение с использованием стика. Альтернативой могла бы быть ходьба на месте, которая также немного компенсирует укачивание в VR, но из-за отсутствия хоть какого то отслеживания ног, её реализация не слишком удобна (надо либо размахивать руками, либо сильно покачиваться) и потому практически не используется, хотя казалось бы для самого простого случая, когда достаточно передвигать игрока по направлению камеры, требуется передача в шлем всего лишь двух значений, определяющих стоит ли каждая нога на земле или нет. Датчиками в этом случае могут быть обычные кнопки. Для возможности разделения бега/ходьбы и определения движения назад можно для каждой ноги использовать не одну, а две кнопки — на носке и на пятке, и определять ходьбу, когда носки не отрываются от земли, а движение назад — по поднятым носкам. Бонусом был бы доступен еще прыжок.
Передавать данные в шлем можно тремя способами: по Bluetooth, Wi-Fi и проводом через USB-порт. Теоретически самые большие задержки имеет Wi-Fi, минимальные USB-порт, а Bluetooth нечто среднее. Если рассматривать использование с точки зрения пользователя/игрока, то Bluetooth-устройство, требующее однократного сопряжения, кажется наиболее удобным.
У Bluetooth есть понятие профиля, которое по сути определяет тип устройства — наушники, клавиатура или что-то еще. Одно устройство может реализовать сразу несколько профилей, т.е. быть и клавиатурой и наушниками. Для передачи данных, есть специальный профиль RFCOMM, аналогичный UART, но, к сожалению в этом случае приложению на шлеме потребуется запрашивать разрешение на использование Bluetooth, что закрывает дорогу в магазин Meta Quest. Поэтому остаются варианты эмулировать геймпад или клавиатуру. Первый имеет больше возможностей по передаче данных, но может пересекаться с вводом от стандартных контроллеров. Ввод с клавиатуры же отдельный, обрабатывать её значительно проще, да и для ходьбы или дэнспада регистрация обычных нажатий достаточна, так что выбор пал на нее.
Какой взять микроконтроллер — легкий вопрос, если исходить из стоимости, поскольку ESP32, имеющий на борту как Bluetooth, так и Wi-Fi, значительно дешевле любой пары микроконтроллер + Bluetooth-модуль. Кроме того, ESP32 можно программировать в Arduino IDE, т.е. ко многим датчикам уже есть готовые библиотеки. Стоит иметь в виду, что ESP32 имеет несколько вариаций чипа, описанных в англоязычной Википедии. В данном случае подойдут самые дешевые варианты за примерно 200руб как на уже подустаревшем базовом ESP32, так и более современной версии ESP32-C3.
Мои no-name платы ESP32 с али
Для прототипа контроллера я выбрал ESP32 C3 Super Mini. Еще потребовалось пара кнопок, провода и два резистора на 10КОм. Кнопки подключил к 0 и 1 портам по стандартной схеме с подтяжкой к земле. Чтобы кнопки было удобнее нажимать ногами, я приклеил к ним кусочки пластика. При нажатии отправляются буквы A и C, а при отпускании B и D.
Итоговый прототип, в котором обе ноги обрабатывает один контроллер.
Тестовое приложение я сделал на Godot. Это не самый популярный движок, но он прост, прекрасно подходит для прототипов, в том числе и VR, да и в отличии от Unreal и Unity, не требует для установки десятков гигабайт на диске и может запускаться под Windows 7.
Демо-приложение
С моей точки зрения, получилось неплохо. Перемещение ходьбой на месте достаточно естественно, хотя эффект укачивания всё равно присутствует. Возможно, если приблизить динамику перемещения камеры к реальной походке, будет лучше.
Код для ESP32 и прототип приложения доступны здесь. Приложение можно попробовать и без сборки ESP32-контроллера, т.к. нажатие любой кнопки стандартного контроллера имитирует шаг.
Meta, как и другие производители VR-гарнитур, ограничилась комплектом «шлем и два контроллера», что по сути представляет собой минимальный набор для игр в VR Однако, с моей точки зрения, бритва Оккама в этот раз отрезала лишнее — трекинг ног. Безногие аватары в Meta-вселенной выглядят нелепо, а уже о потерянных возможностях в играх и думать грустно. Казалось бы добавить сандали на лентах-липучках, как у шлема, с акселерометрами и тензометрическими датчиками для отслеживания распределения веса (и более точного восстановления позы), хотя бы как дополнительный аксессуар, не так уж и сложно, но — нет. С другой стороны рост производительности процессоров и развитие машинного обучения, видимо приведет к full-body трекингу всего одной камерой мобильного телефона, т. к. зачаточные версии на основе ML-Kit есть уже сейчас, и потому делать что-то специальное для ног многим кажется бесперспективным.
Дисклаймер
Это Proof-of-Concept идеи о подключении микроконтроллера ESP32 к шлему, как Bluetooth-клавиатуры, и передачи срабатываний датчиков, как нажатий клавиш, в приложение, запущенное на нем (а не через SteamVR или Meta Horizon). Теоретически можно передавать данные от шлема на контроллер посредством оповещений для светодиодов для реализации обратной связи, но найти рабочий пример не вышло, как и исправить готовое. В итоге, с технической точки зрения, статья довольно слабая.
Одна из проблем в VR — перемещение по миру на расстояния, большие чем помещение, в котором находится игрок. Наиболее распространенные способы — это телепортация из одной точки в другую или движение с использованием стика. Альтернативой могла бы быть ходьба на месте, которая также немного компенсирует укачивание в VR, но из-за отсутствия хоть какого то отслеживания ног, её реализация не слишком удобна (надо либо размахивать руками, либо сильно покачиваться) и потому практически не используется, хотя казалось бы для самого простого случая, когда достаточно передвигать игрока по направлению камеры, требуется передача в шлем всего лишь двух значений, определяющих стоит ли каждая нога на земле или нет. Датчиками в этом случае могут быть обычные кнопки. Для возможности разделения бега/ходьбы и определения движения назад можно для каждой ноги использовать не одну, а две кнопки — на носке и на пятке, и определять ходьбу, когда носки не отрываются от земли, а движение назад — по поднятым носкам. Бонусом был бы доступен еще прыжок.
Передавать данные в шлем можно тремя способами: по Bluetooth, Wi-Fi и проводом через USB-порт. Теоретически самые большие задержки имеет Wi-Fi, минимальные USB-порт, а Bluetooth нечто среднее. Если рассматривать использование с точки зрения пользователя/игрока, то Bluetooth-устройство, требующее однократного сопряжения, кажется наиболее удобным.
У Bluetooth есть понятие профиля, которое по сути определяет тип устройства — наушники, клавиатура или что-то еще. Одно устройство может реализовать сразу несколько профилей, т.е. быть и клавиатурой и наушниками. Для передачи данных, есть специальный профиль RFCOMM, аналогичный UART, но, к сожалению в этом случае приложению на шлеме потребуется запрашивать разрешение на использование Bluetooth, что закрывает дорогу в магазин Meta Quest. Поэтому остаются варианты эмулировать геймпад или клавиатуру. Первый имеет больше возможностей по передаче данных, но может пересекаться с вводом от стандартных контроллеров. Ввод с клавиатуры же отдельный, обрабатывать её значительно проще, да и для ходьбы или дэнспада регистрация обычных нажатий достаточна, так что выбор пал на нее.
Знаете ли вы, что… каждая кнопка на стандартном контроллере имеет датчик, определяющий находится ли ваш палец над ней. Благодаря этим датчикам, в главном меню визуализируются положение пальцев, когда вы держите в руках контроллеры, скрывающих пальцы от камер своими кольцами.
Аппаратная часть
Какой взять микроконтроллер — легкий вопрос, если исходить из стоимости, поскольку ESP32, имеющий на борту как Bluetooth, так и Wi-Fi, значительно дешевле любой пары микроконтроллер + Bluetooth-модуль. Кроме того, ESP32 можно программировать в Arduino IDE, т.е. ко многим датчикам уже есть готовые библиотеки. Стоит иметь в виду, что ESP32 имеет несколько вариаций чипа, описанных в англоязычной Википедии. В данном случае подойдут самые дешевые варианты за примерно 200руб как на уже подустаревшем базовом ESP32, так и более современной версии ESP32-C3.
Мои no-name платы ESP32 с али
Особенности плат слева направо
1. EPS32 Super Mini на базе ESP32 C3. На 8-ой ноге есть светодиод, притянутый к 3.3В. Достаточна много брака, поэтому желательно смотреть отзывы. Иногда маркировка чипа бывает не на четыре, а три строки и в таком случае плата требует подключения внешней флеш-памяти, что делает её практически бесполезной. Главный минус следует из её размера — малое число портов. Информация о плате, включая распиновку, схему и примеры для Arduino IDE, на китайском доступна здесь.
2. Плата на базе ESP32-D0WD-v3 с памятью, распаянной рядом на внешней флешке, и отдельной UART-USB-микросхемой СР341G. Также есть порт для зарядки аккумулятора и встроенный светодиод на 22 ноге. Чтобы заливать прошивку может потребоваться подключить электролитический конденсатор на 10uF между землей G и контактом EN. Мой фаворит.
3. Плата на ESP32-C3, похоже первых ревизий. Из плюсов — больше всего портов, но некоторые из них не рекомендуются к использованию. Плата была куплена на случай, если первая в списке оказалась бы бракованной. Подключать даже не пробовал.
Питать платы можно как от USB, так и от LiPo-аккумулятора. В описании плат обычно есть допустимый диапазон напряжений, скорее всего 3.3-6В, но лучше уточнить по схеме, зачастую имеющуюся в описании у продавца, наличие стабилизатора, напр. AMS1117, на 3.3В. Питание надо подавать на 5В ножку.
2. Плата на базе ESP32-D0WD-v3 с памятью, распаянной рядом на внешней флешке, и отдельной UART-USB-микросхемой СР341G. Также есть порт для зарядки аккумулятора и встроенный светодиод на 22 ноге. Чтобы заливать прошивку может потребоваться подключить электролитический конденсатор на 10uF между землей G и контактом EN. Мой фаворит.
3. Плата на ESP32-C3, похоже первых ревизий. Из плюсов — больше всего портов, но некоторые из них не рекомендуются к использованию. Плата была куплена на случай, если первая в списке оказалась бы бракованной. Подключать даже не пробовал.
Питать платы можно как от USB, так и от LiPo-аккумулятора. В описании плат обычно есть допустимый диапазон напряжений, скорее всего 3.3-6В, но лучше уточнить по схеме, зачастую имеющуюся в описании у продавца, наличие стабилизатора, напр. AMS1117, на 3.3В. Питание надо подавать на 5В ножку.
Как начать работать с ESP32 в Arduino IDE
Однако с ESP32 не все так гладко. Во первых сборка и загрузка скетча в Arduino IDE будет занимать более 30сек, т.к. по сути собирается целая операционка FreeRTOS, а кеширования скомпилированных ранее модулей в IDE нет. Решением может быть использование платного плагина к Visual Studio. А во вторых многие датчики рассчитаны на питание 5В, в то время как ESP32 питается от 3.3В, и потому по линиям данных рекомендуется ставить преобразователи TTL-уровней, чтобы не сжечь порты у ESP32. В некоторых мануалах это может опускаться, т.к. для попробовать и так работает. В продаже есть датчики рассчитанные на 3.3В, но они обычно значительно дороже.1. Установить Arduino IDE. Для Windows 7 надо ставить 1.8.х.
2. Открыть File > Preferences и для поля Additional Board Manager URLs указать raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json. Закрыть настройки кнопкой OK, открыть Tools > Boards Manager...., вбить в поиске esp32 и установить esp32 by Espressif Systems. Если все сделано правильно, то в Boards появится пункт ESP32 Arduino.
3. В Boards перечислено много плат, но можно выбирать Dev Module по чипу, напр. ESP32C3 Dev Module.
4. После подключения платы по USB, в зависимости от версии Windows и платы может потребоваться установка драйвера. Для Windows 7 и плат, использующих программный USB и определяющихся как один/два «USB Serial/JTAG порт», драйвер можно взять тут. В Windows 10/11 драйвера установятся сами.
5. Иногда, даже после установки драйверов, Arduino IDE не может загрузить прошивку, т.к. закрыт COM-порт. В этом случае можно перегрузить плату, нажав RST на ней. Или, если есть кнопка BOOT, то удерживать её при подключении платы к USB.
2. Открыть File > Preferences и для поля Additional Board Manager URLs указать raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json. Закрыть настройки кнопкой OK, открыть Tools > Boards Manager...., вбить в поиске esp32 и установить esp32 by Espressif Systems. Если все сделано правильно, то в Boards появится пункт ESP32 Arduino.
3. В Boards перечислено много плат, но можно выбирать Dev Module по чипу, напр. ESP32C3 Dev Module.
4. После подключения платы по USB, в зависимости от версии Windows и платы может потребоваться установка драйвера. Для Windows 7 и плат, использующих программный USB и определяющихся как один/два «USB Serial/JTAG порт», драйвер можно взять тут. В Windows 10/11 драйвера установятся сами.
5. Иногда, даже после установки драйверов, Arduino IDE не может загрузить прошивку, т.к. закрыт COM-порт. В этом случае можно перегрузить плату, нажав RST на ней. Или, если есть кнопка BOOT, то удерживать её при подключении платы к USB.
Для прототипа контроллера я выбрал ESP32 C3 Super Mini. Еще потребовалось пара кнопок, провода и два резистора на 10КОм. Кнопки подключил к 0 и 1 портам по стандартной схеме с подтяжкой к земле. Чтобы кнопки было удобнее нажимать ногами, я приклеил к ним кусочки пластика. При нажатии отправляются буквы A и C, а при отпускании B и D.
Итоговый прототип, в котором обе ноги обрабатывает один контроллер.
Приложение для шлема
Тестовое приложение я сделал на Godot. Это не самый популярный движок, но он прост, прекрасно подходит для прототипов, в том числе и VR, да и в отличии от Unreal и Unity, не требует для установки десятков гигабайт на диске и может запускаться под Windows 7.
Как сделать приложение для Oculus Quest в Godot
В тестовом проекте я реализовал следующую логику: при поднятии ноги полсекунды или пока нога не будет опущена игрок, а точнее базовая точка, перемещается вперед. Обычно, когда надо, чтобы игрок мог упираться в препятствия, его перемещают не путем изменения позиции, а толкают его капсулу-коллайдер. Однако, если привязать коллайдер к базовой точке, то непонятно что делать, когда игрок перемещается в реальном мире, отходит от базовой точки и выходит из коллайдера. Поэтому я просто закрепил на камере коллайдер-сферу, которая при регистрации столкновения переносит базовую точку и, следовательно саму камеру, назад. Хотя это в VR воспринимается не очень, но свою задачу «запрещения игроку проходить сквозь стены» решает. Наверняка есть способы лучше. 1. Установить последнюю версию Godot. На момент публикации это 4.2.2.
2. Создать новый проект с Mobile-рендером.
3. Зайти в «Project > Project Settings...». В разделах «XR > OpenXR» и «XR > Shaders» поставить галочки Enabled. Перезагрузить проект.
4. Перейти в AssetLib и установить Godot OpenXR Vendors plugin.
5. Добавить к проекту скрипт, включающий OpenXR-рендер, с содержимым
6. Создание приложения для различных платформ в Godot называется экспортом и каждая платформа, будь то Windows или Android, требует установки шаблона экспорта. Чтобы установить шаблоны надо в редакторе зайти в «Editor > Manage Export Templates...» и нажать кнопку Download and Install, которая скачает и установит шаблоны для текущей версии Godot.
7. Для сборки VR-приложения для Android также требуется установить шаблон сборки, что делается через вызов «Project > Install Android Build Template». А также надо установить Android SDK и в «Editor > Editor Settings > Export > Android» указать Android SDK Path. На той же вкладке надо указать где установлена Java.
8. Для экспорта приложения под Android, надо зайти в «Project > Export… > Add ...» и добавить Android и изменить следующие настройки: включить Use gradle build, XRMode задать как OpenXR, включить Enablle Meta Plugin и в самом конце снять флажки у Quest 3 Support и Quest Pro Support. После этого можно собирать apk кнопкой Export Project…
9. Чтобы после каждой сборки не закидывать apk на шлем самостоятельно, достаточно подключить шлем к компьютеру кабелем. В этом случае станет доступна кнопка «Remote Debug > Oculus Quest 2» в правом верхнем углу редактора Godot.
10. Чтобы не держать шлем на кабеле, поскольку это не всегда удобно, можно перевести adb в режим работы по сети. Для этого надо подключить шлем кабелем, набрать в консоли «adb devices», чтобы убедиться что шлем определился. Потом выполнить «adb tcpip 6007», отключить кабель от шлема и выполнить «adb connect <ip-щлема>:6007». Можно использовать и другой порт, но в этом случае надо в Godot указать его в «Editor > Editor Setting… > Debug > Remote Port». При этом можно сразу видеть результат вызова
11. В проекте на сцене не забыть добавить XROrigin3D и дочерние узлы XRCamera3D и два XRController3D.
2. Создать новый проект с Mobile-рендером.
3. Зайти в «Project > Project Settings...». В разделах «XR > OpenXR» и «XR > Shaders» поставить галочки Enabled. Перезагрузить проект.
4. Перейти в AssetLib и установить Godot OpenXR Vendors plugin.
5. Добавить к проекту скрипт, включающий OpenXR-рендер, с содержимым
extends Node3D
func _ready():
OS.request_permissions()
var xr_interface = XRServer.find_interface("OpenXR")
if xr_interface and xr_interface.is_initialized():
get_viewport().use_xr = true
6. Создание приложения для различных платформ в Godot называется экспортом и каждая платформа, будь то Windows или Android, требует установки шаблона экспорта. Чтобы установить шаблоны надо в редакторе зайти в «Editor > Manage Export Templates...» и нажать кнопку Download and Install, которая скачает и установит шаблоны для текущей версии Godot.
7. Для сборки VR-приложения для Android также требуется установить шаблон сборки, что делается через вызов «Project > Install Android Build Template». А также надо установить Android SDK и в «Editor > Editor Settings > Export > Android» указать Android SDK Path. На той же вкладке надо указать где установлена Java.
8. Для экспорта приложения под Android, надо зайти в «Project > Export… > Add ...» и добавить Android и изменить следующие настройки: включить Use gradle build, XRMode задать как OpenXR, включить Enablle Meta Plugin и в самом конце снять флажки у Quest 3 Support и Quest Pro Support. После этого можно собирать apk кнопкой Export Project…
9. Чтобы после каждой сборки не закидывать apk на шлем самостоятельно, достаточно подключить шлем к компьютеру кабелем. В этом случае станет доступна кнопка «Remote Debug > Oculus Quest 2» в правом верхнем углу редактора Godot.
10. Чтобы не держать шлем на кабеле, поскольку это не всегда удобно, можно перевести adb в режим работы по сети. Для этого надо подключить шлем кабелем, набрать в консоли «adb devices», чтобы убедиться что шлем определился. Потом выполнить «adb tcpip 6007», отключить кабель от шлема и выполнить «adb connect <ip-щлема>:6007». Можно использовать и другой порт, но в этом случае надо в Godot указать его в «Editor > Editor Setting… > Debug > Remote Port». При этом можно сразу видеть результат вызова
print
в консоли, если выполнить «adb logcat -s godot».11. В проекте на сцене не забыть добавить XROrigin3D и дочерние узлы XRCamera3D и два XRController3D.
Демо-приложение
С моей точки зрения, получилось неплохо. Перемещение ходьбой на месте достаточно естественно, хотя эффект укачивания всё равно присутствует. Возможно, если приблизить динамику перемещения камеры к реальной походке, будет лучше.
Код для ESP32 и прототип приложения доступны здесь. Приложение можно попробовать и без сборки ESP32-контроллера, т.к. нажатие любой кнопки стандартного контроллера имитирует шаг.
Вместо послесловия
Meta, как и другие производители VR-гарнитур, ограничилась комплектом «шлем и два контроллера», что по сути представляет собой минимальный набор для игр в VR Однако, с моей точки зрения, бритва Оккама в этот раз отрезала лишнее — трекинг ног. Безногие аватары в Meta-вселенной выглядят нелепо, а уже о потерянных возможностях в играх и думать грустно. Казалось бы добавить сандали на лентах-липучках, как у шлема, с акселерометрами и тензометрическими датчиками для отслеживания распределения веса (и более точного восстановления позы), хотя бы как дополнительный аксессуар, не так уж и сложно, но — нет. С другой стороны рост производительности процессоров и развитие машинного обучения, видимо приведет к full-body трекингу всего одной камерой мобильного телефона, т. к. зачаточные версии на основе ML-Kit есть уже сейчас, и потому делать что-то специальное для ног многим кажется бесперспективным.
alextrof94
Во-первых, есть подобные устройства: на основе инерционных датчиков, на основе роликов в башмаках, в виде отдельной "тарелки" с датчиками на пол, и даже все вместе. И все они либо цепляются именно к шлему эмулируя отклонение стика, либо эмулируют отдельное устройство для того же steamvr/openxr, позволяя на себя забиндить что хочется.
Во-вторых, очень редкие VR-приложения умеют управляться с клавиатуры, как реализовано здесь подгонкой годот-проекта под основной проект контроллера.
В-третьих, эта тема не развивается, потому что это неудобно. Ходьба на месте никак не способствует исчезновению укачивания, при этом способствует быстрому выматыванию. Ну, и catwalk vr и его аналоги банально много места занимают и дорого стоят.
В-четвёртых, причем тут quest 2? Просто потому что проект запущен на нем? Ну, с таким же успехом проект "игры" можно было сделать для обычной мобилы или для ПК - данное устройство будет работать совершенно также. Даже если простой блокнот на ПК открыть - увидим, что будут печататься запрограммированные символы. Это же обычная bt-hid клавиатура.
И да, я читал дисклеймер. Просто статья вводит в заблуждение, а заголовок кликбейтный. Я пришел сюда за знаниями, а знаний в статье меньше, чем в первом ответе на стак оверфлоу.
little-brother Автор
Я думал упомянуть ролики и платформы, но с моей точки зрения, эти устройства никогда не станут массовыми из-за своих габаритов и своей технической сложности, потому и не стал.
То, что мало игр могло управляться световым пистолетом и гитарой вас не смущает? Если контроллер кастомный, то вроде как очевидно, что игра должна делаться под него (может вы ожидали, что в статье будет предложено сделать замену стандартному контроллеру, но мне в голову не могло прийти, что кто-то захочет это делать, т. к. они не имеют существенных изъянов и что-то кастомное сравнимое по функционалу будет значительно дороже). Если контроллер сделан с умом, без фиксации на одной игре, то его можно использовать и в других играх, но исходно контроллер делается под игру.
Вы утверждаете, что ходьба на месте никак не влияет на укачивание, видимо основываясь на своем опыте. Про себя скажу, что меня практически не укачивает в VR и сперва я попробовал сделать управление по аналогии с доской для серфинга, когда направление движение контролируется отклонением шлема от базовой точки влево или вправо. Так вот с ходьбой, особенно после добавления в конце шага замедления, эффект укачивания для меня был менее выражен, чем с доской, но тут речь идет о разнице между слабо и очень слабо.
Ходьба на месте способствует быстрому выматыванию? В Thrill of the fight или Creed: Rise to Glory не пробовали играть? Видимо авторам надо было сделать удары на кнопки контроллеров, как в Mortal Kombat. С моей точки зрения, подвижность и физическая нагрузка - это огромный плюс VR, который надо активно использовать, в том числе и для иммерсивности. Разумеется, если брать игры с открытым миром, как например Skyrim или The Witcher, то ходить там грустно, но это потому они адаптации под VR
По поводу причем тут Oculus Quest: на рынке по сути сейчас два с половиной игрока - Meta Quest с его китайским аналогом Pico и Valve Index. Apple с их Vision Pro и Sony PS VR имхо мертворожденные, как тот же Google Glass. В статье я рассказываю как сделать контроллер для standalone-гарнитуры с учетом того факта, что UART на Meta не доступен. Для Index контроллер должен подключаться уже к хосту, так что тут он ни при чём. Для телефонов делать контроллеры смысла мало: придумать что-то свое практически невозможно, хотя создатели Pokemon Go и Just Dance смогли. В VR же, размышляя о своей игре, я сразу уперся в невозможность перемещаться естественным образом (телепорт и стик - это эрзац), что делает невозможным целый ряд игр. Основной посыл статьи - возможность сделать свой контроллер есть. А второй - жалко, что нет стандартных контроллеров для ног.
И напоследок: вы выражаете своё недовольство, что в статье мало технических деталей хотя она имеет как короткий описывающий дисклаймер, так и метку Простой. И завершаете тем, что сводите на ноль всё, что я написал, так как именно вы это знаете и ничего полезного, именно для вас, в ней нет. А потом некоторые удивляются чего это рунет такой токсичный.
alextrof94
Делать кастомный контроллер под свой проект недоигры? Вы не Нинтендо, чтобы сравнивать себя с ними.
Я уже сказал, что чтобы контроллер работал со всеми играми - надо эмулировать действия совместимого контроллера, что делают остальные девайсы.
Размер девайсов большой только у кэтволк ВР и аналогов, а вот такие минималистичные тоже есть, что я тоже упомянул: "башмаки с роликами, инерционные трекеры, тарелка с датчиками".
Меня вообще в ВР не укачивает, могу и бегать, и ездить, и летать. Сказалась школа юного конструктора-пилота. Но я сижу в ВР тусовках, где в том числе люди жалуются на свой экспириенс от тех или иных девайсов. Советую тоже хотя бы в те же Дискорд сервера позаходить, почитать.
Взмахи легковесными контроллерами - это одно. Ходить на месте - другое. Не надо утрировать про кнопки. Сходите в ВР клуб, где есть катволк ВР, и затестите каково это перемещаться ходьбой.
Про телефоны мой поинт так и не понят. Вся суть этого проекта - обычная bt-hid клавиатура, которую без разницы к чему цеплять, будь то ВР, телефон или компьютер. Работать будет одинаково, помимо ВР, ибо забиндить на Клаву редко что возможно в таких проектах. Кстати, касательно компьютеров - от эльгато, которые стимдек сделали, уже есть педальки.
Касательно моего последнего абзаца. Мне не нужны глубокие технические детали. По заголовку в статье должен был быть реальный проект кнопок под ноги, который бы работал с ВР, а по итогу, повторюсь ещё раз, описана простая бт-клавиатура на Ардуино. У меня и самого есть проект usb-hid клавиатуры на гитхабе для Valve Index https://github.com/alextrof94/ValveIndexMacroKeyboard . Отличия в этих проектах лишь в МК, в одной дополнительной либе и +-десяти строках кода, ну и корпусня у меня тоже смоделена, чтобы можно было распечатать на принтере, собрать и реально применить.