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

Nejtenčí možné nastavení

Tento kurz projde minimálním nastavením a zprovozní všechno, co je ve vaší aplikaci uzamčené světem, bez nutnosti dalších akcí (například prostorových ukotvení). Nachází se v úložišti Samples , které je na stejné straně tohoto úložiště.

Úvodní příručka

Méně koncepční a pragmatičtější přístup k integraci WLT do projektu najdete tady. Tam, kde je to vhodné, odkazuje zpět na tyto důkladnější stránky. I když je to opravdu otázka osobní preference, který přístup je vhodnější, rychlé přečtení stránky Před zahájením může být úspora času na tom, kde věnovat energii 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 k dispozici prostřednictvím subsystémů AR Unity.

Sestavení kontinuální integrace (CI) world locking tools se ověřuje pomocí Unity2018.4.6f1 v sadě Visual Studio 2017. Rozsáhlý vývoj WLT byl však také proveden pomocí gamutu verzí Unity2018 a řady Unity2019. Při vývoji těchto nástrojů se použila sada Visual Studio 2017 i Visual Studio 2019.

Pokud dojde k problémům s kompatibilitou s jinými verzemi Unity nebo sady Visual Studio, rádi bychom o tom slyšeli! Nejlepší způsob, jak nahlásit problémy, je použít portál pro problémy na GitHubu.

Předpokládané 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 nástrojů pro uzamykání světa

Nástroje world locking tools jsou rozdělené do čtyř vrstev. Se šipkami směřujícími k vrstvě, na které závisí, vypadá přímočarý graf závislostí takto:

Diagram vrstev

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

Zatímco vrstva Examples používá sadu MixedRealityToolkit (MRTK), žádná z ostatních vrstev nemá žádné externí závislosti a všechny funkce jsou k dispozici kompatibilní s MRTK, ale nezávisle na nich.

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

Vrstvy se dají shrnout takto:

Modul plug-in

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

Jádro

Jádro je zapouzdřením všech kroků potřebných k 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 funkční aplikace bude dodávána pouze s využitím funkcí z jádra.

nástroje

Nástroje jsou z velké části diagnostické povahy. Vizualizace procesů nástroje World Locking Tools jsou součástí formulářů, které lze 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 vám pomůžou začít kódovat vlastní řešení, než aby to byla konečná řešení, jak nabízí 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é postupy při integraci nástrojů world locking tools do různých scénářů.

Všechny potřebné závislosti MRTK pro manipulaci s uživatelským prostředím a objekty jsou omezeny na skripty a prefaby ve vrstvě Examples. Spodní vrstvy tak zůstanou bez jakýchkoli externích závislostí.

Neočekává se, že skripty a prostředky ve vrstvě Examples budou integrovány přímo do expedičních produktů, i když to není zakázáno. Jejich konstrukce spíše upřednostňuje jednoduchost a srozumitelnost před opětovnou použitelností a efektivitou.

Aplikace

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

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

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

Pokud je přístup k vrstvě modulu plug-in nutný, může to ukazovat na nedostatek v oblasti rozhraní API nabízené ve vrstvě Core. Tým World Locking Tools se vždy snaží tyto mezery vyplnit. Zvažte přispívání takových přehledů týmu. Viz přispívání.

Upozornění na délku instalační cesty

Některé verze sady MRTK mají problém s dlouhými instalačními cestami. Úplná délka cesty hlubokých podsložek v instalaci SADY 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 velká vylepšení a už to není 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ž je výchozí "\MixedReality-WorldLockingTools-Unity", například:
git clone https://github.com/microsoft/MixedReality-WorldLockingTools-Unity.git d:\MyGit\wlt

Tento limit cest obecně není problém samotných nástrojů World Locking Tools, protože nevyužívají strukturu složek, která je tak hluboká.

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 jednodušší proces instalace je k dispozici prostřednictvím nástroje Mixed Reality Feature Tool. Instalace prostřednictvím nástroje Feature Tool je popsaná tady. Pokud nástroj funkce nainstaluje WLT, můžete přeskočit následující a pokračovat přidáním WLT do scény.

Nástroje World Locking Tools spoléhají nuget na instalaci základního modulu Frozen World Engine.

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

Instalace modulu FrozenWorld

Frozen World Engine DLL lze získat z NuGet buď pomocí vynikajícího nástroje NuGet for Unity , nebo ručně.

Použití NuGetu pro Unity

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

Stejnou sdílenou složku přidáte pomocí grafického uživatelského rozhraní Přidat nový zdroj v Předvolbách > úprav > Unity > NuGet for Unity.

  • Nahraďte "Nový zdroj" názvem podle vašeho výběru (například "NuGet").
  • Nahraďte "source_path" názvem "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>, vyhledejte balíček FrozenWorld.Engine a vyberte Aktualizovat. Poznámka: Pokud chcete najít verzi, kterou hledáte, budete možná muset přejít na kartu Aktualizace.

Ruční instalace knihovny DLL Frozen World Engine

Pomocí textového editoru packageSources můžete přidat řádek do NuGet.config Assets/NuGet.config, například:

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

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

Pomocí textového editoru přidejte balíček Frozen World Engine DLL do 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>

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

Po NuGet.config a packages.config instalace provedete instalaci pomocí:

  1. Získejte nejnovější nuget.exe ze stažených souborů NuGet.
  2. Ujistěte se, že je ve vaší cestě nuget.exe (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 packages.config souboru na požadovanou verzi (například verze="1.0.0" se změní na version="1.0.1").
  2. Odstraňte cokoli ze složky Assets/Packages začínající na Microsoft.MixedReality.Unity.FrozenWorld.Engine.
  3. Spusťte znovu nuget.exe jako výše.

Prostředky nástrojů pro uzamykací svět

Buď importujte požadované soubory 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 assets, aby se dostaly z cesty pro vývoj aplikací.

Nejnovější stabilní .unitypackage soubory najdete v tématu World Locking Tools for Unity Releases.

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

Pokud chcete zjistit, jaké další vrstvy můžou být potřeba, přečtěte si téma 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é příklady nástrojů world locking tools používají funkce z MRTK, kompatibilní snímek MRTK je součástí příkladů unitypackage. Nejnovější verzi MRTK najdete tady.

Přidání nástrojů world locking tools do scény Unity

Poznámka

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

V rámci projektu Unity, který obsahuje modul FrozenWorld (z nuget.org), naimportujte všechny požadované vrstvy world locking tools Assets (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 kamery. Tento uzel se použije k úpravě kamery se sledováním hlavy do světa uzamčeného prostoru. (Pokud používáte MRTK, bude tento nový objekt GameObject nadřazený objektu MixedRealityPlayspace.)

Základní prostředí

Přetáhněte prefab WorldLockingManager z Assets/WorldLocking.Core/Prefabs do scény. Na jeho místě ve scéně nezáleží, ale nemělo by to být ve stromu kamery. Podívejte se na ukázkovou scénu s navrhovanou konfigurací.

Na panelu WorldLockingManager jsou k dispozici nastavení, ale doporučujeme nechat je na výchozích hodnotách, abyste mohli začít.

Vysvětlení zobrazených možností najdete v tématu Kontext nástrojů pro uzamykání světů.

[Volitelné] MRTK

World Locking Tools je doplněk s orthogonální s 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ů MR aplikací, které nejvíce využívají World Locking Tools.

Pokud používáte MRTK a nepoužíváte snímek, který je součástí příkladů, doporučujeme přidat nejnovější verze alespoň následujících balíčků:

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

[Volitelné] Vizualizace houbovité a světem uzamčené kotvy

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

Pokud chcete vizualizovat ukotvení, přetáhněte prefab AnchorGraphVisual z Assets/WorldLocking.Tools/Prefabs do scény. Zaškrtávací políčka pro přepínání aspektů vizualizace v inspektoru jsou na worldlockingmanageru.

V rámci diagnostiky nejsou vizualizace WorldLocking.Tools výrazně optimalizované a sníží výkon dlouho před tím, než se doba zpracování základních nástrojů World Locking Tools stane relevantní.

[Volitelné] Jednoduchý řídicí panel pro ovládání parametrů v rámci Mixed Reality

Je k dispozici jednoduchá služba HUD, která se dá použít k řízení worldlockingmanageru za běhu z mr. Ty jsou součástí balíčku Příklady. I když je možné je používat tak, jak jsou, jsou určeny jako vzory při sestavování podobných funkcí do vlastního zobrazovacího systému a uživatelského prostředí aplikace.

Přetáhněte předběžné nastavení WorldLocking.Examples/Prefabs/Dashboard a nasměrujte jeho pole Anchor Visualizer na Vizualizér v předchozí části.

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

Největší změnou při přechodu na nástroje World Locking Tools je to, že už není nutné používat prostorové kotvy k virtuálním objektům se zámkem světa.

Prostorové kotvy byly tradičně jediným nástrojem, který je k dispozici pro jednotlivé objekty. Při použití nástrojů World Locking Tools je ale souřadnicový prostor, ve kterých tyto virtuální objekty existují, již uzamčený. Žádné další uzamykání není potřeba.

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

Proto by se všechny prostorové kotvy měly ze scény odebrat a všechny skripty přidávané prostorové kotvy by měly přestat. Prostorové kotvy nemusí být ničím nahrazovány; Nástroje pro uzamykání světů ukotvují své cíle do reálného světa.

Pokud je žádoucí porovnat uzamykání světa s a bez nástroje World Locking Tools, pak místo odebrání worldAnchors mohou být nahrazeny přepínačem ToggleWorldAnchor dodaným v WorldLocking.Tools.

ToggleWorldAnchor funguje úplně stejně jako WorldAnchor, s důležitým rozdílem, že když je správce nástrojů World Locking Manager aktivní, pohodlně se vypne a přestane překážovat. Pokud je správce nástrojů uzamčení světa zakázán, chová se jako normální WorldAnchor.

Pokud se worldAnchors ve scéně z nějakého jiného důvodu stále vyžadují (například ke sdílení v síti), dají se použít s adaptérem dodávaným jako WorldAnchorAdapter.

Objekt WorldAnchorAdapter transformuje nezpracovanou pozici objektu GameObject umístěného objektem WorldAnchor na svět uzamčený globální prostor Unity a pak tuto transformaci použije na cílový objekt. Pokud ho chcete použít, místo přidání objektu WorldAnchor přímo k objektu by měl být objekt WorldAnchor použit u objektu proxy (obvykle prázdného objektu GameObject) a pak při aktualizaci Update() objekt WorldAnchorAdapter přečte pozici objektu WorldAnchor, správně ji transformuje a použije ji na cíl.

Instalace dokončena

Po provedení výše uvedených kroků se projekt nasazený do zařízení spustí upravený nástroji World Locking Tools, aby se zachoval optimálně stabilní prostor uzamčený světem. Všechny pevné objekty umístěné ve scéně zůstanou vizuálně konzistentní vzhledem k sobě navzájem i s fyzickým světem.

Dostupné ukázkové aplikace

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

Například WorldLockedPhysicsSample poskytuje jednoduché prostředí, ve kterém se dají vytvářet a odebírat fyzicky simulované objekty, které interagují mezi sebou a s prostředím (prostorové mapování).

Pokud se chcete na funkci připnutí prostoru podívat podrobněji, nabízí Model SpacePin mnohem zjednodušený příklad zarovnání rozsáhlého virtuálního objektu na funkce reálného světa.

RayPins rozšiřuje možnosti zavedené v příkladu SpacePin a umožňuje připnutí virtuálního světa k fyzickému světu pomocí ray testů proti prostorové síti.

Reference pro začátek

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

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

MR Basics 100 – seznámení s vývojem pro HoloLens

kurzy k HoloLens 2 – projděte si, jak začít s vývojem pro HoloLens 2.

Souřadnicové systémy Koordinujte dopad na prostor při vývoji rozšířené rozšířené závislosti.

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

Máte potíže?

Projděte si průvodce odstraňováním potíží.