VR Jester API
Активный0.0
Установок
Последнее обновление
Версии
VR Jester API - API для распознавания жестов в Minecraft VR
Играете в Vivecraft или QuestCraft и любите моды? Хотите, чтобы моды лучше работали в виртуальной реальности? Это решение предназначено как для разработчиков, так и для игроков!
Данный API позволяет разработчикам модов для Minecraft легко добавлять поддержку жестов для совместимости с VR. Создавайте любые пользовательские жесты, которые можно привязать к любым клавишам и запускать события. Больше не нужно привязывать кнопки контроллера к клавишам клавиатуры - с этим API ваше тело становится контроллером.
Демонстрации:
Установка:
- Установите необходимые зависимости. Мод Questbind требуется только для использования с QuestCraft.
- Скачайте мод VR Jester API и поместите его в папку
mods. - Запустите Minecraft. Необходимые конфигурационные файлы создадутся автоматически при инициализации.
Использование:
-
В Minecraft VR привяжите одну из кнопок контроллера к "Gesture Listener Trigger". Рекомендуется использовать кнопку захвата. Для Vivecraft это делается через меню привязок контроллера Steam VR, для QuestCraft - через QuestBind.
-
Есть два способа создания жестов:
- Использование команды
/gesture - Прямое редактирование файла
config/gesture_store.json, где хранятся жесты.
Пример хранилища жестов:
- Использование команды
"GESTURE 1": {
"RIGHT_CONTROLLER|LEFT_CONTROLLER": [
{
"vrDevice": "RIGHT_CONTROLLER|LEFT_CONTROLLER",
"movement": "forward",
"elapsedTime": 0,
"speed": 0.0,
"direction": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"devicesInProximity": {}
}
]
},
...
- После создания жестов вы можете привязать их к клавишам в файле
config/VRJesterAPI.cfg, создавая объекты ключ-значение в поле "GESTURE_KEY_MAPPINGS". Имена привязок клавиш можно найти в файле.minecraft/options.txt. Поле "KEY_ACTION" определяет, будет ли распознанный жест вызывать однократное нажатие (click) или удержание (hold) клавиши. Удержание срабатывает, когда вы сохраняете позу жеста после его распознавания.
"GESTURE_KEY_MAPPINGS": {
"GESTURE 1": {
"KEY_MAPPING": "examplemod.key.ability_1",
"KEY_ACTION": "click"
},
"GESTURE 2": {
"KEY_MAPPING": "key.hotbar.2,key.sneak",
"KEY_ACTION": "hold"
},
"GESTURE 3": {
"KEY_MAPPING": "key.keyboard.j",
"KEY_ACTION": "click"
}
}
Информация:
-
Каждый объект в квадратных скобках [ ] представляет собой часть жеста. Вы можете добавлять несколько таких объектов GestureComponent. Этот API распознает жесты любой сложности! Однако чем сложнее жест, тем труднее его правильно выполнить для совпадения с сохраненным жестом.
-
Доступные значения для "movement":
forward, back, left, right, up, down. Направление движения относительно вашего направления взгляда в момент нажатия Jester Trigger, который запускает распознаватель жестов. Простой пример: удар в том же направлении, куда вы смотрите, будет распознан как "forward". -
Доступные значения для "vrDevice":
RIGHT_CONTROLLER, LEFT_CONTROLLER, HEAD_MOUNTED_DISPLAY. Для распознавания жеста на нескольких VR-устройствах используйте логическое ИЛИ через символ|, например:RIGHT_CONTROLLER|LEFT_CONTROLLER|HEAD_MOUNTED_DISPLAY. -
Поле "elapsedTime" указывается в миллисекундах. Значение
2000означает, что эта часть жеста длится 2 секунды, что подходит для заряжаемых движений. -
Поле "speed" представляет скорость GestureComponent в виде числа с плавающей точкой. Для распознавания скорости удара подходящим порогом будет
1500.0-2000.0- экспериментируйте с значениями. -
Поле "direction" принимает значения
x,y,zс плавающей точкой, создающие нормализованный 3D-вектор. Например,{0.0, 1.0, 0.0}распознает, когда рука игрока направлена вверх. Есть определенный порог, поэтому точное совпадение не требуется. -
Поле "devicesInProximity" форматируется так:
"devicesInProximity": {
"LEFT_CONTROLLER": 20
}
Это означает, что vrDevice этого GestureComponent должен находиться вблизи левого контроллера в течение 20 тиков.
- Для обработки событий, вызванных распознанным жестом, подпишитесь на шину событий (Forge) или зарегистрируйтесь в интерфейсе обратного вызова событий (Fabric).
Forge:
@SubscribeEvent
public void onGestureEvent(GestureEvent event) {
// код обработки жеста здесь -> event.getGestureName()
}
Fabric:
public static void init() {
GestureEventCallback.EVENT.register((gestureEvent) -> {
// код обработки жеста здесь -> gestureEvent.getGestureName()
});
}
Планы развития:
В будущем планируется добавить непрерывное распознавание жестов, больше настроек конфигурации и оптимизации.
Обновление от 27.03.2025 - Работа над модом продолжается, несмотря на временное отсутствие обновлений. Разработчик занят другими проектами, но планирует вернуться к этому моду.