Controladores do HP Reverb G2 no Unreal

Introdução

Importante

O Unreal Engine 4.26 e o OpenXR ou o SteamVR são necessários para acessar o plug-in HP Motion Controller, você precisará trabalhar com os controladores HP Reverb G2.

Habilitando o plug-in hp motion controller

O perfil de interação e os mapeamentos do controlador estão no plug-in HP Motion Controller, que deve ser habilitado para expor os mapeamentos do controlador ao sistema de entrada do Unreal.

Habilitando o plug-in OpenXRHPController

Portabilidade de um aplicativo OpenXR existente

Se não houver associações de controlador no jogo para o CONTROLADOR hp Realidade Misturada, o runtime do OpenXR tentará remapear as associações existentes para o controlador ativo. Nesse caso, o jogo tem associações Oculus Touch e nenhuma associação HP Realidade Misturada Controller.

Remapeamento de associações existentes quando não existem associações de controlador

Os eventos ainda serão acionados, mas se o jogo precisar usar associações específicas do controlador, como o botão direito do menu, o perfil de interação hp Realidade Misturada deverá ser usado. Várias associações de controlador podem ser especificadas por ação para dar melhor suporte a dispositivos diferentes.

Usando várias associações de controlador

Adicionando mapeamentos de ação de entrada

Defina uma nova ação e mapeie para uma das teclas pressionadas na seção Controlador hp Realidade Misturada.

Definindo novas ações e mapeamentos

O controlador HP Reverb G2 também tem uma alça analógica, que pode ser usada nos mapeamentos de eixo com a associação "Eixo do Aperto". Há uma associação Squeeze separada, que deve ser usada para mapeamentos de ação quando o botão de aderência é totalmente pressionado.

Usando as associações do eixo Squeeze

Adicionando eventos de entrada

Clique com o botão direito do mouse em um Blueprint e pesquise os novos nomes de ação do sistema de entrada para adicionar eventos para essas ações. Aqui, o Blueprint está respondendo aos eventos com uma cadeia de caracteres de impressão que gera o botão atual e o estado do eixo.

Blueprint respondendo a eventos e gerando o botão atual e o estado do eixo

Usando entrada

Os mesmos mapeamentos de ação e eixo nas configurações do projeto de entrada do jogo podem ser usados no C++.

  1. Crie uma nova classe C++ com a classe File/New C++...

Criando uma nova classe C++

  1. Criar um peão

Criando um peão

  1. Na solução do Visual Studio do projeto, localize a nova classe Pawn e configure-a para entrada.
  • Primeiro, no construtor, defina AutoPossessPlayer como o primeiro jogador a rotear a entrada para o peão.
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.
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 :
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 de função de retorno de chamada:
private:
    void XPressed();
    void LeftGripAxis(float AxisValue);
  1. Compile do Visual Studio para iniciar o editor com o novo peão. 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.

Confira também