Sledování rukou v Unreal

Systém sledování rukou používá jako vstup dlaně a prsty osoby. K dispozici jsou data o poloze a otočení každého prstu, celé dlaně a gest rukou. Od verze Unreal 4.26 je sledování rukou založené na modulu plug-in Unreal HeadMountedDisplay a používá společné rozhraní API na všech platformách a zařízeních XR. Funkce jsou stejné pro systémy Windows Mixed Reality i OpenXR.

Pozice rukou

Pozice rukou umožňuje sledovat a používat ruce a prsty uživatelů jako vstup, který je přístupný jak v podrobných plánech, tak v jazyce C++. Unreal API odesílá data jako souřadnicový systém s zaškrtnutím synchronizovaným s Unreal Engine.

Obrázek skeletu rukou s překryvnými spojiHand Skeleton

Hierarchie je popsána výčtem EHandKeypoint :

Obrázek možností bluprintu ručně zarážky

Všechna tato data můžete získat z rukou uživatele pomocí funkce Získat data kontroleru pohybu . Tato funkce vrátí strukturu XRMotionControllerData . Níže je ukázkový skript podrobného plánu, který parsuje strukturu XRMotionControllerData, aby získal umístění spojení rukou a nakresluje ladicí souřadnicový systém v umístění každého spojení.

Podrobný plán datové funkce get gaze připojené k funkci trasování čar podle kanálu

Je důležité zkontrolovat, jestli je struktura platná a jestli je to ruka. V opačném případě můžete získat nedefinované chování v přístupu k pozicím, otočením a polím poloměrů.

Pozice rukou jsou vystaveny animaci pomocí modulu plug-in Live Link.

Pokud jsou povolené moduly plug-in Windows Mixed Reality a Live Link:

  1. Výběrem možnosti Windows > Live Link otevřete okno editoru Live Link.
  2. Vyberte zdroj a povolte Windows Mixed Reality zdroj sledování rukou.

Zdroj live linku

Po povolení zdroje a otevření animačního assetu rozbalte oddíl Animace na kartě Náhled scény a podívejte se také na další možnosti.

Animace živého odkazu

Hierarchie ručních animací je stejná jako v EWMRHandKeypointnástroji . Animaci je možné změnit pomocí windowsMixedRealityHandTrackingLiveLinkRemapAsset:

Animace živého propojení 2

Může být také podtřídou v editoru:

Přemapování živého odkazu

Ruční síťovina

Důležité

Ruční síť vyžaduje OpenXR.

Musí se použít modul plug-in Microsoft OpenXR, který je dostupný na Webu Unreal Marketplace nebo Na GitHubu.

Ruční síť jako trackovaná geometrie

Důležité

Získání ručních sítí jako sledované geometrie v OpenXR vyžaduje volání nastavení použít síť rukou s povolenou geometrií sledování.

Pokud chcete tento režim povolit, měli byste volat Nastavit použít síť rukou s povolenou geometrií sledování:

Podrobný plán události zahájení přehrávání připojené k nastavení použití funkce hand mesh s povoleným režimem geometrie sledování

Poznámka

Není možné povolit oba režimy současně. Pokud povolíte jeden, druhý se automaticky zakáže.

Přístup k datům hand mesh

Ruční síťovina

Než budete moct získat přístup k datům z ruční sítě, budete muset:

  • Vyberte prostředek ARSessionConfig , rozbalte nastavení Ar Settings –> World Mapping a zaškrtněte políčko Generovat data sítě ze sledované geometrie.

Níže jsou uvedeny výchozí parametry sítě:

  1. Použití dat sítě pro okluzi
  2. Generování kolize pro data sítě
  3. Generování navigační sítě pro data sítě
  4. Vykreslení dat sítě v wireframe – parametr ladění, který zobrazuje vygenerovanou síť

Tyto hodnoty parametrů se používají jako výchozí hodnoty sítě prostorového mapování a sítě rukou. Můžete je kdykoli změnit v podrobných plánech nebo kódu pro libovolnou síť.

Referenční informace k rozhraní API jazyka C++

Slouží EEARObjectClassification k vyhledání hodnot ručních sítí ve všech sledovatelných objektech.

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

Následující delegáti se volají, když systém zjistí jakýkoli sledovatelný objekt, včetně ruční sítě.

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

Ujistěte se, že obslužné rutiny delegáta dodržují podpis funkce níže:

void UARHandMeshComponent::OnTrackableAdded(UARTrackedGeometry* Added)

K datům sítě můžete přistupovat prostřednictvím :UARTrackedGeometry::GetUnderlyingMesh

UMRMeshComponent* UARTrackedGeometry::GetUnderlyingMesh()

Referenční informace k rozhraní API podrobného plánu

Práce s mřížkami rukou v podrobných plánech:

  1. Přidání komponenty ARTrackableNotify do objektu Actor podrobného plánu

ARTrackable Notify

  1. Přejděte na panel Podrobnosti a rozbalte oddíl Události .

ArTrackable Notify 2

  1. Při přidání, aktualizaci nebo odebrání sledované geometrie přepište následující uzly v grafu událostí:

Při oznámení ARTrackable

Vizualizace hand mesh v OpenXR

Doporučeným způsobem, jak vizualizovat síť rukou, je použít modul plug-in XRVisualization společnosti Epic společně s modulem plug-in Microsoft OpenXR.

Pak byste v editoru podrobného plánu měli jako parametr použít funkci Set Use Hand Mesh z modulu plug-in Microsoft OpenXR s povolenou funkcí XRVisualization :

Podrobný plán události zahájení přehrávání připojené k nastavení použití funkce hand mesh s povoleným režimem xrvisualization

Ke správě procesu vykreslování byste měli použít Render Motion Controller z XRVisualization:

Podrobný plán funkce získat data ovladače pohybu připojené k funkci ovladače pohybu vykreslení

Výsledek:

Obrázek digitální ruky překryvné na skutečné lidské ruce

Pokud potřebujete něco složitějšího, například nakreslit ruční síť pomocí vlastního shaderu, musíte mít sítě jako sledovanou geometrii.

Paprsky rukou

Získání pozice rukou funguje při těsné interakci, jako je uchopení objektů nebo stisknutí tlačítek. Někdy ale potřebujete pracovat s hologramy, které jsou daleko od uživatelů. Toho lze dosáhnout pomocí paprsků rukou, které se dají použít jako polohovací zařízení v C++ i v podrobných plánech. Můžete nakreslit paprsek z ruky do vzdáleného bodu a s určitou pomocí z unreal ray tracingu vybrat hologram, který by jinak byl mimo dosah.

Důležité

Vzhledem k tomu, že všechny výsledky funkce mění každý rámec, je možné je volat. Další informace o čistých a nečistých nebo volatelných funkcích najdete v tématu Identifikátor GUID uživatele podrobného plánu pro funkce.

Pokud chcete získat data pro paprsky rukou, měli byste použít funkci Získat data kontroleru pohybu z předchozí části. Vrácená struktura obsahuje dva parametry, které můžete použít k vytvoření ručního paprsku – pozici cíle a otočení cíle. Tyto parametry tvoří paprsek směrovaný vaším loktem. Měli byste je vzít a najít hologram, který ukazuje.

Níže je příklad určení, jestli paprsek ruky zasáhne widget, a nastavení vlastního výsledku hitu:

Podrobný plán funkce získat data kontroleru pohybu

Gesta

HoloLens 2 sleduje prostorová gesta, což znamená, že tato gesta můžete zachytit jako vstup. Sledování gest je založené na modelu předplatného. Pomocí funkce Konfigurovat gesta byste měli zařízení informovat, která gesta chcete sledovat. Další podrobnosti o gestech najdete v dokumentu HoloLens 2 Základní používání.

Windows Mixed Reality

Podrobný plán zahájení přehrávání události připojené ke konfiguraci funkce gest

Pak byste měli přidat kód pro přihlášení k odběru následujících událostí:

Podrobný plán gest pro manipulaci s prostorovými vstupy ve Windows, přidržení, klepnutí a levým pohybemSnímek obrazovky s prostorovou vstupou Ve Windows – možnosti gest na panelu podrobností

OpenXR

V OpenXR se události gest sledují prostřednictvím vstupního kanálu. Pomocí interakce rukou může zařízení automaticky rozpoznat gesta klepnutí a podržení, ale ne ostatní. Mají názvy Mapování OpenXRMsftHandInteraction Select a Grip. Předplatné nemusíte povolovat. Události byste měli deklarovat v nastavení projektu, modulu nebo vstupu, stejně jako v tomto případě:

Snímek obrazovky s mapováním akcí OpenXR

Další vývojový kontrolní bod

Pokud sledujete cestu unreal developmentu, kterou jsme vytyložili, jste uprostřed zkoumání základních stavebních bloků MRTK. Odtud můžete pokračovat k dalšímu stavebnímu bloku:

Nebo přejděte na Mixed Reality možností platformy a rozhraní API:

Ke kontrolním bodům Unreal Development se můžete kdykoli vrátit.