Jelenetértelmezés az Unrealben
A jelenetfelismerés olyan síkokat biztosít az MRMesh számára, amelyek az értelmezett használatuk alapján vannak besorolva, például falakat, padlókat, mennyezeteket és asztalokat. A használati esetek hasonlóak a térbeli leképezéshez, de a hálók rendelkeznek ezekkel a további metaadatokkal, és síkként jelennek meg, nem pedig durva hálóként.
További információt a Scene Understanding dokumentumban talál.
Megjegyzés
A Holographic Remoting 2.8.0 Scene Understanding verziótól kezdődően a rendszer teljes mértékben támogatja.
Előfeltételek
Fontos
A Scene Understanding használatához Microsoft OpenXR beépülő modul és Unreal 4.27.1 vagy újabb verzió szükséges.
A Microsoft OpenXR beépülő modult kell használni, amely az Unreal Marketplace-en vagy a GitHubon érhető el.
Másik lehetőségként kezdje az OpenXR mintaalkalmazással , amely bemutatja a Scene Understanding használatát.
Telepítés
Jelenetfelismerés engedélyezése a HoloLensben:
- Nyissa meg a Projektbeállítások szerkesztése > elemet , és görgessen le a Platformok szakaszhoz.
- Válassza a HoloLens , majd a Térbeli érzékelés lehetőséget.
A jelenet megértéséhez és az MRMesh használatához egy HoloLens-játékban:
- Nyissa meg az ARSessionConfig fájlt, és bontsa ki az ARSettings > World Mapping szakaszt.
- 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 a jelenetfelismerést, és az MRMesh segítségével felszínre hozza az Unrealbe.
- Ha szeretné, ellenőrizze a Hálóadatok renderelése drótvázban jelölőnégyzetet, hogy az MRMesh minden háromszögének fehér drótvázszerkezetét mutassa.
- A második ARSettings legördülő menüben keresse meg a Vízszintes sík észlelése és a Függőleges sík észlelése jelölőnégyzetet. Ezek szelektíven letilthatók, ha a felhasználói élmény csak vízszintes vagy függőleges síkokat igényel. A rendszer alapértelmezés szerint vízszintes és függőleges síkokat is használ.
Nem kötelező ini beállítások
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, majd válassza a HoloLens spatial Mapping (HoloLens > térbeli leképezés) lehetőséget:
- A Térbeli hálózás kötetmérete a lejátszó körüli gömb átmérője az adatok megjelenítéséhez és frissítéséhez.
- Ha az alkalmazás futtatókörnyezete várhatóan nagy, akkor 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.
Jelenetfelismerés használatakor a nagy vizsgálati kötetek ronthatják a teljesítményt, mivel sokkal több háló jön létre, mint a térbeli leképezés. A hívások számának csökkentése érdekében további ini-beállításokkal korlátozhatja a kötet magasságát:
- A játék Config/DefaultGame.ini fájljában adjon hozzá egy [/Script/HoloLensSettings.SceneUnderstanding] szakaszt opcionális beállításokkal:
[/Script/HoloLensSettings.SceneUnderstanding]
SceneUnderstandingVolumeHeight=4
ShouldDoSceneUnderstandingMeshDetection=true
A SceneUnderstandingVolumeHeight a szkennelt szkennelt kötetet egy téglalap alakú prizmára korlátozza, amelynek magassága és oldalai Térhálózás kötetmérete.
A ShouldDoSceneUnderstandingMeshDetection hálókat ad hozzá az egyes azonosított síkokhoz. A hálók bizonyos felületeken, például táblázatokon átfedik egymást, pontosabban, mint a síkok, de további rajzolásokat és számítási hívásokat vonnak maga után. Alapértelmezés szerint a rendszer csak síkokat észlel.
Az MRMesh használata
Először el kell indítania az ARSessiont:
Ezután el kell kezdenie a jelenet megértését:
Ebben a példában a CanDetectPlanes függvényt ellenőrizzük, hogy ki kell-e váltanunk a jelenetértelmezést vagy a térbeli leképezést. Ez lehetővé teszi, hogy a kód mind a remoting, mind a HoloLens-eszközön működjön. Ellenkező esetben a visszacsatolás közbeni jelenetértelmezés nem ad vissza egyetlen síkot sem.
Az MRMesh-hez való hozzáférés biztosítása futásidőben:
- ARTrackableNotify összetevő hozzáadása a Terv aktorhoz.
- 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.
Az események teljes listáját az UARTrackableNotify összetevő API-ban találja.
Ebben a példában az MRMeshes azonosításakor a rendszer lekérdezi az objektumbesorolásukat, és egy másik anyag van beállítva a felület típusa alapján.
Ahhoz, hogy ütközési teszteket hajtsunk végre a jelenetértelmező hálókon, a LineTraceTrackedObjects3D használható:
Tiltsa le a Tesztsík kiterjedése beállítást, hogy csak a jelenetértelmezhető hálókon végezzen találati teszteket, ellenkező esetben a hálókat és a síkokat is használni fogja. A síkok nem mindig fedik le a valós geometriát, ezért téves ütközést okozhatnak, ha használják őket. Például a nyitott ajtókat a sík lefedi a körülötte lévő falról.
A nyomon követett geometria és objektumbesorolás lekérdezhető a nyomkövetési eredményből, így különböző függvényeket hajthat végre attól függően, hogy falba vagy táblázatba ütközik-e, például.
Ebben a példában egy hibakeresési koordinátarendszert rajzolunk az ütközési ponthoz a legközelebbi jelenetben, és megértjük, hogy mi történt.