Térbeli leképezés az Unrealben

A térbeli leképezés lehetővé teszi objektumok fizikai felületeken való elhelyezését a valós világban. Amikor a HoloLens körül a világ le van képezve, a hologramok valóságosabbnak tűnnek a felhasználó számára. A térbeli leképezés a mélységi jelek kihasználásával rögzíti az objektumokat a felhasználó világában, és segít meggyőzni őket arról, hogy ezek a hologramok valójában a saját térükben vannak. A térben lebegő vagy a felhasználóval együtt mozgó hologramok nem lesznek valósak, ezért mindig a kényelem érdekében szeretné elhelyezni az elemeket, amikor csak lehetséges.

A térbeli leképezés minőségéről, elhelyezéséről, elzáródásáról, rendereléséről és egyebekről a Térbeli leképezési dokumentumban talál további információt.

A Microsoft OpenXR beépülő modult le kell tölteni a térbeli leképezés használatához, amely elérhető az Unreal Marketplace-en vagy a GitHubon.

Térbeli leképezés engedélyezése

Térbeli leképezés engedélyezése a HoloLensen:

  • Nyissa meg a Projektbeállítások szerkesztése > elemet , és görgessen le a Platformok szakaszhoz.
    • Válassza a HoloLens lehetőséget, és ellenőrizze a térbeli észlelést.

Képernyőkép a HoloLens-projekt beállításainak képességeiről, kiemelt térbeli észleléssel

A térbeli leképezés és az MRMesh hibakeresése egy HoloLens-játékban:

  1. Nyissa meg az ARSessionConfig fájlt, és bontsa ki az ARSettings > World Mapping szakaszt.

  2. Jelölje be a Mesh-adatok létrehozása a követett geometriából jelölőnégyzetet, amely arra utasítja a HoloLens beépülő modult, hogy aszinkron módon kezdje el lekötni a térbeli leképezési adatokat, és felszínre hozza azOkat az Unrealbe az MRMesh használatával.

  3. Jelölje be a Hálóadatok renderelése drótvázban jelölőnégyzetet az MRMesh összes háromszögének fehér drótvázszerkezetének megjelenítéséhez.

A Spatial Anchors Store készen áll

Térbeli leképezés futásidőben

A térbeli leképezési futtatókörnyezet viselkedésének frissítéséhez az alábbi paramétereket módosíthatja:

  • Nyissa meg a Projektbeállítások szerkesztése > elemet, görgessen le a Platformok szakaszhoz, és válassza a HoloLens > Térbeli leképezés lehetőséget:

Térbeli horgonyok projektbeállításai

  • A maximális háromszögek köbméterenként frissítik a térbeli leképezési hálóban lévő háromszögek sűrűségét.
  • A Spatial Meshing Volume Size a lejátszó körüli kocka mérete a térbeli leképezési adatok rendereléséhez és frissítéséhez.
    • Ha a várt alkalmazás-futtatókörnyezet várhatóan nagy lesz, ennek az értéknek nagynak kell lennie ahhoz, hogy megfeleljen a valós helynek. Az érték kisebb lehet, ha az alkalmazásnak csak a felhasználó körüli felületeken kell hologramokat elhelyeznie. Ahogy a felhasználó körbejárja a világot, a térbeli leképezési kötet velük együtt mozog.

Az MRMesh használata

Először el kell indítania a térbeli leképezést:

A ToggleARCapture függvény tervrajza kiemelt térbeli leképezési rögzítési típussal

Miután rögzítette a térbeli leképezést, javasoljuk, hogy kapcsolja ki a térbeli leképezést. A térbeli leképezés elvégezhető egy bizonyos idő elteltével, vagy ha az egyes irányokban végzett raycastok ütközéseket ad vissza az MRMesh-sel szemben.

Az MRMesh-hez való hozzáférés biztosítása futásidőben:

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

Spatial Anchors AR Trackable Notify

  1. Válassza az ARTrackableNotify összetevőt , és bontsa ki az Események szakaszt a Részletek panelen.
    • Válassza ki a + figyelni kívánt események gombját.

Spatial Anchors-események

Ebben az esetben az On Add Tracked Geometry eseményt figyeljük, amely a térbeli leképezési adatoknak megfelelő érvényes világhálókat keresi. Az események teljes listáját az UARTrackableNotify összetevő API-ban találja.

A háló anyagát módosíthatja a Tervesemény-grafikonon vagy a C++-ban. Az alábbi képernyőképen a Terv útvonal látható:

Példa térbeli horgonyokra

Térbeli leképezés c++ nyelven

A játék build.cs fájljában adja hozzá az AugmentedReality és az MRMesh értéket a PublicDependencyModuleNames listához:

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

Az MRMesh eléréséhez iratkozzon fel az OnTrackableAdded meghatalmazottakra:

#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();
    }
}

Megjegyzés

A frissített és eltávolított eseményekhez hasonló meghatalmazottak tartoznak, AddOnTrackableUpdatedDelegate_Handle és AddOnTrackableRemovedDelegate_Handle .

Az események teljes listáját az UARTrackedGeometry API-ban találja.

Lásd még