Controller HP Reverb G2 in Unreal

Introduzione

Importante

Unreal Engine 4.26 e OpenXR o SteamVR è necessario per accedere al plug-in HP Motion Controller che sarà necessario usare i controller HP Reverb G2.

Abilitazione del plug-in HP Motion Controller

I mapping del profilo di interazione e del controller si trovano nel plug-in HP Motion Controller, che deve essere abilitato per esporre i mapping del controller al sistema di input di Unreal.

Abilitazione del plug-in OpenXRHPController

Conversione di un'app OpenXR esistente

Se nel gioco non esistono associazioni di controller per HP Realtà mista Controller, il runtime OpenXR tenterà di rieseguire il mapping delle associazioni esistenti al controller attivo. In questo caso, il gioco ha associazioni Oculus Touch e nessun binding HP Realtà mista Controller.

Modifica del mapping delle associazioni esistenti quando non esistono associazioni controller

Gli eventi verranno comunque attivati, ma se il gioco deve usare associazioni specifiche del controller, ad esempio il pulsante di menu destro, è necessario usare il profilo di interazione hp Realtà mista. È possibile specificare più associazioni di controller per azione per supportare meglio dispositivi diversi.

Uso di più associazioni controller

Aggiunta di mapping delle azioni di input

Definire una nuova azione ed eseguire il mapping a uno dei tasti nella sezione HP Realtà mista Controller.

Definizione di nuove azioni e mapping

Il controller HP Reverb G2 ha anche un grip analogico, che può essere usato nei mapping dell'asse con l'associazione "Squeeze Axis". È presente un'associazione Di compressione separata, che deve essere usata per i mapping delle azioni quando il pulsante di controllo viene premuto completamente.

Utilizzo delle associazioni dell'asse Di compressione

Aggiunta di eventi di input

Fare clic con il pulsante destro del mouse su un progetto e cercare i nuovi nomi di azione dal sistema di input per aggiungere eventi per queste azioni. In questo caso il progetto risponde agli eventi con una stringa di stampa che restituisce lo stato corrente del pulsante e dell'asse.

Progetto che risponde agli eventi e restituisce lo stato corrente del pulsante e dell'asse

Uso dell'input

Gli stessi mapping di azioni e assi nelle impostazioni del progetto di input del gioco possono essere usati da C++.

  1. Creare una nuova classe C++ con file/nuova classe C++...

Creazione di una nuova classe C++

  1. Creare un pedone

Creazione di un pedone

  1. Nella soluzione Visual Studio del progetto trovare la nuova classe Pawn e configurarla per l'input.
  • Innanzitutto, nel costruttore impostare AutoPossessPlayer sul primo giocatore per instradare l'input al pawn.
AMyPawn::AMyPawn()
{
    PrimaryActorTick.bCanEverTick = true;

    AutoPossessPlayer = EAutoReceiveInput::Player0;
}
  • Quindi, in SetupPlayerInputComponent associare azioni ed eventi dell'asse ai nomi delle azioni dalle impostazioni di input del progetto.
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
    PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
  • Aggiungere le funzioni di callback alla 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);
    }
}
  • Aggiornare l'intestazione di Pawn con le definizioni di funzione di callback:
private:
    void XPressed();
    void LeftGripAxis(float AxisValue);
  1. Compilare da Visual Studio per avviare l'editor con il nuovo pawn. Trascinare e rilasciare il pawn dal browser del contenuto nel gioco e il pawn eseguirà ora i callback quando viene premuto l'input.

Vedi anche