HP Reverb G2-controllers in Unreal

Aan de slag

Belangrijk

Unreal Engine 4.26 en OpenXR of SteamVR zijn vereist voor toegang tot de HP Motion Controller-invoegtoepassing. U moet werken met de HP Reverb G2-controllers.

Hp Motion Controller-invoegtoepassing inschakelen

De toewijzingen van het interactieprofiel en de controller bevinden zich in de HP Motion Controller-invoegtoepassing, die moet worden ingeschakeld om de controllertoewijzingen beschikbaar te maken voor het invoersysteem van Unreal.

De OpenXRHPController-invoegtoepassing inschakelen

Een bestaande OpenXR-app overzetten

Als de game geen controllerbindingen bevat voor de HP Mixed Reality Controller, probeert de OpenXR-runtime bestaande bindingen opnieuw toe te kennen aan de actieve controller. In dit geval heeft de game Oculus Touch-bindingen en geen HP Mixed Reality Controller-bindingen.

Bestaande bindingen opnieuw toewijzen wanneer er geen controllerbindingen bestaan

De gebeurtenissen worden nog steeds geactiveerd, maar als de game gebruik moet maken van controllerspecifieke bindingen, zoals de rechtermenuknop, moet het HP Mixed Reality interactieprofiel worden gebruikt. Per actie kunnen meerdere controllerbindingen worden opgegeven om verschillende apparaten beter te ondersteunen.

Meerdere controllerbindingen gebruiken

Toewijzingen voor invoeracties toevoegen

Definieer een nieuwe actie en wijs deze toe aan een van de toetsdrukken in de sectie HP Mixed Reality Controller.

Nieuwe acties en toewijzingen definiƫren

De HP Reverb G2 controller heeft ook een analoge grip, die kan worden gebruikt in de astoewijzingen met de "Squeeze Axis" binding. Er is een afzonderlijke knijpbinding, die moet worden gebruikt voor actietoewijzingen wanneer de gripknop volledig wordt ingedrukt.

De bindingen van de knijpas gebruiken

Invoerevenementen toevoegen

Klik met de rechtermuisknop op een blauwdruk en zoek naar de nieuwe actienamen van het invoersysteem om gebeurtenissen voor deze acties toe te voegen. Hier reageert de blauwdruk op de gebeurtenissen met een afdrukreeks die de huidige knop- en asstatus uitvoert.

Blauwdruk die reageert op gebeurtenissen en de huidige knop- en asstatus uitvoert

Invoer gebruiken

Dezelfde actie- en astoewijzingen in de instellingen voor het invoerproject van de game kunnen worden gebruikt vanuit C++.

  1. Een nieuwe C++-klasse maken met file/new C++ class...

Een nieuwe C++-klasse maken

  1. Een pion maken

Een pion maken

  1. Zoek in de Visual Studio-oplossing van het project de nieuwe pawn-klasse en configureer deze voor invoer.
  • Stel eerst in de constructor AutoPossessPlayer in op de eerste speler om invoer naar de pion te routeren.
AMyPawn::AMyPawn()
{
    PrimaryActorTick.bCanEverTick = true;

    AutoPossessPlayer = EAutoReceiveInput::Player0;
}
  • Bind vervolgens in SetupPlayerInputComponent acties en asgebeurtenissen aan de actienamen uit de invoerinstellingen van het project.
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
    PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
  • Voeg de callback-functies toe aan de klasse:
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);
    }
}
  • Werk de header van het pawn bij met de definities van de callback-functie:
private:
    void XPressed();
    void LeftGripAxis(float AxisValue);
  1. Compileer vanuit Visual Studio om de editor te starten met de nieuwe pion. Sleep de pion vanuit de inhoudsbrowser naar de game en de pion voert nu de callbacks uit wanneer de invoer wordt ingedrukt.

Zie ook