Handtracering in Unreal

Het handtraceringssysteem gebruikt de handpalmen en vingers van een persoon als invoer. Gegevens over positie en draaiing van elke vinger, de hele handpalm en handbewegingen zijn beschikbaar. Vanaf Unreal 4.26 is handtracking gebaseerd op de Unreal HeadMountedDisplay-invoegtoepassing en wordt een algemene API gebruikt op alle XR-platforms en -apparaten. Functionaliteit is hetzelfde voor zowel Windows Mixed Reality als OpenXR-systemen.

Handhouding

Met handhouding kunt u de handen en vingers van uw gebruikers bijhouden en gebruiken als invoer, die toegankelijk zijn in zowel Blauwdrukken als C++. De Unreal-API verzendt de gegevens als coördinaatsysteem, met tikken die zijn gesynchroniseerd met de Unreal Engine.

Hand skeleton image with joints overlayHand Skeleton

De hiërarchie wordt beschreven door EHandKeypoint opsomming:

Image of hand keypoint bluprint options

U kunt al deze gegevens ophalen uit de handen van een gebruiker met behulp van de functie Get Motion Controller Data . Deze functie retourneert een XRMotionControllerData-structuur . Hieronder ziet u een voorbeeldscript voor blauwdruk dat de XRMotionControllerData-structuur parseert om gezamenlijke locaties met de hand te krijgen en een foutopsporingscoördinaatsysteem op de locatie van elke joint tekent.

Blueprint of get gaze data function connected to line trace by channel function

Het is belangrijk om te controleren of de structuur geldig is en of het een hand is. Anders krijgt u mogelijk niet-gedefinieerd gedrag bij toegang tot posities, rotaties en radiimatrices.

Handhoudingen worden blootgesteld aan Animatie met behulp van de Live Link-invoegtoepassing.

Als de invoegtoepassingen Windows Mixed Reality en Live Link zijn ingeschakeld:

  1. Selecteer Window > Live Link om het venster Live Link-editor te openen.
  2. Bron selecteren en Windows Mixed Reality bron voor handtracking inschakelen

Live Link Source

Nadat u de bron hebt ingeschakeld en een animatie-asset hebt geopend, vouwt u de sectie Animatie op het tabblad Voorbeeldscène ook extra opties uit.

Live Link Animation

De handanimatiehiërarchie is hetzelfde als in EWMRHandKeypoint. Animatie kan worden geretargeted met WindowsMixedRealityHandTrackingLiveLinkRemapAsset:

Live Link Animation 2

Het kan ook worden subklassen in de editor:

Live Link Remap

Hand Mesh

Hand Mesh als een getraceerde geometrie

Belangrijk

Als u handmaas als een bijgehouden geometrie in OpenXR wilt krijgen, moet u Set Use Hand Mesh aanroepen met ingeschakelde traceringsgeometrie.

Als u deze modus wilt inschakelen, moet u Set Use Hand Mesh aanroepen met ingeschakelde trackinggeometrie:

Blueprint of event begin play connected to set use hand mesh function with enabled tracking geometry mode

Notitie

Het is niet mogelijk om beide modi tegelijkertijd in te schakelen. Als u een optie inschakelt, wordt de andere automatisch uitgeschakeld.

Toegang tot hand-Mesh-gegevens

Hand Mesh

Voordat u toegang hebt tot hand-mesh-gegevens, moet u het volgende doen:

  • Selecteer uw ARSessionConfig-asset, vouw de AR-Instellingen -> World Mapping-instellingen uit en controleer Mesh Gegevens genereren uit Bijgehouden geometrie.

Hieronder ziet u de standaard mesh-parameters:

  1. Mesh Gegevens gebruiken voor occlusie
  2. Conflict genereren voor Mesh-gegevens
  3. Navigatie Mesh genereren voor Mesh-gegevens
  4. Render Mesh Data in Wireframe : foutopsporingsparameter met gegenereerde mesh

Deze parameterwaarden worden gebruikt als de standaardwaarden voor ruimtelijke toewijzings-mesh en hand-mesh. U kunt deze op elk gewenst moment wijzigen in Blauwdrukken of code voor elk mesh.

Naslaginformatie over C++ API

Gebruik EEARObjectClassification deze functie om hand-mesh-waarden te vinden in alle bijgehouden objecten.

enum class EARObjectClassification : uint8
{
    // Other types
	HandMesh,
};

De volgende gemachtigden worden aangeroepen wanneer het systeem een bijgehouden object detecteert, inclusief een hand-mesh.

class FARSupportInterface
{
    public:
    // Other params
	DECLARE_AR_SI_DELEGATE_FUNCS(OnTrackableAdded)
	DECLARE_AR_SI_DELEGATE_FUNCS(OnTrackableUpdated)
	DECLARE_AR_SI_DELEGATE_FUNCS(OnTrackableRemoved)
};

Zorg ervoor dat uw gemachtigde handlers de onderstaande functiehandtekening volgen:

void UARHandMeshComponent::OnTrackableAdded(UARTrackedGeometry* Added)

U hebt toegang tot mesh-gegevens via het UARTrackedGeometry::GetUnderlyingMeshvolgende:

UMRMeshComponent* UARTrackedGeometry::GetUnderlyingMesh()

Naslaginformatie over blauwdruk-API

Werken met Hand-meshes in Blauwdrukken:

  1. Een ARTrackableNotify-onderdeel toevoegen aan een blauwdrukacteur

ARTrackable Notify

  1. Ga naar het deelvenster Details en vouw de sectie Gebeurtenissen uit.

ARTrackable Notify 2

  1. Overschrijven bij toevoegen/bijwerken/verwijderen van bijgehouden geometrie met de volgende knooppunten in uw Gebeurtenis Graph:

On ARTrackable Notify

Hand Mesh visualisatie in OpenXR

De aanbevolen manier om hand mesh te visualiseren, is het gebruik van de XRVisualization-invoegtoepassing van Epic samen met de Microsoft OpenXR-invoegtoepassing.

Vervolgens moet u in de blauwdrukeditor de functie Hand-Mesh instellen gebruiken vanuit de Microsoft OpenXR-invoegtoepassing met XRVisualization ingeschakeld als parameter:

Blueprint of event begin play connected to set use hand mesh function with enabled xrvisualization mode

Als u het renderingproces wilt beheren, moet u Render Motion Controller van XRVisualization gebruiken:

Blueprint of get motion controller data function connected to render motion controller function

Het resultaat:

Image of digital hand overlayed on a real human hand

Als u iets ingewikkelder nodig hebt, zoals het tekenen van een handgaas met een aangepaste shader, moet u de meshes ophalen als een bijgehouden geometrie.

Handstralen

Het verkrijgen van handhouding werkt voor nauwe interacties, zoals het pakken van objecten of het drukken op knoppen. Soms moet u echter werken met hologrammen die ver van uw gebruikers zijn verwijderd. Dit kan worden bereikt met handstralen, die kunnen worden gebruikt als aanwijsapparaten in zowel C++ als Blauwdrukken. U kunt een straal van uw hand naar een ver punt tekenen en, met hulp van Unreal ray-tracering, een hologram selecteren dat anders buiten bereik zou zijn.

Belangrijk

Omdat alle functieresultaten elk frame wijzigen, worden ze allemaal aangeroepen. Zie de guid van de Blauwdrukgebruiker voor functies voor meer informatie over pure en onzuivere of aanroepbare functies.

Als u de gegevens voor de handstralen wilt ophalen, moet u de functie Get Motion Controller Data uit de vorige sectie gebruiken. De geretourneerde structuur bevat twee parameters die u kunt gebruiken om een handstraal te maken : Positie en doelrotatie. Deze parameters vormen een straal die wordt geleid door uw elleboog. U moet ze nemen en een hologram vinden dat wordt gericht door.

Hieronder ziet u een voorbeeld van het bepalen of een handstraal een Widget raakt en een aangepast hitresultaat instelt:

Blueprint of get motion controller data function

Bewegingen

De HoloLens 2 houdt ruimtelijke bewegingen bij, wat betekent dat u deze bewegingen kunt vastleggen als invoer. Beweging bijhouden is gebaseerd op een abonnementsmodel. Gebruik de functie Gebaren configureren om het apparaat te laten weten welke bewegingen u wilt bijhouden. Meer informatie over bewegingen vindt u in het document HoloLens 2 Basisgebruik.

Windows Mixed Reality

Blueprint of event begin play connected to configure gestures function

Vervolgens moet u code toevoegen om u te abonneren op de volgende gebeurtenissen:

Blueprint of Windows spatial input hold, tap, and left manipulation gesturesScreenshot of Windows spatial input tap gesture options in the details panel

OpenXR

In OpenXR worden gebarengebeurtenissen bijgehouden via de invoerpijplijn. Met behulp van handinteractie kan het apparaat tik- en wachtbewegingen automatisch herkennen, maar niet de anderen. Ze hebben de naam OpenXRMsftHandInteraction Select and Grip mappings. U hoeft het abonnement niet in te schakelen. U moet de gebeurtenissen declareren in Project Instellingen/Engine/Input, net als deze:

Screenshot of the OpenXR action mappings

Volgende controlepunt voor ontwikkeling

Als u het Unreal-ontwikkelingstraject volgt dat we hebben opgesteld, bevindt u zich midden in het verkennen van de basisbouwstenen van MRTK. Vanaf hier kunt u doorgaan naar de volgende bouwsteen:

Of ga naar Mixed Reality platformmogelijkheden en API's:

U kunt altijd op elk gewenst moment teruggaan naar de Unreal development checkpoints .