Kézkövetés az Unrealben

A kézkövető rendszer egy személy tenyerét és ujjait használja bemenetként. Minden ujj, a teljes tenyér és kézmozdulat helyzetéről és elforgatásáról rendelkezésre állnak adatok. Az Unreal 4.26-tól kezdve a kézkövetés az Unreal HeadMountedDisplay beépülő modulon alapul, és egy közös API-t használ az összes XR platformon és eszközön. A Windows Mixed Reality és az OpenXR rendszerek esetében is ugyanaz a funkció.

Kézi póz

A kézi póz lehetővé teszi a felhasználók kezeinek és ujjainak nyomon követését és használatát bemenetként, amely a Blueprintsben és a C++-ban is elérhető. Az Unreal API koordinátarendszerként küldi el az adatokat az Unreal Engine-rel szinkronizált kullancsokkal.

Kézváz képe ízületekkel átfedőkézváz

A hierarchiát enumerálás ismerteti EHandKeypoint :

A kulcspont bluprint beállításainak képe

Ezeket az adatokat a felhasználó kezéből is lekérheti a Mozgásvezérlő adatainak lekérése funkcióval. Ez a függvény egy XRMotionControllerData struktúrát ad vissza. Az alábbiakban egy tervmintaszkript látható, amely elemzi az XRMotionControllerData struktúrát, hogy lekérje a közös helyeket, és egy hibakeresési koordinátarendszert rajzoljon az egyes illesztések helyére.

A csatornafüggvény szerinti vonalkövetéshez csatlakoztatott tekintetadat-függvény tervrajza

Fontos ellenőrizni, hogy a struktúra érvényes-e, és hogy kézről van-e szó. Ellenkező esetben meghatározatlan viselkedést kaphat a pozíciókhoz, a rotációkhoz és a radiitömbökhöz való hozzáférésben.

A kézi pózok a Live Link beépülő modullal érhetők el az animációk számára.

Ha a Windows Mixed Reality és a Live Link beépülő modul engedélyezve van:

  1. Válassza az Élő hivatkozás ablak > lehetőséget a Live Link szerkesztőablak megnyitásához.
  2. Válassza a Forrás lehetőséget, és engedélyezze Windows Mixed Reality Hand Tracking Source (Kézkövetési forrás) lehetőséget

Élő kapcsolat forrása

Miután engedélyezte a forrást, és megnyitott egy animációs objektumot, bontsa ki az Animáció szakaszt a Jelenet előnézete lapon is, és tekintse meg a további beállításokat.

Élő hivatkozás animációja

A kézanimáció hierarchiája megegyezik a következővel EWMRHandKeypoint: . Az animáció a WindowsMixedRealityHandTrackingLiveLinkRemapAsset használatával újracélozható:

Live Link Animation 2

A szerkesztőben is alosztályozhat:

Élő hivatkozás újratérképe

Kézi háló

Fontos

A kézi hálóhoz OpenXR szükséges.

A Microsoft OpenXR beépülő modult kell használni, amely az Unreal Marketplace-en vagy a GitHubon érhető el.

Hand Mesh mint tracked Geometry

Fontos

Az OpenXR-ben a kézi hálószemek nyomon követett geometriaként való lekéréséhez meg kell hívnia a Set Use Hand Mesh with Enabled Tracking Geometry (Kézi háló használata engedélyezett nyomkövetési geometriával) meghívását.

Ennek a módnak az engedélyezéséhez hívja meg a Set Use Hand Mesh with Enabled Tracking Geometry (A Hand Mesh használata engedélyezett nyomkövetési geometriával) lehetőséget:

Az eseménylejátszás tervrajza csatlakoztatva van a kézi háló funkció engedélyezésével rendelkező nyomkövetési geometria mód beállításához

Megjegyzés

Nem lehetséges, hogy mindkét mód egyszerre legyen engedélyezve. Ha engedélyezi az egyiket, a másik automatikusan le lesz tiltva.

A Hand Mesh-adatok elérése

Kézi háló

A kézi háló adatainak elérése előtt a következőket kell elvégeznie:

  • Válassza ki az ARSessionConfig objektumot, bontsa ki az AR-beállítások –> Világleképezési beállítások elemet, és jelölje be a Hálóadatok létrehozása a követett geometriából jelölőnégyzetet.

Az alábbiakban az alapértelmezett hálóparaméterek találhatók:

  1. Mesh-adatok használata az occlusionhoz
  2. Ütközés generálása Mesh-adatokhoz
  3. Nav Mesh létrehozása Mesh-adatokhoz
  4. Mesh-adatok renderelése Drótvázban – a létrehozott hálót megjelenítő hibakeresési paraméter

A rendszer ezeket a paraméterértékeket használja a térbeli leképezési háló és a kézi háló alapértelmezett értékeiként. Ezeket bármikor módosíthatja a Tervek vagy bármely háló kódjában.

C++ API-referencia

A segítségével EEARObjectClassification kézzel készített hálóértékeket kereshet az összes nyomon követhető objektumban.

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

A rendszer akkor hívja meg a következő meghatalmazottakat, ha a rendszer bármilyen nyomon követhető objektumot észlel, beleértve a kézi hálót is.

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

Győződjön meg arról, hogy a delegált kezelők az alábbi függvényaírást követik:

void UARHandMeshComponent::OnTrackableAdded(UARTrackedGeometry* Added)

A hálóadatokat a következőn keresztül érheti UARTrackedGeometry::GetUnderlyingMeshel:

UMRMeshComponent* UARTrackedGeometry::GetUnderlyingMesh()

Blueprint API-referencia

Kézi hálók használata a tervekben:

  1. ARTrackableNotify összetevő hozzáadása terv aktorhoz

ARTrackable Notify

  1. Lépjen a Részletek panelre, és bontsa ki az Események szakaszt.

ARTrackable Notify 2

  1. Írja felül a Követett geometria hozzáadása/frissítése/eltávolítása parancsot az eseménygrafikon következő csomópontjaival:

On ARTrackable Notify

Hand Mesh-vizualizáció az OpenXR-ben

A kézháló megjelenítésének ajánlott módja az Epic XRVisualization beépülő moduljának használata a Microsoft OpenXR beépülő modullal együtt.

Ezután a tervszerkesztőben az Enabled XRVisualization paraméterrel használja a Microsoft OpenXR beépülő modulHand Mesh használata beállítása függvényét:

Az esemény tervrajza csatlakozva elindítja a lejátszást, és beállítja a hand mesh függvény használatát az engedélyezett xrvisualizációs móddal

A renderelési folyamat kezeléséhez az XRVisualization renderelési mozgásvezérlőt kell használnia:

A mozgásvezérlő renderelési funkciójához csatlakoztatott mozgásvezérlő-adatfüggvény tervrajza

Az eredmény:

Egy valódi emberi kézre ráfedő digitális kéz képe

Ha valami összetettebbre van szüksége, például egy kézi hálót egyéni árnyékolóval rajzolni, akkor a hálókat nyomon követett geometriaként kell beszereznie.

Kézi sugarak

A kéz pózolása olyan szoros interakciókhoz használható, mint az objektumok megragadása vagy a gombok lenyomása. Néha azonban olyan hologramokkal kell dolgoznia, amelyek távol vannak a felhasználóktól. Ez kézi sugarakkal is elvégezhető, amelyek a C++ és a Blueprints mutatóeszközeiként is használhatók. Rajzolhat egy sugarat a kezéből egy távoli pontra, és az Unreal ray tracing segítségével kiválaszthat egy hologramot, amely egyébként elérhetetlen lenne.

Fontos

Mivel az összes függvényeredmény minden keretet módosít, az összes képkocka hívhatóvá vált. A tiszta és nem kifogástalan vagy hívható függvényekkel kapcsolatos további információkért tekintse meg a blueprint felhasználói guidját a függvényeken.

A kézsugarak adatainak lekéréséhez használja a Mozgásvezérlő adatainak lekérése függvényt az előző szakaszban. A visszaadott struktúra két paramétert tartalmaz, amellyel kézi sugárt hozhat létre – a célpozíciót és a célforgatást. Ezek a paraméterek egy sugarat képeznek, amelyet a könyöke irányít. Vegye őket, és keresse meg a hologramot, amely rámutat.

Az alábbiakban egy példát mutatunk be annak meghatározására, hogy egy kézi sugár eléri-e a widgetet, és egyéni találati eredményt ad-e:

A mozgásvezérlő adatfüggvényének tervrajza

Gesztusok

A HoloLens 2 nyomon követi a térbeli kézmozdulatokat, ami azt jelenti, hogy ezeket a kézmozdulatokat bemenetként rögzítheti. A kézmozdulatkövetés egy előfizetési modellen alapul. A "Kézmozdulatok konfigurálása" függvénnyel jelezheti az eszköznek, hogy mely kézmozdulatokat szeretné nyomon követni. A kézmozdulatokkal kapcsolatos további részletek a HoloLens 2 Alapszintű használat dokumentum.

Windows Mixed Reality

Az esemény tervrajza a kézmozdulatok függvény konfigurálásához csatlakozva kezdi el a lejátszást

Ezután kódot kell hozzáadnia a következő eseményekre való feliratkozáshoz:

A Windows térbeli beviteli kézmozdulatainak tervrajza, koppintás és bal oldali manipulációs kézmozdulatokképernyőképe a Windows térbeli beviteli koppintás kézmozdulatainak beállításairól a részletek panelen

OpenXR

Az OpenXR-ben a kézmozdulat-események nyomon követése a bemeneti folyamaton keresztül történik. A kézművelet használatával az eszköz automatikusan felismeri a Koppintás és a Kéztartás kézmozdulatokat, a többit azonban nem. Ezek neve OpenXRMsftHandInteraction Select and Grip mappings ( OpenXRMsftHandInteraction Select and Grip mappings). Nem kell engedélyeznie az előfizetést, deklarálnia kell az eseményeket a Project Settings/Engine/Input fájlban, a következőképpen:

Képernyőkép az OpenXR műveletleképezésekről

Következő fejlesztési ellenőrzőpont

Ha az Általunk meghatározott Unreal fejlesztési utat követi, akkor az MRTK alapvető építőelemeinek felfedezése közben jár. Innen továbbléphet a következő építőelemre:

Vagy ugorjon Mixed Reality platform képességeire és API-ira:

Bármikor visszatérhet az Unreal fejlesztési ellenőrzőpontjaihoz .