Sdílet prostřednictvím


Počáteční nastavení nástrojů World Locking Tools

Nejtenčí možné nastavení

Tento kurz vás provede minimálním nastavením a zprovozní se vším, co je ve vaší aplikaci po celém světě uzamčené, bez nutnosti jakékoli další akce (například prostorové ukotvení). Nachází se v úložišti Ukázek na stejné stejné straně jako v tomto úložišti.

Úvodní příručka

Zde najdete méně koncepční a více účelnější přístup k integraci WLT do projektu. Tam, kde je to vhodné, odkazuje zpět na tyto důkladnější stránky. I když je to opravdu věc osobní preference, který přístup je vhodnější, rychlý přehled stránky Před zahájením může být úspora času na tom, kde věnovat energie v této dokumentaci.

Podporovaná prostředí

World Locking Tools for Unity v současné době cílí na aplikace UPW pro řadu zařízení HoloLens. Podporují se původní HoloLens (x86) i HoloLens 2 (ARM64).

Experimentální podpora pro jiné platformy je dostupná prostřednictvím subsystémů AR Unity.

Sestavení Kontinuální integrace nástrojů World Locking Tools (CI) ověřuje v sadě Visual Studio 2018.4.6f1 pomocí sady Visual Studio 2017. Rozsáhlý vývoj WLT byl však také proveden pomocí gamutu verzí Unity2018 a řady Unity2019. Visual Studio 2017 i Visual Studio 2019 se používají při vývoji nástrojů.

Pokud se setkáte s problémy s kompatibilitou s jinými verzemi Unity nebo sady Visual Studio, rádi bychom o tom slyšeli. Nejlepší způsob, jak nahlásit všechny problémy, je prostřednictvím portálu problémů na GitHubu.

Předpokládá se pozadí

Předpokládá se, že lidé, kteří chtějí integrovat řešení World Locking Tools do svých projektů, už znají základy vytváření a nasazování aplikací pro řadu zařízení HoloLens. Pokud ne, najdete na konci tohoto článku několik skvělých odkazů .

Vrstvy world locking tools

Nástroje world Locking Tools jsou rozdělené na čtyři vrstvy. Díky šipkám směřujícím k vrstvě závisí na tom, že jednoduchý graf závislostí vypadá takto:

Diagram vrstev

Přerušované čáry označují volitelné závislosti.

Zatímco vrstva Examples používá MixedRealityToolkit (MRTK), žádná z ostatních vrstev nemá žádné externí závislosti a úplná funkčnost je k dispozici kompatibilní s MRTK, ale nezávisle na MRTK.

Další poznámky k závislostem aplikací najdete níže.

Vrstvy se můžou shrnout takto:

Modul plug-in

Imperativní rozhraní umožňující přímou komunikaci s knihovnou DLL modulu. Tady jsou běžné problémy, jako je zařazování argumentů, a některé vytváření více funkcí často používaných v kombinaci do složených direktiv. Zůstává rozhraní jazyka C# nízké úrovně pro základní knihovnu DLL jazyka C++. Jeho přímé použití je k dispozici, ale není nutné ani vhodné.

Základ

Jádro je zapouzdření všech kroků nezbytných pro získání výhod stabilního světem uzamčeného prostoru nástroje World Locking Tools zabaleného do deklarativního rozhraní. Očekává se, že se doručí funkční aplikace, která bude používat pouze funkce jádra.

Nástroje

Nástroje jsou z velké části diagnostické. Vizualizace procesů nástroje World Locking Tools jsou součástí formulářů, které se dají snadno přidat do libovolného projektu, který používá nástroje World Locking Tools.

Součástí jsou i další praktické nástroje , ale očekává se, že budou užitečné při zahájení psaní kódu vlastních řešení, nikoli konečné řešení jako nabídky Core.

Příklady

Vrstva Příklady se pokouší prezentovat ukázky nastavení běžných scénářů při používání nástrojů World Locking Tools a osvědčených postupů v integraci nástroje World Locking Tools do různých scénářů.

Všechny nezbytné závislosti MRTK pro manipulaci s uživatelským rozhraním a objekty jsou omezeny na skripty a předfaby ve vrstvě Examples. Tím zůstanou nižší vrstvy bez jakýchkoli externích závislostí.

Skripty a prostředky ve vrstvě Příklady se neočekávají přímo do expedičních produktů, i když neexistuje žádný zákaz. Spíše jejich konstrukce upřednostňuje jednoduchost a srozumitelnost oproti opakované použitelnosti a efektivitě.

Aplikace

Obecně platí, že aplikace bude potřebovat pouze závislost na jádru nástroje World Locking Tools.

Během vývoje je ve vrstvě Nástroje k dispozici mnoho vizualizací a dalších pomocných rutin pro pochopení neočekávaného chování. Tyto pomocné rutiny by v ideálním případě byly z dokončené aplikace nebo aspoň zakázány. Samozřejmě, že jsou zdarma i pro jiné použití, buď v jejich aktuální podobě, nebo změněn. Podrobnosti najdete v licenci.

Pro pokročilé použití a experimentování s úplnými možnostmi nástroje World Locking Tools nabízí vrstva plug-in imperativní přístup k knihovně DLL modulu nízké úrovně.

Pokud se přístup k vrstvě plug-inu stane nezbytným, může odkazovat na nedostatek na povrchu rozhraní API nabízeném ve vrstvě Core. Tým World Locking Tools vždy hledá takové mezery. Zvažte přispívání takových přehledů týmu. Podívejte se na příspěvky.

Upozornění na délku cesty instalace

Některé verze MRTK mají problém s dlouhými instalačními cestami. Délka úplné cesty hlubokých podsložek v instalaci MRTK může překročit limit cesty systému Windows (260 znaků). Pokud se zobrazí chyba sestavení v následujícím formuláři:

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"

ale soubor je ve skutečnosti na jednotce, pak problém je pravděpodobně délka cesty. Tým MRTK o tom ví a pracuje na jeho vylepšení (poznámka: Věřím, že zde udělali skvělá vylepšení a už se nejedná o problém). Mezitím je alternativním řešením zkrátit předponu cesty kombinací následujících možností:

  1. Nainstalujte projekt Unity do kořene cesty kratší délky, například D:\Proj.
  2. Pokud klonujete úložiště, naklonujte kořen nástrojů World Locking Tools do něčeho kratšího než výchozí \MixedReality-WorldLockingTools-Unity, například:
git clone https://github.com/microsoft/MixedReality-WorldLockingTools-Unity.git d:\MyGit\wlt

Tento limit cesty obecně není problém se samotnými nástroji World Locking Tools, protože nevyužívají strukturu složek, která je tak hluboko.

Přidání nástrojů World Locking Tools do projektu Unity

Poznámka:

Následující článek popisuje ruční instalaci nástrojů World Locking Tools a závislostí. Mnohem efektivnější proces instalace je k dispozici prostřednictvím nástroje pro funkce hybridní reality. Zde je popsána instalace prostřednictvím nástroje funkcí. Pokud nástroj funkcí nainstaluje WLT, můžete přeskočit následující kroky a pokračovat přidáním WLT do scény.

World Locking Tools spoléhá na nuget k instalaci základního zamrzlého world engine.

Pokud do existujícího projektu přidáte nástroje World Locking Tools, doporučujeme začít s projektem, který byl ověřen pro sestavení a nasazení do zařízení HoloLens. To pomůže oddělit problémy se spuštěním aplikace na HoloLensu na prvním místě, což může být složité, od problémů s nástroji World Locking Tools. Pak přejděte do části Instalace FrozenWorld Engine a části World Locking Tools Assets níže.

Instalace frozenWorld Engine

Z NuGetu lze získat knihovnu DLL zmrazeného world engine buď pomocí vynikajícího nástroje NuGet for Unity , nebo ručně.

Použití NuGetu pro Unity

Ujistěte se, že je informační kanál nuget.org ve zdrojích. Zkontrolujte to v NuGetu NuGetu pro úpravy >> Unity pro Unity>. Pokud ne, buď:

Pomocí grafického uživatelského rozhraní Pro přidání nového zdrojového grafického uživatelského rozhraní v Unity > Upravte > předvolby > NuGet for Unity přidejte stejnou sdílenou složku.

  • Nahraďte "Nový zdroj" názvem vašeho výběru (například "NuGet").
  • Nahraďte "source_path" za "http://www.nuget.org/api/v2/".

Po potvrzení informačního kanálu nuget.org vyhledejte v Unity > NuGet Spravovat balíčky NuGet > a nainstalujte nejnovější verzi Microsoft.MixedReality.FrozenWorld.Engine. (Vyhledejte "FrozenWorld".)

Pokud chcete aktualizovat na novější verzi, znovu otevřete Balíčky NuGet Pro správu NuGet > Unity > a vyhledejte balíček FrozenWorld.Engine a vyberte Aktualizovat. Poznámka: Možná budete muset na kartě Aktualizace najít verzi, kterou hledáte.

Ruční zamrzlé world engine DLL instalace

Pomocí textového editoru packageSources přidejte řádek do assetů/NuGet.config, například:

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

Pokud ještě nemáte soubor Assets/NuGet.config, můžete ho zkopírovat z úložiště World Locking Tools na GitHubu.

Pomocí textového editoru přidejte balíček dll frozen world engine do souboru Assets/packages.config, například:

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

Pokud ještě nemáte soubor Assets/packages.config, můžete ho získat z úložiště World Locking Tools na GitHubu nebo jednoduše zkopírovat do textového souboru s názvem Assets/packages.config.

Po nastavení NuGet.config a packages.config nainstalujte:

  1. Získejte nejnovější nuget.exe ze stažených souborů NuGet.
  2. Ujistěte se, že nuget.exe je ve vaší cestě (tady předpokládám, že se zkopírovala do assetů).
  3. Otevřete příkazové okno PowerShellu a změňte adresář na složku Assets.
  4. Spusťte následující příkaz:
.\nuget.exe restore

Upgrade na novější verzi:

  1. Aktualizujte číslo verze FrozenWorld.Engine ve výše uvedeném souboru packages.config na požadovanou verzi (například version="1.0.0" se stane version="1.0.1").
  2. Odstraňte cokoli ve složce Assets/Packages od Microsoft.MixedReality.Unity.FrozenWorld.Engine.
  3. Znovu spusťte nuget.exe výše.

World Locking Tools Assets

Buď naimportujte požadované soubory nástroje World Locking Tools .unitypackage do projektu (upřednostňovaná metoda), nebo je zkopírujte. Mohou být přesunuty do podsložky v rámci prostředků, aby se dostaly mimo způsob vývoje aplikací.

Nejnovější stabilní .unitypackage soubory najdete v nástrojích World Locking Tools for Unity Release.

Vrstva WorldLocking.Core a Engine bude určitě nutná, takže minimální instalační balíček by byl WorldLockingCoreEngine.unitypackage.

Pokud chcete zjistit, jaké další vrstvy se můžou vyžadovat, podívejte se na diskuzi o vrstvách nástroje World Locking Tools a jejich závislostech výše. Každá vrstva je obsažena v jednom balíčku Unity.

Vzhledem k tomu, že některé z nástrojů world locking tools používají funkce z MRTK, kompatibilní snímek MRTK je součástí příklady unitypackage. Nejnovější verzi MRTK najdete tady.

Přidání nástrojů World Locking Tools do scény Unity

Poznámka:

Níže uvedené kroky jsou všechny automatizované v nástroji WLT Konfigurovat scénu, který najdete v nabídce Mixed Reality Toolkit > Utilities > World Locking Tools. Nabídka Konfigurace

V rámci projektu Unity obsahujícího modul FrozenWorld (z nuget.org) naimportujte všechny požadované vrstvy prostředků nástroje World Locking Tools (ale alespoň WorldLocking.Core) a volitelně MRTK. Pak vytvořte novou scénu (nebo otevřete existující scénu).

Poznámka:

Přidejte další uzel v kořenovém adresáři hierarchie fotoaparátu. Tento uzel se použije k úpravě hlavy sledované kamery do světem uzamčeného prostoru. (Pokud používáte MRTK, bude tento nový GameObject nadřazený objekt MixedRealityPlayspace.)

Základní prostředí

Přetáhněte prefab WorldLockingManager z assets/WorldLocking.Core/Prefabs do scény. Jeho místo ve scéně nezáleží, ale nemělo by být ve stromu kamery. Podívejte se na ukázkovou scénu pro navrženou konfiguraci.

Pro prefab WorldLockingManager jsou k dispozici nastavení, ale jejich ponechání na výchozích hodnotách se doporučuje začít.

Vysvětlení zobrazených možností najdete v tématu World Locking Tools Context .

[Volitelné] MRTK

Nástroje pro uzamčení světa se doplňují s orthogonálními nástroji MRTK. Použití MRTK spolu s nástroji World Locking Tools je zcela volitelné.

To znamená, že ukázky World Locking Tools jsou vytvořeny pomocí MRTK a MRTK je obecně velmi cenné při vývoji typů aplikací MR, které nejvíce využívají nástroje World Locking Tools.

Pokud místo použití snímku zahrnutého v příkladech používáte MRTK, doporučujeme přidat nejnovější verze aspoň následujících balíčků:

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

[Volitelné] Vizualizace spongy a svět uzamčených ukotvení

To vyžaduje přidání nástroje WorldLocking.Tools do prostředků projektu.

Pokud chcete vizualizovat kotvy, přetáhněte prefab AnchorGraphVisual z assets/WorldLocking.Tools/Prefabs do vaší scény. Zaškrtávací políčka pro přepínání aspektů vizualizace v inspektoru jsou ve správci WorldLockingManager.

Vzhledem k tomu, že vizualizace WorldLocking.Tools nejsou silně optimalizované a dlouho před tím, než bude relevantní doba zpracování základních nástrojů World Locking Tools, sníží výkon.

[Volitelné] Jednoduchý řídicí panel pro řízení parametrů v hybridní realitě

K dispozici je jednoduchý SYSTÉM HUD, který lze použít k řízení WorldLockingManager za běhu z prostředí MR. Ty se zadají v balíčku Příklady. I když se dají použít tak, jak jsou, jsou určeny jako vzory při sestavování podobných funkcí do vlastních zobrazovacích systémů a uživatelských rozhraní aplikací.

Přetáhněte do prefabátoru WorldLocking.Examples/Prefabs/Dashboard a nasměrujte jeho pole Vizualizéru ukotvení na Vizualizér v předchozí části.

Migrace existující scény na nástroje World Locking Tools

Největší změnou při přechodu na nástroje World Lock Tools je, že už není nutné používat prostorové kotvy k virtuálním objektům world-lock.

Prostorové kotvy byly tradičně jediným nástrojem dostupným pro jednotlivé objekty. Pokud ale používáte nástroje World Locking Tools, souřadnicový prostor, ve kterých tyto virtuální objekty existují, je již po celém světě uzamčen. Není potřeba žádné další uzamykání.

Nejen, že prostorové kotvy nejsou zbytečné, nebudou fungovat správně, protože nevezmou v úvahu další transformace v hierarchii kamery (například transformace MRTK Playspace).

Z scény by proto měly být odebrány všechny prostorové kotvy a všechny skripty, které přidávají prostorové kotvy, by se tak měly ukončit. Prostorové kotvy nemusí být nahrazeny nic; Nástroje pro zamykání světa ukotvují své cíle skutečnému světu.

Pokud je žádoucí porovnat world-locking s a bez nástroje World Locking Tools, pak místo odebrání WorldAnchors, mohou být nahrazeny ToggleWorldAnchor dodané v WorldLocking.Tools.

ToggleWorldAnchor funguje přesně stejně jako WorldAnchor, s důležitým rozdílem, že když je Správce nástrojů World Locking Tools Manager aktivní, pohodlně zakáže sám sebe a dostane se mimo cestu. Když je správce nástrojů World Locking Tools zakázaný, chová se jako normální WorldAnchor.

Pokud z nějakého jiného důvodu jsou WorldAnchors stále vyžadovány ve scéně (například pro sdílení sítě), lze je použít s adaptérem, který je dodáván jako WorldAnchorAdapter.

WorldAnchorAdapter transformuje nezpracovanou pozici Objektu GameObject umístěného worldAnchorem, do světa uzamčeného globálního prostoru Unity a pak použije transformaci na cílový objekt. Pokud ho chcete použít, a ne přidat WorldAnchor přímo k objektu, worldAnchor by se měl použít na objekt proxy (obvykle prázdný GameObject) a pak při update() WorldAnchorAdapter přečte pozici WorldAnchor, transformuje jej správně a použije ho na cíl.

Instalace byla dokončena.

Po provedení výše uvedených kroků bude projekt nasazený do zařízení fungovat upraven nástroji World Lock Tools, aby se zachoval optimální světově uzamčený prostor. Všechny pevné objekty umístěné ve scéně zůstanou vizuálně konzistentní vzhledem k sobě i fyzickému světu.

Dostupné ukázkové aplikace

Ukázkové scény, včetně skriptů a prostředků, jsou k dispozici k předvedení složitějšího použití funkcí nástroje World Locking Tools.

Například WorldLockedPhysicsSample poskytuje jednoduché prostředí, ve kterém lze fyzicky simulované objekty vytvářet a odebírat, vzájemně komunikovat a s prostředím (prostorové mapování).

Pokud se chcete zaměřit na funkci Připnutí prostoru, poskytuje SpacePin mnohem zjednodušený příklad zarovnání rozsáhlého virtuálního objektu na skutečné funkce světa.

RayPins rozšiřuje možnosti zavedené příkladem SpacePin, což umožňuje připnutí virtuálního světa k fyzickému světu s paprskovými testy proti prostorové síti.

Reference pro začátek

Pokud neznáte základy vytváření, sestavování a nasazování aplikací rozšířené reality do řady zařízení HoloLens, tady jsou některé reference, které vám můžou pomoct začít.

Přehled vývoje Unity – Unity pro vývoj mr/AR

ZÁKLADY MR 100 – Seznámení se zahájením vývoje pro HoloLens

Kurzy k HoloLens 2 – Projděte si úvodní vývoj pro HoloLens 2.

Souřadnicové systémy koordinují důsledky pro vývoj ar.

  • Všimněte si, že nástroje World Locking Tools řeší problémy, které jsou zde popsány.

Máte potíže?

Viz průvodce odstraňováním potíží.