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.
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ů .
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.
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.
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ý ConicalGrabPointer
soubor .
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:
- Další integrační krok najdete v tématu Konfigurace sledování leap motion hand .
- Pro ty, kteří používají ARFoundation, je teď v úvodních krocích další ruční krok. Nový postup najdete v tématu ARFoundation .
- Pro ty, kteří budou používat Holographic Remoting se starším kanálem XR na HoloLens 2, je teď potřeba provést ruční krok.
Ovládací prvek Bounds odstupňovaný
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.
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 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.
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.
Elastický systém (experimentální)
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 :
Pákový ovladač (experimentální)
Příklad rozhraní pákového ovladače, který může ovládat velký cílový objekt.
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.
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.cs
MixedRealityInputSimulationProfile.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
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 Profile
MRTKExamplesHubSceneTransitionServiceProfile.
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:
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.
To se dá obejít tak, že přejdete na starší verzi TextMeshPro. Další podrobnosti najdete v tématu problém č. 8556 .