Kézkövetés az Unrealben

A kézkövetési rendszer egy személy málnát használ, és bemenetként a kézkövetési rendszer. Az összes ujjlenyomat, a teljes kézmozdulatok és kézmozdulatok pozíciója és elforgatása elérhető. Az Unreal 4.26-tól kezdődően a kézkövetés az Unreal HeadMountedDisplay beépülő modulon alapul, és közös API-t használ minden XR-platformon és eszközön. A funkciók mind a Windows Mixed Reality, mind az OpenXR-rendszerekben azonosak.

Kéz pozíciója

A kézfogással nyomon követheti és használhatja a felhasználók kéz- és kézfogását bemenetként, amely a Blueprintsben és a C++-ban is elérhető. Az Unreal API koordinátarendszerként küldi el az adatokat, és az órajeleket szinkronizálja az Unreal Engine-rel.

Kéz váza, rajta egy overlay  Hand Skeleton

A hierarchia felsorolása EHandKeypoint a következő:

A kulcspont ujjlenyomat-beállításainak képe

Ezek az adatok a felhasználók kezében vannak a Get Motion Controller Data függvény használatával. Ez a függvény egy XRMotionControllerData struktúrát ad vissza. Az alábbi tervszk szkriptminta az XRMotionControllerData szerkezetet elemezve közös helyeket szerez be, és mindegyik közös helyen kirajzol egy hibakeresési koordinátarendszert.

A tekintet adatfunkcióját a vonalkövetéshez csatlakoztatva a channel függvény alapján terv

Fontos ellenőrizni, hogy a struktúra érvényes-e, és hogy kéz-e. Ellenkező esetben előfordulhat, hogy nem meghatározott viselkedést kap a pozíciókhoz, a rotációkhoz és a radii tömbökhöz való hozzáférésben.

A kézzel készített testek a Live Link beépülő modullal nak nak ki animációt.

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

  1. A Live Link > a Live Link szerkesztőablak megnyitásához válassza a Window (Ablak) lehetőséget.
  2. Válassza a Forrás lehetőséget, és engedélyezze Windows Mixed Reality kézkövetési forrást

Élő hivatkozás forrása

Miután engedélyezi a forrást és megnyit egy animációs eszközt, bontsa ki az Animáció szakaszt az Előnézeti jelenet lapon is, és tekintse meg a további beállításokat.

Élő hivatkozás animációja

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

Live Link Animation 2

A szerkesztőben alosztályozható:

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

Kézháló

Kézháló mint nyomon követhető geometria

Fontos

A kézhálók nyomon követhető geometriának az OpenXR-beli lehívásához meg kell hívnia a Set Use Hand Mesh with Enabled Tracking Geometry (Set Use Hand Mesh enabled Tracking Geometry) hívását.

Ennek a módnak az engedélyezéséhez hívja meg a Set Use Hand Mesh with Enabled Tracking Geometry (Kézi háló használata engedélyezett követési geometriával) hívását:

A Blueprint of Event Begin Play csatlakoztatva a kézi háló funkció és az engedélyezett kö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.

Kézhálóadatok elérése

Kézháló

A kézhálóadatok eléréséhez a következőt kell elérnie:

  • Válassza ki az ARSessionConfig objektumot, bontsa ki az AR Gépház -> World Mapping beállításokat, és jelölje be a Mesh-adatok létrehozása a nyomon követhető geometriáról jelölőnégyzetet.

Az alapértelmezett hálóparaméterek a következők:

  1. Mesh-adatok használata az eltakarításhoz
  2. Ütközés létrehozása Mesh-adatokhoz
  3. Nav Mesh létrehozása Mesh-adatokhoz
  4. Mesh-adatok renderelése wireframe-ben – hibakeresési paraméter, amely a létrehozott hálót jeleníti meg

Ezeket a paraméterértékeket használja a rendszer a térbeli leképezési háló és a kézháló alapértelmezett értékeiként. Ezeket bármikor módosíthatja a Tervek között, vagy bármilyen háló kódját.

C++ API-referencia

A EEARObjectClassification használatával megkereshetők a kézháló értékei az összes nyomon követhető objektumban.

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

Az alábbi delegáltak akkor vannak meghívva, 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áltkezelők az alábbi függvényaláírást követik:

void UARHandMeshComponent::OnTrackableAdded(UARTrackedGeometry* Added)

A hálóadatokhoz a következőn keresztül férhet UARTrackedGeometry::GetUnderlyingMesh hozzá:

UMRMeshComponent* UARTrackedGeometry::GetUnderlyingMesh()

Blueprint API-referencia

Kézi hálók a tervekben való munkához:

  1. ARTrackableNotify összetevő hozzáadása a Blueprint-aktorhoz

ARTrackable Notify

  1. A Részletek panelen bontsa ki az Események szakaszt.

ARTrackable Notify 2

  1. Írja felül a követéses geometria hozzáadását/frissítését/eltávolítását az eseménynapló következő csomópontjaival Graph:

Az ARTrackable Notifyen

Kézháló vizualizáció az OpenXR-ban

A kézi háló megjelenítésének ajánlott módja, ha az Eposz XRVisualization beépülő modulját és a Microsoft OpenXR beépülőmodult használja.

Ezután a tervszerkesztőben használja a Set Use Hand Mesh függvényt a Microsoft OpenXR beépülő modulból az Enabled XRVisualization paraméterrel:

A blueprint of event begin play connected to set use hand mesh function with enabled xrvisualization mode (Az esemény tervének kezdete a play-hez csatlakoztatva) beállításhoz használható kézi mesh-függvény engedélyezett xrvisualization móddal

A renderelési folyamat kezeléséhez használja az XRVisualization Render Motion Controllert:

A mozgásvezérlő adatkezelő függvény rendereléséhez csatlakoztatott mozgásvezérlő-adatfunkció terve

Az eredmény:

Valós emberi kézre átfedő digitális kéz képe

Ha ennél összetettebb dologra van szüksége, például egy egyéni árnyékolóval rajzolt kézi hálóra, a hálókat nyomon követhető geometriának kell lennie.

Kézi sugárok

A kéz pozíciója 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 a C++ és a Blueprints eszközeire való rámutatásként használható kézi sugárokkal valósítható meg. Megrajzolhat egy sugarat a kézből egy távoli pontra, és az Unreal-sugárkövetés segítségével olyan hologramot választhat, amely egyébként nem lenne elérhető.

Fontos

Mivel minden függvény eredménye minden képkockát megváltoztat, mindegyik hívhatóvá válik. A tiszta és nem megbízható vagy hívható függvényekkel kapcsolatos további információkért tekintse meg a Blueprint felhasználói GUID-azonosítóját a függvényekkel kapcsolatban.

A kéz sugarak adatainak lekért adatokhoz használja az előző szakasz Get Motion Controller Data függvényét. A visszaadott struktúra két paramétert tartalmaz, amelyek segítségével egy kézi sugár hozható létre: Aim Position (Cél pozíciója) és Aim Rotation (Cél elforgatása). Ezek a paraméterek a könyök által irányított sugárt alkotnak. Érdemes azokat felhozni, és megtalálni egy hologramot, amely erre mutat.

Az alábbi példa azt mutatja be, hogyan lehet meghatározni, hogy egy kéz sugara egy widgetbe ütközik-e, és egyéni találati eredményt ad meg:

A mozgásvezérlő adatfunkció lekért terve

Gesztusok

A HoloLens 2 a térbeli kézmozdulatokat követi nyomon, ami azt jelenti, hogy ezeket a kézmozdulatokat rögzítheti bemenetként. A kézmozdulatok nyomon követése egy előfizetési modellen alapul. A "Kézmozdulatok konfigurálása" függvény használatával adja meg az eszköznek, hogy mely kézmozdulatokat szeretné nyomon követni. A kézmozdulatokkal kapcsolatban további részleteket az HoloLens 2. alapszintű használat dokumentumban talál.

Windows Mixed Reality

A kézmozdulatok konfiguráló függvényének konfigurálásához csatlakoztatott esemény alaprajza

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

A Windows beviteli műveletek tervének megjelenítése A Windows beviteli kézmozdulatok beállításainak képernyőképe a  részletek panelen

OpenXR

Az OpenXR-ban a kézmozdulatok eseményeit a bemeneti folyamat követi nyomon. A kézmozdulatok használatával az eszköz automatikusan felismeri a Koppintás és a Kézmozdulatok kézmozdulatokat, a többit azonban nem. OpenXRMsftHandInteraction Select és Mappings névvel vannak elnevezve. Nem kell engedélyeznie az előfizetést, deklarálja az eseményeket a Project Gépház/Engine/Input szolgáltatásban, a következő szerint:

Az OpenXR-műveletleképezések képernyőképe

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

Ha az Irreális fejlesztési utat követi, amit mi fektettünk le, akkor már csak az MRTK alapvető építőelemei vizsgálatának közepén van. Innen folytathatja a következő építőelemre:

Vagy ugorjon a Mixed Reality képességekre és API-kra:

Bármikor visszamehet az Unreal fejlesztési ellenőrzőpontjaira.