HP reverbы G2 контроллеров в нереальном режимеHP Reverb G2 Controllers in Unreal

Начало работыGetting started

Важно!

Для доступа к подключаемому модулю контроллера движения HP требуется нереалия ядра 4,26 и Опенкср или Стеамвр. вам потребуется работать с контроллерами HP с переглаголом G2.Unreal Engine 4.26 and either OpenXR or SteamVR is required to access the HP Motion Controller plugin you'll need to work with the HP Reverb G2 controllers.

Включение подключаемого модуля контроллера движения HPEnabling HP Motion Controller Plugin

Профили взаимодействия и сопоставления контроллеров находятся в подключаемом модуле контроллера HP Motion, который должен быть включен, чтобы предоставлять сопоставления контроллеров для системы ввода в нереальном виде.The interaction profile and controller mappings are in the HP Motion Controller plugin, which must be enabled to expose the controller mappings to Unreal’s input system.

Включение подключаемого модуля Опенксрхпконтроллер

Перенос существующего приложения ОпенксрPorting an existing OpenXR app

Если в игре для контроллера HP Mixed Reality не существует привязок контроллера, среда выполнения Опенкср попытается сопоставить существующие привязки с активным контроллером.If no controller bindings exist in the game for the HP Mixed Reality Controller, the OpenXR runtime will try to remap existing bindings to the active controller. В этом случае игра имеет Окулусные привязки касания и не содержит привязки контроллера HP Mixed Reality.In this case, the game has Oculus Touch bindings and no HP Mixed Reality Controller bindings.

Повторное сопоставление существующих привязок при отсутствии привязок к контроллеру

События по-прежнему будут срабатывать, но если в игре необходимо использовать привязки для конкретного контроллера, как в правой кнопке меню, необходимо использовать профиль взаимодействия HP Mixed Reality.The events will still fire, but if the game needs to make use of controller-specific bindings, like the right menu button, the HP Mixed Reality interaction profile must be used. Можно указать несколько привязок контроллера для каждого действия, чтобы обеспечить лучшую поддержку различных устройств.Multiple controller bindings can be specified per action to better support different devices.

Использование нескольких привязок к контроллеру

Добавление сопоставлений входных действийAdding input action mappings

Определите новое действие и сопоставьте его с одним из ключевых нажатий в разделе контроллера HP Mixed Reality.Define a new action and map to one of the key presses in the HP Mixed Reality Controller section.

Определение новых действий и сопоставлений

Контроллер HP REVERB G2 также имеет аналоговый захват, который можно использовать в сопоставлениях осей с привязкой "сжатие по оси".The HP Reverb G2 controller also has an analog grip, which can be used in the axis mappings with the “Squeeze Axis” binding. Существует отдельная привязка к сжатию, которая должна использоваться для сопоставления действий при полной нажатии кнопки захвата.There's a separate Squeeze binding, which should be used for action mappings when the grip button is fully pressed.

Использование привязок осей сжатие

Добавление событий вводаAdding input events

Щелкните проект правой кнопкой мыши и найдите новые имена действий из входной системы, чтобы добавить события для этих действий.Right-click on a Blueprint and search for the new action names from the input system to add events for these actions. Здесь проект отвечает на события со строкой печати, которая выводит текущую кнопку и состояние оси.Here the Blueprint is responding to the events with a print string outputting the current button and axis state.

Схема реагирования на события и вывод текущей кнопки и состояния оси

Использование входных данныхUsing input

Те же действия и сопоставления осей в параметрах входного проекта игры можно использовать из C++.The same action and axis mappings in the game’s input project settings can be used from C++.

  1. Создание нового класса C++ с помощью файла или нового класса C++...Create a new C++ Class with File/New C++ Class...

Создание нового класса C++

  1. Создание пешкиCreate a pawn

Создание пешки

  1. В решении Visual Studio проекта найдите новый класс пешки и настройте его для ввода.In the project’s Visual Studio solution, find the new Pawn class and configure it for input.
  • Сначала в конструкторе задайте Аутопоссессплайер для первого игрока, чтобы направить входные данные в пешку.First, in the constructor, set AutoPossessPlayer to the first player to route input to the pawn.
AMyPawn::AMyPawn()
{
    PrimaryActorTick.bCanEverTick = true;

    AutoPossessPlayer = EAutoReceiveInput::Player0;
}
  • Затем в Сетупплайеринпуткомпонент привяжите действия и события оси к именам действий из входных параметров проекта.Then in SetupPlayerInputComponent, bind actions and axis events to the action names from the project’s input settings.
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
    PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
  • Добавьте функции обратного вызова в класс:Add the callback functions to the class:
void AMyPawn::XPressed()
{
    UE_LOG(LogTemp, Log, TEXT("X Pressed"));
}

void AMyPawn::LeftGripAxis(float AxisValue)
{
    if(AxisValue != 0.0f) 
    {
        UE_LOG(LogTemp, Log, TEXT("Left Grip Axis Valule: %f"), AxisValue);
    }
}
  • Обновите заголовок пешки с помощью определений функций обратного вызова:Update the Pawn’s header with the callback function definitions:
private:
    void XPressed();
    void LeftGripAxis(float AxisValue);
  1. Скомпилируйте из Visual Studio, чтобы запустить редактор с новой пешкой.Compile from Visual Studio to launch the editor with the new pawn. Перетащите пешку из браузера содержимого в игру, и пешка теперь будет выполнять обратные вызовы при нажатии клавиши ВВОД.Drag and drop the pawn from the content browser into the game and the pawn will now execute the callbacks when input is pressed.

См. также разделSee also