Amikor vegyes valóságú headsetet visel, az a holografikus világ középpontjává válik. A Unity Kamera összetevő automatikusan kezeli a sztereoszkopikus renderelést, és követi a fej mozgását és forgását. A vizuális minőség és a hologram stabilitásának teljes optimalizálásához azonban meg kell adnia az alább ismertetett kamerabeállításokat.
HoloLens vs VR modern headsetek
A Unity Kamera összetevő alapértelmezett beállításai a hagyományos 3D-s alkalmazásokhoz tartoznak, amelyeknek skybox-szerű háttérre van szükségük, mivel nincs valós világuk.
Modern headseten való futtatáskor mindent renderel, amit a felhasználó lát, így valószínűleg meg szeretné tartani a skyboxot.
HoloLenshez hasonló holografikus headseten való futtatáskor azonban a valós világnak minden mögött meg kell jelennie, amit a kamera renderel. Állítsa a kamera hátterét átlátszóra (a HoloLensben a fekete áttetszőként jelenik meg) a Skybox textúra helyett:
Válassza ki a Fő kamerát a Hierarchia panelen
Az Inspector panelen keresse meg a Kamera összetevőt, és módosítsa a Jelölők törlése legördülő listát a Skyboxról az Egyszínűre
Válassza ki a Háttérszínválasztót, és módosítsa az RGBA értékeket értékre (0, 0, 0, 0)
Ha ezt kódból állítja be, használhatja a Unity Color.clear
A kamera átlátszóságának ellenőrzéséhez a MixedRealityCamera rendszer rendelkezik egy tulajdonságtalIsOpaque.
CoreServices.CameraSystem.IsOpaque;
Névtér:UnityEngine.XR Típus:XRDisplaySubsystem
Szkriptkóddal meghatározhatja futásidőben, hogy a headset modern vagy holografikus-e, ha ellenőrzi a displayOpaque elemet az aktívan futó XRDisplaySubsystem rendszeren.
Bármilyen felületet is fejleszt, a fő kamera mindig az eszköz fejhez csatlakoztatott kijelzőjéhez csatlakoztatott elsődleges sztereó renderelő összetevő. Ha a felhasználó kezdőpozícióját (X: 0, Y: 0, Z: 0) képzeli el, egyszerűbben elrendezheti az alkalmazást. Mivel a fő kamera a felhasználó fejének mozgását követi nyomon, a felhasználó kezdőpozíciója a fő kamera indítási pozíciójának beállításával állítható be.
A központi választás az, hogy HoloLenshez vagy VR modern headsetekhez fejleszt. Ha ezzel elkészült, ugorjon a megfelelő beállítási szakaszra.
HoloLens kamera beállítása
A HoloLens-alkalmazások esetében horgonyokat kell használnia a jelenetkörnyezetbe zárolni kívánt objektumokhoz. Javasoljuk, hogy kötetlen helyet használjon a stabilitás maximalizálása és horgonyok létrehozása több helyiségben.
Ezt a lépésenkénti oktatóanyagot követve hozzáadhatja és automatikusan konfigurálhatja Mixed Reality Toolkitet a Unity-projektben. Közvetlenül is dolgozhat a Unityhez készült MRTK MixedRealityPlayspace osztályával, és a Célskáláta World értékre állíthatja:
Az MRTK-nak automatikusan kezelnie kell a játéktér és a kamera pozícióját, de érdemes duplán ellenőrizni:
A Hierarchia panelen bontsa ki a MixedRealityPlayspace GameObject elemet, és keresse meg a Fő kamera gyermekobjektumot
Az Inspector panelen keresse meg az Átalakítás összetevőt, és módosítsa a Pozíciót(X: 0, Y: 0, Z: 0)
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Device);
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Unbounded); // Recommendation for OpenXR
Használhatja az ARSessiont a HoloLens-alkalmazásokhoz, amely jobban működik a horgonyokkal és az ARKit/ARCore-tal.
Fontos
Az AR-munkamenetnek és a kapcsolódó funkcióknak telepítve kell lenniük az AR Foundation szolgáltatásnak.
A kamera módosításait manuálisan is alkalmazhatja az ARSession használata nélkül:
Válassza a Fő kamera lehetőséget a Hierarchia panelen
Az Inspector panelen keresse meg az Átalakítás összetevőt, és módosítsa a Pozíciót(X: 0, Y: 0, Z: 0)
Kamera az Inspector panelen a Unityben
TrackedPoseDriver hozzáadása a fő kamerához
Válassza a Fő kamera lehetőséget a Hierarchia panelen
Az Inspector panelen keresse meg az Átalakítás összetevőt, és módosítsa a Pozíciót(X: 0, Y: 0, Z: 0)
Kamera az Inspector panelen a Unityben
Nyissa meg a Windows Áruház-lejátszó beállításainakEgyéb beállítások szakaszát
Válassza a Windows Mixed Reality eszközt, amely windowsos holografikusként szerepelhet a Unity régebbi verzióiban
Válassza a Támogatott virtuális valóság lehetőséget
Mivel a Fő kamera objektum automatikusan kameraként van megjelölve, a Unity minden mozgást és fordítást működtet.
Megjegyzés
Ezeket a beállításokat az alkalmazás minden jelenetében alkalmazni kell a Kamerára.
Alapértelmezés szerint, amikor létrehoz egy új jelenetet a Unityben, az tartalmazni fog egy Fő kamera GameObject objektumot a hierarchiában, amely tartalmazza a Kamera összetevőt, de előfordulhat, hogy a beállítások nincsenek megfelelően alkalmazva.
VR-kamera beállítása
Windows Mixed Reality támogatja az alkalmazásokat a különféle élményskálákon, a csak tájolású és a ülőméretű alkalmazásoktól kezdve egészen a helyiségméretű alkalmazásokig. A HoloLensen továbbhaladhat, és világméretű alkalmazásokat készíthet, amelyekkel a felhasználók 5 métert meghaladó sétát tehetnek, és felfedezhetik egy épület teljes emeletét és azon túl is.
A vegyes valósági élmény Unityben történő kiépítésének első lépése annak meghatározása, hogy az alkalmazás milyen skálázást céloz meg:
Ha a HL2-re készül, javasoljuk, hogy hozzon létre egy szemszintű élményt, vagy fontolja meg a Jelenetfelismerés használatát a jelenet padlójára vonatkozó érveléshez.
Nyissa meg a Windows Áruház-lejátszó beállításainakEgyéb beállítások szakaszát
Válassza a Windows Mixed Reality eszközt, amely windowsos holografikusként szerepelhet a Unity régebbi verzióiban
Válassza a Támogatott virtuális valóság lehetőséget
Mivel a Fő kamera objektum automatikusan kameraként van megjelölve, a Unity minden mozgást és fordítást működtet.
Megjegyzés
Ezeket a beállításokat az alkalmazás minden jelenetében alkalmazni kell a Kamerára.
Alapértelmezés szerint, amikor új jelenetet hoz létre a Unityben, az tartalmazni fog egy fő kamera gameObject objektumot a hierarchiában, amely tartalmazza a Kamera összetevőt, de nem alkalmazza megfelelően az alábbi beállításokat.
Névtér:UnityEngine.XR Típus:XRDevice
Álló vagyhelyiségméretű élményhez a tartalmat a padlóhoz képest kell elhelyeznie. Az első futtatáskor beállított, a felhasználó által definiált padlószintű forrást és opcionális helyiséghatárt jelképező térbeli szakaszt használva a felhasználó padlószintjét kell megadnia.
Annak biztosítása érdekében, hogy a Unity a világszintű koordinátarendszerrel működjön, beállíthatja és tesztelheti, hogy a Unity a RoomScale nyomkövetési helytípust használja-e:
if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
// RoomScale mode was set successfully. App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
// RoomScale mode was not set successfully. App cannot make assumptions about where the floor plane is.
}
Ha a SetTrackingSpaceType igaz értéket ad vissza, a Unity sikeresen átváltotta a világkoordináta-rendszerét a referenciaszakasz-keret nyomon követésére.
Ha a SetTrackingSpaceType hamis értéket ad vissza, a Unity nem tudott átváltani a referencia fáziskeretére, valószínűleg azért, mert a felhasználó nem állított be padlót a környezetében. Bár a hamis visszatérési érték nem gyakori, előfordulhat, hogy a fázis egy másik helyiségben van beállítva, és az eszköz az aktuális helyiségbe kerül anélkül, hogy a felhasználó új szakaszt állítana be.
Ha az alkalmazás sikeresen beállítja a Helyiségskálázás követési terület típusát, az y=0 síkon elhelyezett tartalom megjelenik a padlón. A 0, 0, 0 kezdőpont az a hely lesz, ahol a felhasználó a helyiség beállításakor állt, a -Z pedig azt az előremutató irányt jelöli, amellyel a beállítás során szembesültek.
Nyissa meg a Windows Áruház lejátszóbeállításainakEgyéb beállítások szakaszát
Válassza az Windows Mixed Reality eszközt, amely a Unity régebbi verzióiban Windows Holographic néven szerepelhet
A Támogatott virtuális valóság kiválasztása
Mivel a Fő kamera objektum automatikusan kameraként van megjelölve, a Unity minden mozgást és fordítást működtet.
Megjegyzés
Ezeket a beállításokat az alkalmazás minden jelenetében alkalmazni kell a Kamerára.
Alapértelmezés szerint, amikor új jelenetet hoz létre a Unityben, az tartalmazni fog egy fő kamera gameObject objektumot a hierarchiában, amely tartalmazza a Kamera összetevőt, de nem alkalmazza megfelelően az alábbi beállításokat.
Névtér:UnityEngine.XR Típus:XRDevice
A csak tájolású vagy ülő léptékű élmény létrehozásához a Unityt a Helyhez kötött nyomkövetési hely típusára kell állítania. A helyhez kötött nyomkövetési tér beállítja a Unity világkoordináta-rendszerét a helyhez kötött referenciakeret nyomon követésére. A Rögzített nyomkövetési módban a szerkesztőben, közvetlenül a kamera alapértelmezett helye előtt elhelyezett tartalom (előre -Z) megjelenik a felhasználó előtt az alkalmazás indításakor.
Ha csak a tájolást szeretné lehetővé tenni , például egy 360 fokos videómegjelenítőt (ahol a pozíciófej frissítése tönkretené az illúziót), beállíthatja az XR-t. InputTracking.disablePositionalTracking értéke igaz:
InputTracking.disablePositionalTracking = true;
Ha ülő szintű élményt szeretne, hogy a felhasználó később újabb helyet adjon az ülő forrásnak, meghívhatja az XR-t. InputTracking.Recenter metódus:
HA MRTK-t használ, a kamera háttere automatikusan konfigurálva és felügyelve lesz. XR SDK- vagy örökölt WSA-projektek esetén javasoljuk, hogy állítsa a kamera hátterét fekete színre a HoloLensen, és tartsa meg a VR-hez készült skyboxot.
Több kamera használata
Ha a jelenetben több Kamera összetevő is található, a Unity tudja, hogy melyik kamerát használja a sztereoszkopikus rendereléshez annak alapján, hogy melyik GameObject rendelkezik a MainCamera címkével. Az örökölt XR-ben ezt a címkét használja a fejkövetés szinkronizálásához is. Az XR SDK-ban a fejkövetést egy, a kamerához csatlakoztatott TrackedPoseDriver-szkript vezérli.
Megosztási mélységi pufferek
Ha az alkalmazás mélységi pufferét windowsosra osztja, az egyes keretekkel az alkalmazás két hologramstabilitási lökést ad az alkalmazásnak a renderelt headset típusától függően:
A VR modern headsetjei a mélységi pufferek használatakor gondoskodhatnak a pozíció-újraprojectionről, így a hologramok pozícióban és tájolásban is módosíthatók.
Az MRTK konfigurációs párbeszédpanelje megpróbálja beállítani a mélységi pufferbeállításokat az XR SDK-hoz és az örökölt WSA-hoz is, de érdemes ellenőrizni ezeket a lapokat, és ellenőrizni a beállításokat a Unityben.
Annak beállítása, hogy a Unity-alkalmazás biztosít-e mélységi puffert a Windows számára:
Lépjen aProjektbeállítások>szerkesztése>XR beépülő modul kezelése területre, és győződjön meg arról, hogy a menüelem ki van bontva.
Kattintson a kiválasztott XR-futtatókörnyezetnek megfelelő menüelemre, Windows Mixed Reality vagy OpenXR. Emellett győződjön meg arról, hogy a megfelelő buildplatform van kiválasztva, mivel a Windows önálló és Univerzális Windows-platform lapjai is elérhetők.
Az engedélyezéshez és konfiguráláshoz:
Az OpenXR esetében válassza ki a mélységi formátumot vagy a "Nincs" lehetőséget a Mélységi beküldési mód legördülő menüben.
Ha Windows Mixed Reality, jelölje be vagy törölje a megosztottmélység-puffer jelölőnégyzet jelölését. Ezután válasszon egy formátumot a Mélységpuffer formátuma legördülő listából.
Megjegyzés
Általában 16 bites mélységi pufferek használata ajánlott a jobb teljesítmény érdekében. Ha azonban 16 bites mélységi formátumot használ, a rajzsablonpuffer szükséges effektusai (például egyes Unity felhasználói felületi görgetőpanelek) nem fognak működni, mert a Unity ebben a beállításban nem hoz létre rajzsablonpuffert . Ha a 24 bites mélységi formátumot választja, általában egy 8 bites rajzsablonpuffert hoz létre, ha alkalmazható a végpont grafikus platformján.
Annak beállítása, hogy a Unity-alkalmazás biztosít-e mélységi puffert a Windows számára:
Jelölje be vagy törölje a jelet a Mélységi puffermegosztás engedélyezése jelölőnégyzetből. A mélységi puffermegosztás engedélyezése alapértelmezés szerint be van jelölve az új projektekben, de előfordulhat, hogy a régebbi projektekben alapértelmezés szerint nincs bejelölve.
A mélységi puffer javíthatja a vizualizáció minőségét, ha a Windows pontosan le tudja képezni a képpontonkénti normalizált mélységi értékeket a mérők távolságára a Unityben beállított közel és távoli síkok használatával a fő kamerán. Ha a renderelés jellemző módon kezeli a mélységi értékeket, itt általában rendben kell lennie, bár az áttetsző renderelés átmegy a mélységi pufferbe, miközben a meglévő szín képpontokon keresztül mutatja be az írást, összezavarhatja az újraprojectiont. Ha tudja, hogy a renderelési passzok sok végső mélységi képpontot pontatlan mélységi értékekkel hagynak el, valószínűleg jobb vizualizációminőséget fog kapni a "Mélységi puffermegosztás engedélyezése" jelölőnégyzet bejelölésével.
Megjegyzés
Általában 16 bites mélységi pufferek használata ajánlott a jobb teljesítmény érdekében. Ha azonban 16 bites mélységi formátumot használ, a rajzsablonpuffer szükséges effektusai (például egyes Unity felhasználói felületi görgetőpanelek) nem fognak működni, mert a Unity ebben a beállításban nem hoz létre rajzsablonpuffert . Ha a 24 bites mélységi formátumot választja, általában egy 8 bites rajzsablonpuffert hoz létre, ha alkalmazható a végpont grafikus platformján.
Az Inspector panelen keresse meg a Kamera összetevő vágósíkjait , és módosítsa a Közelszövegmezőt 0,3-ról0,85-re. A még közelebb renderelt tartalom felhasználói kényelmetlenséghez vezethet, és a renderelési távolságra vonatkozó irányelvek szerint el kell kerülni.
Az MRTK egy beépített teleportrendszert biztosít, amely automatikusan működik a csuklós kezek és vezérlők között.
Javasoljuk, hogy használja az MRTK teleportálási implementációját.
Ha úgy dönt, hogy nem használja az MRTK-t, a Unity teleportálási implementációt biztosít az XR Interaction Toolkitben.
Ha úgy dönt, hogy implementálja a sajátját, érdemes szem előtt tartania, hogy a kamerát nem helyezheti át közvetlenül. Mivel a Unity vezérelte a kamerát a fejkövetéshez, szülőt kell adnia a kamerának a hierarchiában, és át kell helyeznie a GameObjectet. Ez egyenértékű az MRTK Playspace-ével.
Javasoljuk, hogy használja az MRTK teleportálási implementációját.
Ha úgy dönt, hogy implementálja a sajátját, érdemes szem előtt tartania, hogy a kamerát nem helyezheti át közvetlenül. Mivel a Unity vezérelte a kamerát a fejkövetéshez, szülőt kell adnia a kamerának a hierarchiában, és át kell helyeznie a GameObjectet. Ez egyenértékű az MRTK Playspace-ével.
Ismételt leépítési módok
A HoloLens és a modern headsetek is újraprojálják az alkalmazás által renderelt egyes kereteket, hogy igazodjanak a felhasználó tényleges fejpozíciójának helytelenségéhez fotonok kibocsátásakor.
Alapértelmezés szerint:
A VR modern mikrofonos fejhallgatók gondoskodnak a pozíció-újraprojectionről, ha az alkalmazás mélységi puffert biztosít egy adott kerethez. A modern headsetek a hologramokat is beállítják, hogy mind pozícióban, mind tájolásban helytelenül lássa el a készüléket. Ha nincs megadva mélységi puffer, a rendszer csak a tájolásban korrigálja a helytelenül megadott hibákat.
Az olyan holografikus headsetek, mint a HoloLens 2, gondoskodnak a pozícióprojectionről, függetlenül attól, hogy az alkalmazás biztosítja-e a mélységi puffert vagy sem. A holoLens-en mélységi pufferek nélkül is lehetséges a pozíció-újraprojection, mivel a renderelés gyakran ritka a valós világ által biztosított stabil háttérrel.
Ha például csak a mereven rögzített tartalommal (például 360 fokos videótartalommal) hoz létre csak tájolást, explicit módon beállíthatja a reprojection módot csak a ReprojectionMode.OrientationOnly beállítással.
Ha például csak a mereven rögzített tartalommal (például 360 fokos videótartalommal) hoz létre csak tájolást , a reprojection módot explicit módon csak a HolographicReprojectionMode.OrientationOnly beállítással állíthatja be.
Következő fejlesztési ellenőrzőpont
Ha követi a Unity által meghatározott fejlesztési folyamatot, akkor az MRTK alapvető építőelemeinek felfedezése közben jár. Innen továbbléphet a következő építőelemre: