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:
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:
- Telepítse a Unity-projektet egy rövidebb elérési út gyökerébe, például "D:\Proj"
- 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:
- Szerezze be a legújabb nuget.exe a NuGet-letöltésekből.
- 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).
- Nyisson meg egy PowerShell-parancsablakot, és módosítsa a könyvtárat az Eszközök mappára.
- Futtassa az alábbi parancsot:
.\nuget.exe restore
Frissítés egy későbbi verzióra:
- 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").
- A "Microsoft.MixedReality.Unity.FrozenWorld.Engine" szöveggel kezdődően töröljön bármit az Assets/Packages mappából.
- 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ó.
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.