Zpráva k vydání verze sady Microsoft Mixed Reality Toolkit 2.5

Důležité

Existuje známý problém s kompilátorem, který ovlivňuje aplikace vytvořené pro Microsoft HoloLens 2 pomocí ARM64. Tento problém je opraven aktualizací sady Visual Studio 2019 na verzi 16.8 nebo novější. Pokud nemůžete aktualizovat sadu Visual Studio, importujte com.microsoft.mixedreality.toolkit.tools balíček a použijte alternativní řešení.

Novinky ve verzi 2.5.4

Opravili jsme chybu s integrací Oculus při použití UPM.

Při použití UPM by měl soubor OculusXRSDKDeviceManagerProfile při spuštění vždy nastavenou hodnotu Žádné. Tato verze konfiguruje Správce zařízení tak, aby při spuštění odkazoval na pracovní sadu předfabů.

Opravuje problém s OpenXR přes UPM.

Opravuje problém, kdy se do link.xml ve výchozím nastavení nepřidali poskytovatelé OpenXR, což způsobovalo selhání spuštění nových projektů na zařízení při použití OpenXR a MRTK prostřednictvím Správce balíčků Unity. Stávající projekty, které se upgradují, budou i nadále potřebovat toto přidání ručně.

Novinky ve verzi 2.5.3

Opravuje regresi s Oculusem zavedeným ve 2.5.2.

Aktualizace 2.5.2 zavedla problém sestavení při integraci sady Oculus SDK. Tato verze tento problém vrátí zpět.

Novinky ve verzi 2.5.2

Přidání podpory pro OpenXR

Byla přidána počáteční podpora balíčku Unity OpenXR Preview a balíčku OpenXR Mixed Reality Microsoftu. Další informace najdete na stránce ZAČÍNÁME MRTK/XRSDK, příspěvku na fóru Unity nebo v dokumentaci microsoftu .

Důležité

OpenXR v Unity se podporuje jenom v Unity 2020.3 a novějších. Podporuje také pouze buildy x64, ARM a ARM64.

Chyby vizualizace hranic byly opraveny.

Vizualizace hranic, jako je podlaha nebo stěny, budou nyní správně nakonfigurované a viditelné za běhu podle profilu hranice.

Podpora nástroje MSBuild pro Unity

Podpora nástroje MSBuild pro Unity byla od verze 2.5.2 odebrána, aby byla v souladu s novými pokyny k balíčku Unity.

Novinky ve verzi 2.5.1

Opraveny chyby závislostí balíčků

Tato verze opravuje nesprávné závislosti souborů mezi balíčky (např. soubory ve standardních prostředcích už nesprávně odkazují na soubory ve službě Foundation). Verze 2.5.1 také přidává explicitní závislost na Text Mesh Pro.

Shadery balíčků standardních prostředků zkopírované do Assets/MRTK/Shaders

Při instalaci balíčku Standardní prostředky prostřednictvím UPM se shadery zkopírují do složky Assets/MRTK/Shaders, aby už nebyly neměnné. Tím se vyřeší problém s aktualizacemi shaderů pro kanál URP (Universal Render Pipeline), které při příštím načtení projektu vrací starší verzi.

Oprava přilepení kurzoru teleportu do rukou

Tato verze opravuje problém , kdy se cílový kurzor teleportu může držet na rukou vizuálů.

Novinky ve verzi 2.5.0

Podpora Správce balíčků Unity (UPM)

Sada Mixed Reality Toolkit se teď dá spravovat pomocí Správce balíčků Unity.

Balíček MRTK Foundation UPM

Poznámka

K importu balíčků MRTK UPM je potřeba provést několik ručních kroků. Další informace najdete v Mixed Reality Toolkit a Unity Package Manageru.

Podpora sady Oculus Quest XR SDK

MRTK teď podporuje spouštění náhlavních souprav a kontrolerů Oculus Quest pomocí nativního kanálu sady XR SDK. Díky práci Erica Provenchera na MRTK-Questu je sledování rukou také podporováno balíčkem Oculus Integration Unity!

Pokyny k nasazení zařízení v úkolu Oculus pomocí nového kanálu najdete v průvodci nastavením úkolu Oculus.

Posouvání kolekce objektů

Komponenta MRTK UX byla upgradována z experimentální funkce a nabízí větší volnost pro rozložení 3D obsahu různých velikostí s přidanou podporou pro objekty, které nemají připojené kolidéry. Byla také přidána nová možnost zákazu maskování obsahu, která usnadňuje vytváření prototypů.

Další informace najdete v tématu Posouvání kolekce objektů .

Posouvání kolekce objektů

Vylepšení animace, zpracování a zvuku teleportování ukazatele

Ukazatel teleportu teď obsahuje vylepšené animace a zvukovou zpětnou vazbu. Vylepšili jsme také manipulaci s teleportovacím ukazatelem, aby zvládal plynulejší přechod z umístění na blízké povrchy na vzdálenější povrchy.

Tahák pro simulaci vstupu

Scéna HandInteractionExamples teď obsahuje konfigurovatelného zástupce pro zobrazení stránky nápovědy pro simulaci vstupu.

Tahák ke vstupní simulaci

Zrakové pohledy na simulaci vstupu pomocí myši

Uživatelé teď můžou myš používat k simulaci sledování očí. Podívejte se na Eye Simulation Mode pole ve vstupním profilu simulace a nastavte ho na Myš. Tím se nahradí předchozí Simulate Eye Position pole.

Eye Gaze Mouse

Vstupní simulační ovladač pohybu v režimu přehrávání editoru

Uživatelé teď můžou simulovat ovladač pohybu stejně jako ruce v režimu přehrávání editoru. V současné době jsou podporována tlačítka triggeru, uchopte a nabídka.

Kuželové uchopte ukazatel

Uchopovací ukazatele je teď možné nakonfigurovat tak, aby se dotazovaly na blízké objekty pomocí kuželu z bodu zachycení místo koule. To se více podobá chování výchozího rozhraní HoloLens 2, které se dotazuje na blízké objekty pomocí kužele. DefaultHoloLens2InputSystemProfile byl také upraven tak, aby používal nový ConicalGrabPointersoubor .

Kuželové uchopte ukazatel

Balíček TestUtilities

Teď je k dispozici balíček (Microsoft.MixedReality.Toolkit.Unity.TestUtilities.2.5.0.unitypackage), který obsahuje testovací infrastrukturu PlayMode a TestMode, kterou MRTK používá k vytváření kompletních testů. Tato infrastruktura byla velmi praktická pro samotný tým MRTK a jsme rádi, že ji uživatelé používají k přidání testovacího pokrytí do svých vlastních projektů.

Následující kód ukazuje, jak vytvořit testovací ruku, zobrazit ji na určitém místě, přesunout ji a pak ji otevřít stažením a otevřením.

TestHand leftHand = new TestHand(Handedness.Left);
yield return leftHand.Show(new Vector3(-0.1f, -0.1f, 0.5f));
yield return leftHand.SetGesture(ArticulatedHandPose.GestureId.Pinch);
yield return leftHand.Move(new Vector3(0.2f, 0.2f, 0));
yield return leftHand.SetGesture(ArticulatedHandPose.GestureId.Open);

Pokyny k zápisu testu pomocí těchto nástrojů TestUtilities najdete v této části o psaní testů.

Příklady existujících testů, které používají tuto infrastrukturu, najdete v tématu PlayModeTests od MRTK.

Podpora modulů Unity Leap Motion 4.5.1

Byla přidána podpora pro moduly Leap Motion Unity verze 4.5.1 a byla odebrána podpora prostředků verze 4.4.0. Aktuálně podporované verze modulů Leap Motion Unity jsou 4.5.0 a 4.5.1.

K dispozici je také další krok pro počáteční integraci leap motion, viz Jak nakonfigurovat sledování leap motion hand v MRTK , kde najdete další informace.

Spatial Awareness Mesh Observer lépe zvládá přizpůsobení materiálů

V této verzi Windows Mixed Reality Spatial Mesh Observer se u komponent a Generic XR SDK Spatial Mesh Observer zlepšilo zpracování vizuálních materiálů. Materiály se teď zachovají, když pozorovatel aktualizoval síť, kde se dříve resetovala na výchozí VisibleMaterial podle konfigurace v profilu.

To umožňuje vývojářům změnit materiál sítě a neočekávaně nepřepsat změny.

Link.xml vytvořené ve složce MixedRealityToolkit.Generated

Se zavedením unity Package Manger MRTK teď MRTK zapíše link.xml soubor do Assets/MixedRealityToolkit.Generated složky, pokud žádný není k dispozici. Doporučujeme přidat tento soubor (a link.xml.meta) do správy zdrojového kódu. Link.xml se používá k ovlivnění funkce spravovaného odstraňování kódu linkeru Unity.

Další informace o link.xml souboru MRTK najdete v článku o mrtk a spravovaném odstraňování kódu .

Unity 2019.3+: Dialogové okno konfigurace MRTK se už nepokouší povolit podporu starší verze XR.

Aby se zabránilo potenciálním konfliktům při používání platformy XR Platformy Unity, byla z dialogového okna konfigurace MRTK odebrána možnost povolit podporu starší verze XR. V případě potřeby je možné v Unity 2019 povolit podporu starší verze XR pomocí možnosti Upravit>nastavení>> projektu– Podporuje se nastavení> XR.

Snížení režie initializeOnLoad

Pracovali jsme na tom, abychom snížili množství práce, která se spouští v obslužných rutinách InitializeOnLoad, což by mělo vést ke zlepšení rychlosti vývoje vnitřní smyčky. Obslužné rutiny InitializeOnLoad se spouštějí při každé kompilaci skriptu, před vstupem do režimu přehrávání a také při spuštění editoru. Tyto obslužné rutiny teď běží v mnohem menším počtu případů, což vede k obecnému vylepšení odezvy Unity.

V některých případech bylo nutné učinit kompromis:

Ovládací prvek Bounds odstupňovaný

Ovládací prvek Bounds

Ovládací prvek Bounds je odstupňovaný od experimentálního a obsahuje spoustu nových funkcí a spousty oprav chyb. Tady je seznam hlavních bodů této aktualizace:

  • vlastnosti jsou rozdělené do konfigurací, což usnadňuje nastavení ovládacího prvku ohraničení.
  • konfigurace mohou být sdíleny prostřednictvím skriptovatelných objektů
  • Každá vlastnost / skriptovatelná vlastnost je konfigurovatelná za běhu.
  • řídicí zařízení bounds se už při změnách vlastností nevytvoří znovu.
  • podpora překladů
  • podpora úplného omezení prostřednictvím správce omezení
  • integrace elastics systému (experimentální)

Starý ohraničující rámeček je teď zastaralý a existující herní objekty pomocí ohraničujícího rámečku je možné upgradovat pomocí nástroje pro migraci nebo inspektoru ohraničujícího rámečku.

Komponenta správce omezení

Omezení teď mohou být použita jak ovládacím prvkem hranic, tak manipulátorem objektů prostřednictvím nové komponenty správce omezení. Obě komponenty vytvoří správce omezení ve výchozím nastavení a automaticky zpracují všechna připojená omezení.

Kromě správce omezení automatického chování se také dodává s ručním režimem, který umožňuje uživatelům rozhodnout se, které omezení se má zpracovat. Z tohoto důvodu se způsob zobrazení omezení v inspektoru vlastností trochu změnil.

Zobrazení inspektoru s výběrem správce ručních omezení

Omezení použitá na komponentu jsou nyní zobrazena jako seznam v komponentě správce omezení, zatímco komponenta používající správce omezení ( ovládací prvek hranic nebo manipulátor objektů) nyní zobrazí vybraného správce omezení a režim (automatický nebo ruční). Další informace najdete v části správce omezení v naší dokumentaci.

Aktualizace materiálu tlačítka HoloLens 2

Aktualizace materiálu přední klece tlačítka HoloLens 2 tak, aby se odstranila černá barva v MRC.

Aktualizace materiálu tlačítka HoloLens 2

Aktualizace panelu popisu, pohyblivá ukázková scéna

Aktualizovaný panel popisu. (SceneDescriptionPanelRev.prefab) Nový design poskytuje uchopitelný horní panel, který uživateli umožňuje upravit nebo přesunout celou scénu.

Aktualizace panelu popisů

Vizualizace prostorové sítě – puls při klepnutí na vzduch

Aktualizace příkladu pulse shaderu pro prostorovou síť tak, aby odpovídala chování prostředí HoloLens 2.

Pulse on air-tap

Elastický systém (experimentální)

Elastický systém 2

MRTK se nyní dodává s elastickým simulačním systémem , který zahrnuje širokou škálu rozšiřitelných a flexibilních podtříd a nabízí vazby pro 4-rozměrné quaternionové pružiny, 3-rozměrné objemové pružiny a jednoduché lineární pružinové systémy.

V současné době můžou funkce elastics využívat následující komponenty MRTK, které podporují správce elastics :

Rozšíření elastického menuUchopte elastický šálek kávy

Pákový ovladač (experimentální)

Příklad rozhraní pákového ovladače, který může ovládat velký cílový objekt.

Joystick

Výběr barvy (experimentální)

Experimentální ovládací prvek, který usnadňuje změnu barev materiálu u libovolného objektu za běhu.

Tři různé metody ovládacího prvku pro výběr barev

Čtyři různé metody ovládacího prvku výběr barvy

Změny způsobující chyby

Změny definičních souborů sestavení

Některé soubory asmdef se změnily a teď podporují jenom Unity 2018.4.13f1 nebo novější. Při aktualizaci na MRTK 2.5 v dřívějších verzích Unity se zobrazí chyby kompilace. Můžete to vyřešit tak, že v okně projektu přejdete na Assets\MRTK\Providers\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.asmdef a odeberete chybějící odkaz v inspektoru. Opakujte tyto kroky s Assets\MRTK\Providers\Oculus\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.Oculus.asmdef a Assets\MRTK\Providers\WindowsMixedReality\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.WMR.asmdef. Všimněte si, že při upgradu na Unity 2019 musíte tyto tři soubory asmdef nahradit původními (tj. nezměněnými) soubory.

IMixedRealityPointerMediator

Toto rozhraní bylo aktualizováno o novou funkci:

void SetPointerPreferences(IPointerPreferences pointerPreferences);

Pokud máte vlastního mediátora ukazatele, který nemá podtřídu DefaultPointerMediator, budete muset implementovat tuto novou funkci. Další informace o tom, proč byl tento problém přidán, najdete v tomto problému . To bylo přidáno, aby se zajistilo, že předvolby ukazatele budou explicitně předány mediátoru, spíše než aby to bylo implicitně provedeno na základě přítomnosti konstruktoru, který převzal IPointerPreferences.

Rozhraní REST / Rozhraní API portálu zařízení

Statická UseSSL vlastnost se přesunula z Rest na DevicePortal.

Pokud jste to udělali dříve...

Rest.UseSSL = true

Udělejte to teď...

DevicePortal.UseSSL = true

Link.xml

Pokud aplikace dříve používala distribuci NuGet MRTK, link.xml soubor byl odebrán z balíčku Foundation. Pokud chcete obnovit pravidla zachování kódu, otevřením projektu v Unity jednou vytvoříte výchozí link.xml soubor v nástroji Assets/MixedRealityToolkit.Generated. Tento soubor (a link.xml.meta) se doporučuje přidat do správy zdrojového kódu.

Změny omezení transformace

Vlastnost TargetTransform byla označena jako zastaralá, protože nebyla použita systémem omezení. Logika omezení je založená na transformaci předané do metod Initialize a Apply. Odvozená uživatelská omezení, která závisí na této vlastnosti, mohou ukládat do mezipaměti TargetTransform v jejich implementaci uložením transformace omezení komponenty dosáhnout stejného chování.

Uložený datový typ počáteční pozice worldPoseOnManipulationStart světa byl změněn z MixedRealityPose na MixedRealityTransform, což zahrnuje místní hodnotu měřítka manipulovaného objektu. Díky této změně už není nutné ukládat do mezipaměti samostatně žádné počáteční hodnoty škálování.

Nová vlastnost v IMixedRealityDictationSystem

Do rozhraní IMixedRealityDictationSystem byla přidána nová vlastnost AudioClip . Vlastnost AudioClip umožňuje přístup ke zvukovému klipu přidruženému k aktuální relaci diktování. Uživatelé musí implementovat vlastnost ve svých skriptech, které implementují rozhraní.

Fasády služeb se zhasnou

V roce 2.5 byly zbourany fasády služeb. Tato funkce byla původně přidána kvůli usnadnění konfigurace profilů MRTK (vytvořením falešných objektů GameObject ve scéně, které představovaly jednotlivé služby MRTK). Z dlouhodobého hlediska chceme zabránit vytváření falešných objektů ve hře a snaze je udržovat synchronizované (protože problémy se synchronizací dat a "zdrojem pravdy" jsou notoricky obtížné škálovat a správně dosáhnout).

Ve verzi 2.5 jsou obslužné rutiny fasády služby zachovány, aby se zajistilo, že upgrade projektu proběhne hladce – všechny fasády, které v projektu existují, budou obslužnou rutinou fasády služby odstraněny, aby se zajistilo, že scény otevřené ve verzi 2.5 se automaticky opraví.

Zbývající kód přidružený k funkci fasády služby se odebere v budoucí verzi.

Přidání ovladače pohybu do služby simulace vstupu

Simulace ovladače pohybu je nyní nabízena v režimu přehrávání editoru společně se stávající simulací rukou. Pokud chcete tuto změnu povolit, mnoho aktuálních funkcí/polí/vlastností je nyní označeno jako zastaralé, přičemž dochází k nejvýznamnějším změnám InputSimulationService.csMixedRealityInputSimulationProfile.cs . Logika a chování relevantního kódu zůstávají do značné míry stejné a většina zastaralých funkcí atd. souvisí s nahrazením výrazu "hand" na obecnější termín "kontroler" (např. z DefaultHandSimulationMode na DefaultControllerSimulationMode). Kromě získání nových názvů se návratový typ některých nových funkcí aktualizuje tak, aby odpovídal změně názvu nebo chování (například GetControllerDevice na základě původního GetHandDevice nyní vrátí BaseController místo SimulatedHand).

IInputSimulationService teď má nové vlastnosti MotionControllerDataLeft a MotionControllerDataRight. MixedRealityInputSimulationProfile Nyní obsahuje nová pole pro mapování klávesnice u některých tlačítek ovladače pohybu.

Známé problémy

CameraCache může při vypnutí vytvořit novou kameru.

V některých situacích (například při použití zprostředkovatele LeapMotion v Unity Editoru) je možné, že CameraCache při vypnutí znovu vytvoří MainCamera. Další informace najdete v tomto problému .

Výjimka FileNotFoundException při importu příkladů prostřednictvím Správce balíčků Unity

V závislosti na délce cesty k projektu může import příkladů přes Správce balíčků Unity generovat zprávy FileNotFoundException v konzole Unity. Příčinou je cesta k chybějícímu souboru delší než MAX_PATH (256 znaků). Pokud chcete tento problém vyřešit, zkraťte délku cesty k projektu.

Nebyl zadán žádný prostorový modul. Aplikace nebude podporovat prostorový zvuk.

Pokud není nakonfigurovaný zvukový prostorový modul, zobrazí se upozornění Nebyl zadán žádný spatializer. K tomu může dojít, pokud není nainstalovaný žádný balíček XR, protože Unity obsahuje v těchto balíčcích spatializery.

Pokud chcete tento problém vyřešit, ujistěte se, že:

  • Okno>Správce balíčků má nainstalovaný jeden nebo více balíčků XR.

  • nástroje Mixed Reality Toolkit>>Nakonfigurujte projekt Unity a vyberte možnost Audio Spatializer

    Výběr možnosti Audio Spatializer

NullReferenceException: Odkaz na objekt není nastavený na instanci objektu (SceneTransitionService.Initialize)

V některých situacích může otevření EyeTrackingDemo-00-RootScene způsobit NullReferenceException v Initialize metoda SceneTransitionService třídy. Tato chyba je způsobená zrušením nastavení konfiguračního profilu služby Scene Transition Service. Pokud chcete tento problém vyřešit, postupujte následovně:

  • Přejděte k objektu MixedRealityToolkit v hierarchii.
  • V okně inspektoru vyberte Extensions
  • Pokud není rozbalené, rozbalte Scene Transition Service
  • Nastavte hodnotu Configuration ProfileMRTKExamplesHubSceneTransitionServiceProfile.

Oprava přechodu scény

Oculus – úkol

V současné době existuje známý problém s používáním modulu plug-in Oculus XR při cílení na samostatné platformy. Aktualizace najdete v přehledu chyb Oculus, fórech nebo poznámkách k verzi.

Chyba je značená touto sadou 3 chyb:

Chyba modulu plug-in Oculus XR

UnityUI a TextMeshPro

Existuje známý problém s novějšími verzemi TextMeshPro (1.5.0+ nebo 2.1.1+), kdy se změnila výchozí velikost písma pro rozevírací seznamy a mezery mezi tučnými znaky písma.

Obrázek TMP

To se dá obejít tak, že přejdete na starší verzi TextMeshPro. Další podrobnosti najdete v tématu problém č. 8556 .