Mapowanie przestrzenne w nierealnym

Mapowanie przestrzenne umożliwia umieszczanie obiektów na powierzchniach fizycznych w świecie rzeczywistym. Gdy świat wokół urządzenia HoloLens jest mapowany, hologramy wydają się bardziej realne dla użytkownika. Mapowanie przestrzenne zakotwicza również obiekty w świecie użytkownika, wykorzystując sygnały głębokości, pomagając przekonać ich, że te hologramy są rzeczywiście w ich przestrzeni. Hologramy unoszące się w przestrzeni lub poruszające się z użytkownikiem nie będą czuć się tak prawdziwe, więc zawsze chcesz umieścić elementy dla komfortu, gdy jest to możliwe.

Więcej informacji na temat jakości mapowania przestrzennego, umieszczania, okluzji, renderowania i innych informacji można znaleźć w dokumencie Mapowanie przestrzenne .

Wtyczkę Microsoft OpenXR należy pobrać, aby używać mapowania przestrzennego dostępnego w witrynie Unreal Marketplace lub GitHub.

Włączanie mapowania przestrzennego

Aby włączyć mapowanie przestrzenne na urządzeniu HoloLens:

  • Otwórz pozycję Edytuj > ustawienia projektu i przewiń w dół do sekcji Platformy .
    • Wybierz pozycję HoloLens i zaznacz pozycję Postrzeganie przestrzenne.

Zrzut ekranu przedstawiający możliwości ustawień projektu HoloLens z wyróżnioną percepcją przestrzenną

Aby wybrać mapowanie przestrzenne i debugować narzędzie MRMesh w grze HoloLens:

  1. Otwórz plik ARSessionConfig i rozwiń sekcję ARSettings World Mapping (Mapowanie świata arSettings>).

  2. Zaznacz pole wyboru Generate Mesh Data from Tracked Geometry (Generowanie danych siatki na podstawie śledzonej geometrii), która informuje wtyczkę HoloLens o rozpoczęciu asynchronicznego pobierania danych mapowania przestrzennego i uwidocznieniu ich w aplikacji Unreal za pośrednictwem narzędzia MRMesh.

  3. Zaznacz pole wyboru Render Mesh Data in Wireframe (Dane siatki renderowania w ramce szkieletowej ), aby wyświetlić biały kontur szkieletowy każdego trójkąta w narzędziu MRMesh.

Magazyn usługi Spatial Anchors gotowy

Mapowanie przestrzenne w czasie wykonywania

Aby zaktualizować zachowanie środowiska uruchomieniowego mapowania przestrzennego, można zmodyfikować następujące parametry:

  • Otwórz pozycję Edytuj > ustawienia projektu, przewiń w dół do sekcji Platformy i wybierz pozycję Mapowanie przestrzenne urządzenia HoloLens>:

Ustawienia projektu usługi Spatial Anchors

  • Maksymalna liczba trójkątów na miernik sześcienny aktualizuje gęstość trójkątów w siatce mapowania przestrzennego.
  • Rozmiar woluminu usługi Spatial Meshing to rozmiar modułu wokół odtwarzacza do renderowania i aktualizowania danych mapowania przestrzennego.
    • Jeśli oczekiwane środowisko uruchomieniowe aplikacji ma być duże, ta wartość może być duża, aby dopasować je do rzeczywistej przestrzeni. Wartość może być mniejsza, jeśli aplikacja musi umieścić hologramy na powierzchniach natychmiast wokół użytkownika. Gdy użytkownik przechodzi po świecie, wolumin mapowania przestrzennego zostanie przeniesiony z nimi.

Praca z narzędziem MRMesh

Najpierw należy uruchomić mapowanie przestrzenne:

Strategia funkcji ToggleARCapture z wyróżnionym typem przechwytywania mapowania przestrzennego

Po przechwyceniu mapowania przestrzennego dla przestrzeni zalecamy wyłączenie mapowania przestrzennego. Mapowanie przestrzenne może zostać ukończone po upływie określonego czasu lub gdy raycasts w każdym kierunku zwróci kolizje z mrMesh.

Aby uzyskać dostęp do zestawu NARZĘDZI MRMesh w czasie wykonywania:

  1. Dodaj składnik ARTrackableNotify do aktora strategii.

Spatial Anchors AR Trackable Notify

  1. Wybierz składnik ARTrackableNotify i rozwiń sekcję Zdarzenia w panelu Szczegóły .
    • + Wybierz przycisk dla zdarzeń, które chcesz monitorować.

Zdarzenia usługi Spatial Anchors

W takim przypadku monitorowane jest zdarzenie Przy dodawaniu śledzonej geometrii , które wyszukuje prawidłowe siatki świata pasujące do danych mapowania przestrzennego. Pełną listę zdarzeń można znaleźć w interfejsie API składnika UARTrackableNotify .

Materiał siatki można zmienić w grafie zdarzeń strategii lub w języku C++. Poniższy zrzut ekranu przedstawia trasę strategii:

Przykład usługi Spatial Anchors

Mapowanie przestrzenne w języku C++

W pliku build.cs swojej gry dodaj do listy PublicDependencyModuleNames wartości AugmentedReality i MRMesh :

PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",    
        "EyeTracker",
        "AugmentedReality",
        "MRMesh"
});

Aby uzyskać dostęp do zestawu NARZĘDZI MRMesh, subskrybuj delegatów OnTrackableAdded :

#include "ARBlueprintLibrary.h"
#include "MRMeshComponent.h"

void AARTrackableMonitor::BeginPlay()
{
    Super::BeginPlay();

    // Subscribe to Tracked Geometry delegates
    UARBlueprintLibrary::AddOnTrackableAddedDelegate_Handle(
        FOnTrackableAddedDelegate::CreateUObject(this, &AARTrackableMonitor::OnTrackableAdded)
    );
}

void AARTrackableMonitor::OnTrackableAdded(UARTrackedGeometry* Added)
{
    // When tracked geometry is received, check that it's from spatial mapping
    if(Added->GetObjectClassification() == EARObjectClassification::World)
    {
        UMRMeshComponent* MRMesh = Added->GetUnderlyingMesh();
    }
}

Uwaga

Istnieją podobne delegaty dla zdarzeń zaktualizowanych i usuniętych, odpowiednio AddOnTrackableUpdatedDelegate_Handle i AddOnTrackableRemovedDelegate_Handle .

Pełną listę zdarzeń można znaleźć w interfejsie API UARTrackedGeometry .

Zobacz też