Controladores de reverbo do HP G2 em um não realHP Reverb G2 Controllers in Unreal

IntroduçãoGetting started

Importante

O mecanismo inreal 4,26 e o OpenXR ou o SteamVR são necessários para acessar o plug-in do controlador HP Motion, você precisará trabalhar com os controladores de reverberação da HP.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.

Habilitando plug-in do controlador HP MotionEnabling HP Motion Controller Plugin

O perfil de interação e os mapeamentos do controlador estão no plug-in do controlador HP Motion, que deve ser habilitado para expor os mapeamentos do controlador para o sistema de entrada do inreal.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.

Habilitando o plug-in OpenXRHPController

Portando um aplicativo OpenXR existentePorting an existing OpenXR app

Se nenhuma associação de controlador existir no jogo para o controlador HP Mixed Reality, o tempo de execução do OpenXR tentará remapear as ligações existentes para o controlador ativo.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. Nesse caso, o jogo tem ligações Oculus Touch e nenhuma associação de controlador HP Mixed Reality.In this case, the game has Oculus Touch bindings and no HP Mixed Reality Controller bindings.

Remapeando associações existentes quando não existe nenhuma associação de controlador

Os eventos ainda serão acionados, mas se o jogo precisar usar associações específicas do controlador, como o botão de menu à direita, o perfil de interação da realidade mista HP deverá ser usado.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. Várias associações de controlador podem ser especificadas por ação para dar melhor suporte a dispositivos diferentes.Multiple controller bindings can be specified per action to better support different devices.

Usando associações de vários controladores

Adicionando mapeamentos de ação de entradaAdding input action mappings

Defina uma nova ação e mapeie para um dos pressionamentos de tecla na seção controlador HP Mixed Reality.Define a new action and map to one of the key presses in the HP Mixed Reality Controller section.

Definindo novas ações e mapeamentos

O controlador do HP reverberar G2 também tem uma alça analógica, que pode ser usada nos mapeamentos de eixo com a associação "eixo de squeeze".The HP Reverb G2 controller also has an analog grip, which can be used in the axis mappings with the “Squeeze Axis” binding. Há uma associação squeeze separada, que deve ser usada para mapeamentos de ação quando o botão de fixação é totalmente pressionado.There's a separate Squeeze binding, which should be used for action mappings when the grip button is fully pressed.

Usando as associações de eixo de squeeze

Adicionando eventos de entradaAdding input events

Clique com o botão direito do mouse em um plano gráfico e procure os novos nomes de ação do sistema de entrada para adicionar eventos para essas ações.Right-click on a Blueprint and search for the new action names from the input system to add events for these actions. Aqui, o plano gráfico está respondendo aos eventos com uma cadeia de caracteres de impressão gerando o botão atual e o estado do eixo.Here the Blueprint is responding to the events with a print string outputting the current button and axis state.

Plano gráfico respondendo a eventos e gerando o estado atual do botão e do eixo

Usando entradaUsing input

Os mesmos mapeamentos de ação e de eixo nas configurações do projeto de entrada do jogo podem ser usados em C++.The same action and axis mappings in the game’s input project settings can be used from C++.

  1. Criar uma nova classe C++ com a classe File/New C++...Create a new C++ Class with File/New C++ Class...

Criando uma nova classe C++

  1. Criar um peãoCreate a pawn

Criando um peão

  1. Na solução do Visual Studio do projeto, localize a nova classe peão e configure-a para entrada.In the project’s Visual Studio solution, find the new Pawn class and configure it for input.
  • Primeiro, no construtor, defina AutoPossessPlayer para o primeiro jogador para rotear a entrada para o peão.First, in the constructor, set AutoPossessPlayer to the first player to route input to the pawn.
AMyPawn::AMyPawn()
{
    PrimaryActorTick.bCanEverTick = true;

    AutoPossessPlayer = EAutoReceiveInput::Player0;
}
  • Em seguida, em SetupPlayerInputComponent, associe ações e eventos de eixo aos nomes de ação das configurações de entrada do projeto.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);
}
  • Adicione as funções de retorno de chamada à classe: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);
    }
}
  • Atualize o cabeçalho do peão com as definições da função de retorno de chamada:Update the Pawn’s header with the callback function definitions:
private:
    void XPressed();
    void LeftGripAxis(float AxisValue);
  1. Compile do Visual Studio para iniciar o editor com o novo peão.Compile from Visual Studio to launch the editor with the new pawn. Arraste e solte o peão do navegador de conteúdo para o jogo e o peão agora executará os retornos de chamada quando a entrada for pressionada.Drag and drop the pawn from the content browser into the game and the pawn will now execute the callbacks when input is pressed.

Confira tambémSee also