Share via


A World Locking Tools kezdeti beállítása

A lehető legszűkebb beállítás

Az oktatóanyag lépésről lépésre végigvezeti a minimális beállításon, hogy az alkalmazás minden elemét zárolva találja, anélkül, hogy további műveletekre (például térbeli horgonyokra) van szükség. A minta-adattárban található, amely ennek az adattárnak a testvére.

Rövid útmutató

Itt talál egy kevésbé fogalmilag részletesebb és gyakorlatiasabb megközelítést a WLT projektbe való integrálásához. Adott esetben ezekre az alaposabb oldalakra hivatkozik. Bár valóban személyes preferenciáról van szó, melyik megközelítés a legmegfelelőbb, a Bevezetés előtt oldal gyors elolvasása időt takaríthat meg azzal kapcsolatban, hogy hol érdemes energiákat szentelni ebben a dokumentációban.

Támogatott környezetek

A World Locking Tools for Unity jelenleg a HoloLens eszközcsalád UWP-alkalmazásait célozza meg. Az eredeti HoloLens (x86) és HoloLens 2 (ARM64) egyaránt támogatott.

Más platformok kísérleti támogatása a Unity AR-alrendszereien keresztül érhető el.

A World Locking Tools folyamatos integrációs (CI) buildje a Unity2018.4.6f1 és a Visual Studio 2017 használatával érvényesíthető. A unity2018-verziók és a Unity2019 számos verziójának használatával azonban kiterjedt WLT-fejlesztés is történt. Az eszközök fejlesztéséhez a Visual Studio 2017-et és a Visual Studio 2019-et is használták.

Ha bármilyen kompatibilitási problémát tapasztal a Unity és/vagy a Visual Studio más verzióival kapcsolatban, szívesen hallanánk róla! A problémák bejelentésének legjobb módja a GitHub problémákat tartalmazó portálja .

Feltételezett háttér

Feltételezzük, hogy a World Locking Tools megoldást a projektjeikbe integrálni kívánó emberek már ismerik a HoloLens-eszközcsalád alkalmazásainak létrehozásának és üzembe helyezésének alapjait. Ha nem, a cikk végén néhány nagyszerű hivatkozás található.

A World Locking Tools rétegei

A World Locking Tools négy rétegre van bontva. Ha a nyilak a réteg felé mutatnak, az egyszerű függőségi gráf a következőképpen néz ki:

Rétegdiagram

A szaggatott vonalak opcionális függőségeket jeleznek.

Bár a Examples réteg a MixedRealityToolkit (MRTK) protokollt használja, a többi réteg egyikének sincs külső függősége, és a teljes funkció kompatibilis az MRTK-val, de független attól.

Az alkalmazások függőségeivel kapcsolatos további megjegyzések alább olvashatók.

A rétegek a következőképpen foglalhatók össze:

Beépülő modul

Imperatív felület, amely lehetővé teszi a motor DLL-jével való közvetlen kommunikációt. Itt olyan gyakori problémák merülnek fel, mint az argumentumok alkalmazása, és egyes függvények összeállítása, amelyeket gyakran használnak összetett irányelvekbe kombinálva. Továbbra is alacsony szintű C#-interfész a mögöttes C++ DLL-hez. Közvetlen felhasználása elérhető, de nem szükséges és nem ajánlott.

Mag

A Core a World Locking Tools stabil, deklaratív felületbe csomagolt, világzárolt tér előnyeinek kihasználásához szükséges összes lépés beágyazása. Egy működő alkalmazás várhatóan csak a Core funkcióit használja.

Eszközök

Az eszközök nagyrészt diagnosztikai jellegűek. A World Locking Tools-folyamatok vizualizációi könnyen hozzáadható űrlapok minden olyan projekthez, amely a World Locking Toolst használja.

Egyéb kényelmes segédprogramok is szerepelnek benne, de várhatóan hasznosak lesznek az egyéni megoldások kódolásának megkezdésében ahelyett, hogy a Core által kínált végső megoldások lesznek.

Példák

A Examples (Példák) réteg példákat próbál bemutatni a gyakori forgatókönyvek beállításáról a World Locking Tools használata során, valamint a World Locking Tools különböző forgatókönyvekbe való integrálásának ajánlott eljárásait.

Az UX- és objektummanipulációhoz szükséges MRTK-függőségek a Examples (Példák) réteg szkriptjeire és előképeire korlátozódnak. Így az alsó rétegek nem lesznek külső függőségek.

A Példák réteg szkriptjei és eszközei várhatóan nem lesznek közvetlenül integrálva a szállítási termékekbe, bár nincs ellene tiltás. A szerkezetük inkább az egyszerűséget és az egyértelműséget részesíti előnyben az újrafelhasználhatóság és a hatékonyság szempontjából.

Az alkalmazás

Általánosságban elmondható, hogy az alkalmazásnak csak a World Locking Tools Core függőségét kell figyelembe vennie.

A fejlesztés során számos vizualizáció és egyéb segítő áll rendelkezésre a váratlan viselkedés megértéséhez az Eszközök rétegben. Ezeket a segítőket ideális esetben eltávolítanák egy kész alkalmazásból, vagy legalábbis letiltanák. Természetesen más használatra is ingyenesek, akár a jelenlegi formájukban, akár módosítva. A részletekért tekintse meg a licencet.

A World Locking Tools teljes képességeinek fejlett használatához és kísérletezéséhez a beépülő modul réteg alacsony szintű imperatív hozzáférést biztosít a motor DLL-hez.

Ha a beépülő modul réteghez való hozzáférés válik szükségessé, az a Core rétegben kínált API-felület hiányára utalhat. A World Locking Tools csapata mindig keresi az ilyen hiányosságokat. Érdemes lehet ilyen megállapításokat adni a csapatnak. Lásd: hozzájárulás.

Figyelmeztető megjegyzés a telepítési útvonal hosszáról

Az MRTK egyes verzióinak problémái vannak a hosszú telepítési útvonalakkal. Az MRTK-telepítés mély almappáinak teljes elérési útja meghaladhatja a Windows elérési útja korlátját (260 karakter). Ha a következő űrlap buildelési hibája jelenik meg:

DirectoryNotFoundException: Could not find a part of the path "D:\MyOverTwentyEightCharacterLongLengthInstallPath\MixedReality-WorldLockingTools-Unity\Assets\MRTK\MixedRealityToolkit.Providers\WindowsMixedReality\DotNetAdapter\Plugins\net46\Microsoft.Windows.MixedReality.DotNetWinRT\Editor\Microsoft.Windows.MixedReality.DotNetWinRT.Editor.asmdef"

de a fájl valójában ott van a meghajtón, akkor a probléma valószínűleg az elérési út hossza. Az MRTK csapata tisztában van ezzel, és azon dolgozik, hogy javítsanak rajta (megjegyzés: Úgy gondolom, hogy itt nagy fejlesztéseket végeztek, és ez már nem probléma). Addig is a kerülő megoldás az elérésiút-előtag lerövidítése az alábbi kombinációkkal:

  1. Telepítse a Unity-projektet egy rövidebb elérési út gyökerébe, például "D:\Proj"
  2. Az adattár klónozása esetén klónozza a World Locking Tools gyökerét az alapértelmezett "\MixedReality-WorldLockingTools-Unity" értéknél rövidebbre, például:
git clone https://github.com/microsoft/MixedReality-WorldLockingTools-Unity.git d:\MyGit\wlt

Ez az elérésiút-korlát általában nem jelent problémát magukban a világzárolási eszközökben, mivel nem használnak olyan mappastruktúrát, amely olyan mély.

World Locking Tools hozzáadása Unity-projekthez

Megjegyzés

Az alábbiak a World Locking Tools és függőségek manuális telepítését ismertetik. Sokkal egyszerűbb telepítési folyamat érhető el a Mixed Reality funkcióeszköz használatával. A szolgáltatáseszköz használatával történő telepítésről itt olvashat. Ha a funkcióeszköz telepíti a WLT-t, kihagyhatja az alábbiakat, és folytathatja a WLT felvételét a jelenethez

A World Locking Tools a nugetet használja a mögöttes Frozen World Engine telepítéséhez.

Ha a World Locking Toolst hozzáadja egy meglévő projekthez, érdemes egy olyan projekttel kezdeni, amely igazoltan egy HoloLens-eszközön való buildelésre és üzembe helyezésre lett ellenőrizve. Ez segít elkülöníteni az alkalmazás HoloLensen való futtatásával kapcsolatos problémákat, ami bonyolult lehet a Világzárolási eszközökkel kapcsolatos problémáktól. Ezután folytassa az alábbi FrozenWorld Motor telepítésével és a World Locking Tools Assets (Eszközök a Világ zárolásával ) szakaszokkal.

FrozenWorld Engine telepítése

A Frozen World Engine DLL beszerezhető a NuGetből a kiváló NuGet For Unity segédprogrammal, vagy manuálisan.

A NuGet használata a Unityhez

Győződjön meg arról, hogy a nuget.org-hírcsatorna forrásban van. Ellenőrizze ezt a Unity > Szerkesztési >> beállítások NuGet for Unity című témakörben. Ha nem, a következők valamelyike:

Ugyanazt a megosztást a Unity-hez >>> készült NuGet for Unity új forrás grafikus felhasználói felületének hozzáadásával veheti fel.

  • Cserélje le az "Új forrás" szót egy választott névre (például "NuGet").
  • Cserélje le a "source_path" kifejezést a "http://www.nuget.org/api/v2/"" értékre.

A nuget.org hírcsatorna megerősítése után a Unity NuGet Manage NuGet Packages (NuGet-csomagok >> kezelése) területen keresse meg és telepítse a Microsoft.MixedReality.FrozenWorld.Engine legújabb verzióját. (Keressen rá a "FrozenWorld" kifejezésre.)

Ha egy későbbi verzióra szeretne frissíteni, nyissa meg újra a Unity > NuGet > Manage NuGet Packages csomagot, és keresse meg a FrozenWorld.Engine csomagot, és válassza a Frissítés lehetőséget. Megjegyzés: Előfordulhat, hogy a Frissítések lapon kell megkeresnie a keresett verziót.

Manuális fagyasztott világmotor DLL-telepítése

Szövegszerkesztővel adjon hozzá egy packageSources sort az Assets/NuGet.config elemhez, például:

  <packageSources>
    <add key="NuGet" value="http://www.nuget.org/api/v2/" />
  </packageSources>

Ha még nem rendelkezik az Assets/NuGet.config fájllal, akkor a World Locking Tools github-adattárból másolhatja.

Szövegszerkesztővel adja hozzá a Frozen World Engine DLL-csomagot az Assets/packages.config elemhez, például:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.MixedReality.Unity.FrozenWorld.Engine" version="1.0.0" />
</packages>

Ha még nem rendelkezik Assets/packages.config fájllal, lekérheti a fájlt a World Locking Tools GitHub-adattárból, vagy egyszerűen másolja a fentieket egy "Assets/packages.config" nevű szövegfájlba.

A beállítási NuGet.config és packages.config telepítése:

  1. Szerezze be a legújabb nuget.exe a NuGet-letöltésekből.
  2. Győződjön meg arról, hogy nuget.exe az elérési úton van (itt feltételezem, hogy az eszközökbe másolták).
  3. Nyisson meg egy PowerShell-parancsablakot, és módosítsa a könyvtárat az Eszközök mappára.
  4. Futtassa az alábbi parancsot:
.\nuget.exe restore

Frissítés egy későbbi verzióra:

  1. Frissítse a fenti packages.config fájl FrozenWorld.Engine verziószámát a kívánt verzióra (például a version="1.0.0" verzió="1.0.1").
  2. A "Microsoft.MixedReality.Unity.FrozenWorld.Engine" szöveggel kezdődően töröljön bármit az Assets/Packages mappából.
  3. Futtassa újra nuget.exe a fenti módon.

A világ zárolási eszközeinek eszközei

Importálja a szükséges World Locking Tools-fájlokat .unitypackage a projektbe (előnyben részesített módszer), vagy másolja be őket. Előfordulhat, hogy az eszközök egy almappájába helyezik át őket, hogy kikerüljenek az alkalmazásfejlesztés útjukból.

A legújabb stabil .unitypackage fájlok a World Locking Tools for Unity-kiadásokban találhatók.

A WorldLocking.Core és a Engine rétegre feltétlenül szükség lesz, ezért minimális telepítési csomag lenne a WorldLockingCoreEngine.unitypackage.

Annak megállapításához, hogy milyen más rétegekre lehet szükség, tekintse meg a fenti World Locking Tools-rétegek és függőségeik ismertetését. Minden réteg egyetlen Unity-csomagban található.

Mivel a World Locking Tools egyes példái az MRTK funkcióit használják, a példák egy kompatibilis MRTK-pillanatképet is tartalmaznak unitypackage. A legújabb MRTK-kiadásért tekintse meg itt.

World Locking Tools hozzáadása Unity-jelenethez

Megjegyzés

Az alábbi lépések mind automatizáltak a WLT-jelenet konfigurálása segédprogramban, amely a Toolkit > Utilities > World Locking Tools Mixed Reality menüben található. Configuraton menü

A FrozenWorld motort (nuget.org) tartalmazó Unity-projekten belül importálja a kívánt World Locking Tools Assets rétegeket (de legalább WorldLocking.Core) és opcionálisan az MRTK-t. Ezután hozzon létre egy új jelenetet (vagy nyisson meg egy meglévő jelenetet).

Megjegyzés

Adjon hozzá egy további csomópontot a kamerahierarchia gyökeréhez. Ez a csomópont fogja használni, hogy állítsa a fej nyomon követett kamera a világ zárolt tér. (MRTK használata esetén ez az új GameObject lesz a MixedRealityPlayspace szülője .)

Az alapvető élmény

Húzzon egy WorldLockingManager-előfabot az Assets/WorldLocking.Core/Prefabs objektumból a jelenetbe. A hely a jelenetben nem számít, de nem lehet a kamerafán. Tekintse meg a javasolt konfigurációk mintajelenetét .

A WorldLockingManager előfabján vannak elérhető beállítások, de az első lépésekhez ajánlott az alapértelmezett értékekre hagyni őket.

A bemutatott lehetőségek magyarázatát lásd: A Zárolási eszközök környezete .

[Nem kötelező] MRTK

A World Locking Tools kiegészíti az MRTK-t, de ortogonális. Az MRTK és a World Locking Tools használata teljesen opcionális.

Ez azt jelenti, hogy a World Locking Tools-minták MRTK-val készülnek, és az MRTK általában rendkívül értékes a World Locking Tools által leginkább előnyös MR-alkalmazások fejlesztésében.

Ha az MRTK-t használja a példákban szereplő pillanatkép használata helyett, javasoljuk, hogy legalább a következő csomagok legújabb verzióit adja hozzá:

  • MixedReality.Toolkit
  • MixedReality.Toolkit.Providers
  • MixedReality.Toolkit.Services
  • MixedReality.Toolkit.SDK

[Nem kötelező] Spongy és a világ zárolt horgonyainak vizualizációja

Ehhez hozzá kell adni a WorldLocking.Tools eszközt a projekt Eszközeihez.

Ha meg szeretné jeleníteni a horgonyokat, húzza az AnchorGraphVisual prefab elemet az Assets/WorldLocking.Tools/Prefabs elemből a jelenetbe. A vizualizáció elemeinek az ellenőrben való váltására vonatkozó jelölőnégyzetek a WorldLockingManagerben találhatók.

Diagnosztikaként a WorldLocking.Tools vizualizációk nincsenek nagymértékben optimalizálva, és jóval azelőtt csökkentik a teljesítményt, mielőtt a fő World Locking Tools feldolgozási ideje relevánssá válik.

[Nem kötelező] Egyszerű irányítópult a paramétervezérléshez a Mixed Reality

Elérhető egy egyszerű HUD, amellyel futtatáskor vezérelhető a WorldLockingManager az MR-ben. Ezeket a Példák csomag tartalmazza. Bár használhatja őket, mintául szolgálnak, mintaként szolgálnak, amikor hasonló funkciókat építenek be egy alkalmazás saját megjelenítési rendszerébe és UX-jába.

Húzza a WorldLocking.Examples/Prefabs/Dashboard prefab elemet, és mutasson a Horgony-vizualizáció mezőre az előző szakaszban.

Meglévő jelenet migrálása a World Locking Toolsba

A világzárolási eszközökre való áttérés során a legnagyobb változás az, hogy már nincs szükség térbeli horgonyok használatára a világzárolási virtuális objektumokhoz.

A térbeli horgonyok hagyományosan az egyetlen olyan eszköz, amely az egyes objektumok világzárolására használható. A World Locking Tools használatakor azonban a virtuális objektumok koordinátaterülete már világzárolás alatt áll. Nincs szükség további zárolásra.

Nem csak a térbeli horgonyok szükségtelenek, de nem fognak megfelelően működni, mivel nem veszik figyelembe a kamerahierarchiában történő további átalakításokat (például az MRTK "Playspace" átalakítást).

Ezért minden és minden térbeli horgonyt el kell távolítani a jelenetből, és a térbeli horgonyokat feladó szkripteket meg kell szüntetni. A térbeli horgonyokat nem kell semmivel helyettesíteni; A World Locking Tools a valós világhoz rögzíti a célpontokat.

Ha a világzárolást a World Locking Tools eszközzel és anélkül szeretné összehasonlítani, akkor aHelyett, hogy eltávolítaná a WorldAnchorsokat, lecserélheti őket a WorldLocking.Toolsban található ToggleWorldAnchorra .

A ToggleWorldAnchor pontosan ugyanúgy működik, mint a WorldAnchor, azzal a fontos különbséggel, hogy amikor a World Locking Tools Manager aktív, kényelmesen letiltja magát, és kikerül az útból. Ha a World Locking Tools Manager le van tiltva, normál WorldAnchorként viselkedik.

Ha valamilyen más okból a WorldAnchorsra továbbra is szükség van a jelenetben (például a hálózati megosztáshoz), akkor a WorldAnchorAdapter néven megadott adapterrel is használhatók.

A WorldAnchorAdapter egy WorldAnchor által elhelyezett GameObject nyers pozícióját a világ zárolt Unity globális térévé alakítja, majd az átalakítást egy célobjektumra alkalmazza. A használatához ahelyett, hogy közvetlenül egy objektumhoz adná hozzá a WorldAnchort, a WorldAnchort egy proxyobjektumra (általában egy egyébként üres GameObjectre) kell alkalmazni, majd az Update() rendszeren a WorldAnchorAdapter felolvassa a WorldAnchor pózát, megfelelően átalakítja és alkalmazza a célra.

A telepítés befejeződött

A fenti lépéseket követve az eszközön üzembe helyezett projekt a World Locking Tools által módosított módon fog futni, hogy fenntartsa az optimálisan stabil, világzárolt területet. A jelenetben elhelyezett rögzített objektumok vizuálisan konzisztensek maradnak egymáshoz és a fizikai világhoz képest is.

Elérhető példaalkalmazások

A példajelenetek, beleértve a szkripteket és az eszközöket is, a World Locking Tools képességeinek összetettebb használatát szemléltetik.

A WorldLockedPhysicsSample például egy egyszerű környezetet biztosít, amelyben fizikailag szimulált objektumok hozhatók létre és távolíthatók el, kommunikálva egymással és a környezettel (a térbeli leképezéssel).

A Térbeli rögzítés funkció koncentráltabb megtekintéséhez a SpacePin egy sokkal egyszerűbb példát nyújt egy nagyméretű virtuális objektum valós funkciókhoz való igazítására.

A RayPins kiterjeszti a SpacePin-példa által bevezetett képességeket, lehetővé téve a virtuális világ rögzítését a fizikai világba a térbeli hálón végzett sugártesztekkel.

Első lépésekre vonatkozó hivatkozások

Ha nem ismeri az AR-alkalmazások a HoloLens-eszközcsaládban való létrehozásának, létrehozásának és üzembe helyezésének alapjait, íme néhány hivatkozás, amelyek segíthetnek az első lépésekben.

Unity Development Overview – Unity for MR/AR development.

MR Basics 100 – Útmutató a HoloLens fejlesztésének első lépéseihez

HoloLens 2 oktatóanyagok – Útmutató a HoloLens 2 fejlesztésének megkezdéséhez.

Koordinátarendszerek Térkihatások koordinálása az AR-fejlesztésben.

  • Vegye figyelembe, hogy a World Locking Tools az itt tárgyalt problémákat oldja meg.

Segíthetünk?

Tekintse meg a hibaelhárítási útmutatót.