Viktig information om Microsoft Mixed Reality Toolkit 2.5

Viktigt

Det finns ett känt kompilatorproblem som påverkar program som skapats för Microsoft HoloLens 2 med ARM64. Det här problemet åtgärdas genom uppdatering av Visual Studio 2019 till version 16.8 eller senare. Om du inte kan uppdatera Visual Studio importerar du paketet com.microsoft.mixedreality.toolkit.tools för att tillämpa en lösning.

Nyheter i 2.5.4

Åtgärdar en bugg med Oculus-integrering vid användning av UPM

När du använder UPM skulle OculusXRSDKDeviceManagerProfile alltid ha sina prefabs inställda på None vid start. Den här versionen konfigurerar Enhetshanteraren så att den pekar på en fungerande uppsättning prefabs vid start.

Åtgärdar ett problem med OpenXR via UPM

Åtgärdar ett problem där OpenXR-leverantörerna inte lades till i link.xml som standard, vilket gör att nya projekt inte kan köras på enheten när du använder OpenXR och MRTK via Unitys pakethanterare. Befintliga projekt som uppgraderas behöver fortfarande läggas till manuellt.

Nyheter i 2.5.3

Åtgärdar en regression med Oculus som introducerades i 2.5.2

2.5.2 introducerade ett byggproblem när Oculus SDK integrerades. Den här versionen återställer det problemet.

Nyheter i 2.5.2

Lägg till stöd för OpenXR

Inledande stöd för Unitys OpenXR-förhandsversionspaket och Microsofts Mixed Reality OpenXR-paket har lagts till. Mer information finns på sidan komma igång med MRTK/XRSDK, Unitys foruminlägg eller Microsofts dokumentation .

Viktigt

OpenXR i Unity stöds bara på Unity 2020.3 och senare. Det stöder också endast x64-, ARM- och ARM64-versioner.

Gränsvisualiseringsfel har åtgärdats

Gränsvisualiseringar, t.ex. golvet eller väggarna, kommer nu att vara korrekt konfigurerade och synliga vid körning enligt gränsprofilen.

MSBuild för Unity-stöd

Stöd för MSBuild för Unity har tagits bort från och med 2.5.2-versionen för att anpassa sig till Unitys nya paketvägledning.

Nyheter i 2.5.1

Paketberoendefel har åtgärdats

Den här versionen åtgärdar felaktiga filberoenden mellan paket (till exempel filer i standardtillgångar som inte längre refererar till filer i Foundation felaktigt). Version 2.5.1 lägger också till ett explicit beroende av Text Mesh Pro.

Standard assets package shaders kopierade till Assets/MRTK/Shaders

När Standard Assets-paketet installeras via UPM kopieras skuggarna till mappen Assets/MRTK/Shaders så att de inte längre kan ändras. Detta löser problemet med skuggor som har uppdaterats för DEN UNIVERSELLA RENDER-pipelinen (URP) som återställer det äldre beteendet nästa gång projektet läses in.

Teleportmarkören som fastnar i händerna har åtgärdats

Den här versionen åtgärdar ett problem där teleporteringsmålmarkören kan hålla sig till visuella objekt.

Nyheter i 2.5.0

Stöd för Unity Package Manager (UPM)

Nu kan Mixed Reality Toolkit hanteras med hjälp av Unity Package Manager.

MRTK Foundation UPM-paket

Anteckning

Det finns några manuella steg som krävs för att importera MRTK UPM-paketen. Mer information finns i Mixed Reality Toolkit och Unity Package Manager.

Support för Oculus Quest XR SDK

MRTK stöder nu körning av Oculus Quest-headset och styrenheter med den interna XR SDK-pipelinen. Handspårning stöds också med Oculus Integration Unity-paketet tack vare Eric Provenchers arbete med MRTK-Quest!

Anvisningar om hur du distribuerar din enhet på Oculus Quest med den nya pipelinen finns i installationsguiden för Oculus Quest

Rullningsobjektsamling

MRTK UX-komponenten har uppgraderats från en experimentell funktion och ger större frihet att layoutera 3D-innehåll av olika storlekar med extra stöd för objekt som inte har några kolliderare kopplade. Ett nytt alternativ för att inaktivera innehållsmaskering har också lagts till, vilket gör prototyper enklare.

Mer information finns i Bläddra objektsamling .

Rullningsobjektsamling

Teleporteringspekaranimering, hantering och ljudförbättringar

Teleporteringspekaren har nu förbättrat animeringar och ljudfeedback. Vi har också förbättrat hanteringen av teleportpekaren så att den hanterar smidigare vid övergång från att peka på närliggande ytor till längre bort ytor.

Översiktsblad för indatasimulering

HandInteractionExamples-scenen har nu en konfigurerbar genväg för att visa en hjälpsida för indatasimulering

Översiktsblad för indatasimulering

Indatasimulering, ögonöga med mus

Användare kan nu använda musen för att simulera ögonspårning. Se fältet Eye Simulation Mode i indatasimuleringsprofilen och ställ in det på Mus. Detta ersätter föregående Simulate Eye Position fält.

Ögonöga mus

Rörelsestyrenhet för indatasimulering i redigeringsprogrammets uppspelningsläge

Användare kan nu simulera rörelsekontrollanten precis som händerna i redigeringsprogrammets uppspelningsläge. Knapparna utlösare, grepp och meny stöds för närvarande.

Konisk greppspekare

Hämtar pekare kan nu konfigureras för att fråga efter närliggande objekt med hjälp av en kon från greppet i stället för en sfär. Detta liknar beteendet från standardgränssnittet HoloLens 2, som frågar efter närliggande objekt med hjälp av en kon. DefaultHoloLens2InputSystemProfile har också justerats för att använda den nya ConicalGrabPointer.

Konisk greppspekare

TestUtilities-paket

Det finns nu ett paket (Microsoft.MixedReality.Toolkit.Unity.TestUtilities.2.5.0.unitypackage) som innehåller testinfrastrukturen PlayMode och TestMode som MRTK använder för att skapa tester från slutpunkt till slutpunkt. Den här infrastrukturen har varit mycket användbar för SJÄLVA MRTK-teamet, och vi är glada över att konsumenterna använder detta för att lägga till testtäckning till sina egna projekt.

Följande kod visar hur du skapar en testhand, visar den på en viss plats, flyttar runt den och sedan nyper och öppnar.

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);

Anvisningar om hur du skriver ett test med dessa TestUtilities finns i det här avsnittet om att skriva tester.

Exempel på befintliga tester som använder den här infrastrukturen finns i MRTK:s PlayModeTests.

Stöd för Leap Motion 4.5.1 Unity-moduler

Stöd för Leap Motion Unity-moduler version 4.5.1 har lagts till och stöd för 4.4.0-tillgångarna har tagits bort. De aktuella versioner som stöds av Leap Motion Unity-modulerna är 4.5.0 och 4.5.1.

Det finns också ytterligare ett steg för den första Leap Motion-integreringen. Mer information finns i Så här konfigurerar du Leap Motion Hand Tracking i MRTK .

Spatial Awareness Mesh Observer hanterar bättre anpassning av material

Med den här versionen har komponenterna Windows Mixed Reality Spatial Mesh ObserverGeneric XR SDK Spatial Mesh Observer och förbättrat den visuella materialhanteringen. Material bevaras nu när ett nät har uppdaterats av övervakaren där de tidigare återställdes till standardvärdet VisibleMaterial enligt konfigurationen i profilen.

Detta gör att utvecklare kan ändra nätmaterialet och inte låta ändringarna skrivas över oväntat.

Link.xml som skapats i mappen MixedRealityToolkit.Generated

Med introduktionen av Unity Package Manger MRTK skriver MRTK nu en link.xml fil till Assets/MixedRealityToolkit.Generated mappen, om ingen finns. Vi rekommenderar att du lägger till den här filen (och link.xml.meta) i källkontrollen. Link.xml används för att påverka funktionerna för att ta bort hanterad kod i Unity-länkaren.

Mer information om MRTK-link.xml-filen finns i artikeln MRTK och hanterad kodborttagning .

Unity 2019.3+: Dialogrutan MRTK-konfiguration försöker inte längre aktivera äldre XR-stöd

För att undvika potentiella konflikter när du använder Unitys XR-plattform har alternativet för att aktivera äldre XR-stöd tagits bort från MRTK-konfigurationsdialogrutan. Om så önskas kan äldre XR-stöd aktiveras i Unity 2019 med hjälp av Redigera>projektinställningar>Spelare>XR-inställningar>Virtual Reality stöds.

Minskning av initializeOnLoad-omkostnader

Vi har arbetat med att minska mängden arbete som körs i InitializeOnLoad-hanterare, vilket bör leda till förbättringar i utvecklingshastigheten för inre loopar. InitializeOnLoad-hanterare körs varje gång ett skript kompileras, innan de går in i uppspelningsläge och även vid redigeringsstart. Dessa hanterare körs nu i mycket färre fall, vilket resulterar i allmänna förbättringar av Unity-svarstider.

I vissa fall var det en kompromiss som måste göras:

Gränskontroll graderad

Gränskontroll

Bounds-kontrollen har tagits bort från experimentet och levereras med en massa nya funktioner och massor av felkorrigeringar. Här en lista över höjdpunkterna i den här uppdateringen:

  • egenskaper delas upp i konfigurationer som gör det enklare att konfigurera gränskontroll
  • konfigurationer kan delas via skriptbara objekt
  • varje egenskap/skriptbar egenskap kan konfigureras för körning
  • gränskontrollriggen återskapas inte längre vid egenskapsändringar
  • stöd för översättningshandtag
  • stöd för fullständig begränsning via begränsningshanteraren
  • elastisk systemintegrering (experimentell)

Den gamla avgränsningsrutan är nu inaktuell och befintliga spelobjekt som använder avgränsningsrutan kan uppgraderas med hjälp av migreringsverktyget eller avgränsningsrutan.

Komponent för villkorshanteraren

Begränsningar kan nu användas av både gränskontroll och objektmanipulator via den nya komponenten för begränsningshanteraren. Båda komponenterna skapar en villkorshanterare per standard och bearbetar eventuella kopplade begränsningar automatiskt.

Dessutom levereras villkorshanteraren för automatiskt beteende med ett manuellt läge där användarna kan bestämma vilken begränsning som ska bearbetas. Av den anledningen har sättet vi visar begränsningar i egenskapskontrollen ändrats lite.

Inspektörsvy som visar val av manuell villkorshanterare

De begränsningar som tillämpas på komponenten visas nu som en lista i komponenten för villkorshanteraren, medan komponenten som använder villkorshanteraren (antingen gränskontroll eller objektmanipulator) nu visar den valda villkorshanteraren och -läget (automatiskt eller manuellt). Mer information finns i avsnittet om villkorshanteraren i våra dokument.

HoloLens 2 uppdatering av knappmaterial

Uppdaterade HoloLens 2 knappens främre burmaterial för att ta bort svart färg i MRC.

HoloLens 2 uppdatering av knappmaterial

Beskrivningspanelsuppdatering, flyttbar exempelscen

Beskrivningspanelen har uppdaterats. (SceneDescriptionPanelRev.prefab) Ny design ger en greppbar övre stapel som gör att användaren kan justera/flytta hela scenen.

Uppdatering av beskrivningspanelen

Visualisering av rumsligt nät – puls på luftkran

Uppdaterade pulsskuggningsexemplet för det rumsliga nätet så att det matchar HoloLens 2 gränssnittsbeteende.

Puls på luftkran

Elastiskt system (experimentellt)

Elastiskt system2

MRTK levereras nu med ett elastiskt simuleringssystem som innehåller en mängd olika utökningsbara och flexibla underklasser som erbjuder bindningar för 4-dimensionella quaternionfjädrar, 3-dimensionella volymfjädrar och enkla linjära fjädersystem.

För närvarande kan följande MRTK-komponenter som stöder Elastics Manager utnyttja elastiska funktioner:

Expandera en elastisk menyTa en elastisk kaffekopp

Joystick (experimentell)

Ett exempel på joystick-gränssnitt som kan styra ett stort målobjekt.

Joystick

Färgväljare (experimentell)

En experimentell kontroll som gör det enkelt att ändra materialfärger på alla objekt vid körning.

Tre olika metoder för färgväljaren

Fyra olika metoder för färgväljaren

Icke-bakåtkompatibla ändringar

Ändringar i sammansättningsdefinitionsfiler

Vissa asmdef-filer ändras och stöder nu endast Unity 2018.4.13f1 eller senare. Kompileringsfel visas vid uppdatering till MRTK 2.5 i tidigare versioner av Unity. Detta kan åtgärdas genom att gå till Assets\MRTK\Providers\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.asmdef i projektfönstret och ta bort referensen som saknas i inspektören. Upprepa dessa steg med Assets\MRTK\Providers\Oculus\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.Oculus.asmdef och Assets\MRTK\Providers\WindowsMixedReality\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.WMR.asmdef. Observera att du måste återställa ändringarna genom att ersätta dessa tre asmdef-filer med ursprungliga (dvs. oförändrade) filer när du uppgraderar till Unity 2019.

IMixedRealityPointerMediator

Det här gränssnittet har uppdaterats för att ha en ny funktion:

void SetPointerPreferences(IPointerPreferences pointerPreferences);

Om du har en anpassad pekarmedlare som inte underklassen DefaultPointerMediator måste du implementera den nya funktionen. Mer information om varför detta har lagts till finns i det här problemet . Detta har lagts till för att säkerställa att pekarinställningar uttryckligen skickas till medlaren, i stället för att det görs implicit baserat på förekomsten av en konstruktor som tog en IPointerPreferences.

REST/API för enhetsportalen

Den UseSSL statiska egenskapen har flyttats från Rest till DevicePortal.

Om du gjorde det tidigare...

Rest.UseSSL = true

Gör det nu...

DevicePortal.UseSSL = true

Link.xml

Om ett program tidigare använde NuGet-distributionen av MRTK link.xml har filen tagits bort från Foundation-paketet. Om du vill återställa regler för bevarande av kod skapar du en standardfil link.xml i Assets/MixedRealityToolkit.Generatedom du öppnar projektet i Unity en gång. Vi rekommenderar att den här filen (och link.xml.meta) läggs till i källkontrollen.

Transformera villkorsändringar

TargetTransform-egenskapen har markerats som föråldrad eftersom den inte användes av villkorssystemet. Villkorslogik baseras på transformeringen som skickas till metoderna Initialize och Apply. Härledda användarbegränsningar som förlitar sig på den här egenskapen kan cachelagras targettransform i implementeringen genom att transformera begränsningskomponenten för att uppnå samma beteende.

Den lagrade ursprungliga attityddatatypen för världen worldPoseOnManipulationStart har ändrats från MixedRealityPose till MixedRealityTransform, som innehåller det manipulerade objektets lokala skalningsvärde. Med den här ändringen behöver du inte cachelagras separat från inledande skalningsvärden längre.

Ny egenskap i IMixedRealityDictationSystem

En ny egenskap AudioClip har lagts till i gränssnittet IMixedRealityDictationSystem. Egenskapen AudioClip ger åtkomst till ljudklippet som är associerat med den aktuella dikteringssessionen. Användare måste implementera egenskapen i sina skript som implementerar gränssnittet.

Inaktivera tjänstfasader

Tjänstefasader avvisas i 2,5. Den här funktionen lades ursprungligen till för att underlätta konfigurationen av MRTK-profilerna (genom att skapa falska GameObjects i scenen som representerade var och en av MRTK:s tjänster). På lång sikt vill vi undvika att skapa falska objekt i spelet och försöka hålla dem synkroniserade (eftersom problem med datasynkronisering och "sanningskälla" är notoriskt svåra att skala och få rätt).

I 2.5 förvaras fasadhanterare för tjänsten för att säkerställa att projektuppgradering går smidigt – alla fasader som finns i projektet tas bort av tjänstens fasadhanterare för att säkerställa att scener som öppnas i 2.5 korrigeras automatiskt.

Den återstående koden som är associerad med funktionen för tjänstefasad tas bort i en framtida version.

Tillägg av rörelsekontrollant till indatasimuleringstjänsten

Simulering av rörelsestyrenhet erbjuds nu i redigeringsläge längs den befintliga handsimuleringen. För att aktivera den här ändringen markeras många aktuella funktioner/fält/egenskaper nu som inaktuella, med InputSimulationService.cs och MixedRealityInputSimulationProfile.cs får de viktigaste ändringarna. Logiken och beteendet för relevant kod förblir i stort sett densamma, och de flesta föråldrade funktioner osv. är relaterade till att ersätta referensen till "hand" med den mer generiska termen "kontrollant" (t.ex. från DefaultHandSimulationMode till DefaultControllerSimulationMode). Förutom att hämta nya namn uppdateras returtypen för vissa nya funktioner så att den matchar namn-/beteendeändringen (t.ex. GetControllerDevice baserat på originalet GetHandDevice returneras BaseController nu i stället för SimulatedHand).

IInputSimulationService har nu nya egenskaper MotionControllerDataLeft och MotionControllerDataRight. MixedRealityInputSimulationProfile innehåller nu nya fält för tangentbordsmappning av vissa rörelsestyrenhetsknappar.

Kända problem

CameraCache kan skapa en ny kamera vid avstängning

I vissa situationer (t.ex. när du använder LeapMotion-providern i Unity-redigeraren) är det möjligt för CameraCache att återskapa MainCamera vid avstängning. Mer information finns i det här problemet .

FileNotFoundException när exempel importeras via Unity Package Manager

Beroende på projektsökvägens längd kan import av exempel via Unity Package Manager generera FileNotFoundException-meddelanden i Unity-konsolen. Orsaken till detta är att sökvägen till filen "saknas" är längre än MAX_PATH (256 tecken). Lös problemet genom att förkorta projektsökvägens längd.

Ingen spatializer har angetts. Programmet stöder inte Spatial Sound

Varningen "Ingen spatialiserare har angetts" visas om en spatialiserare för ljud inte har konfigurerats. Detta kan inträffa om inget XR-paket har installerats, eftersom Unity innehåller spatialiserare i dessa paket.

Lös problemet genom att se till att:

  • Fönstret>Package Manager har ett eller flera XR-paket installerade

  • Mixed Reality Toolkit>Utilities>Konfigurera Unity Project och gör ett val för Audio Spatializer

    Välj Audio Spatializer

NullReferenceException: Objektreferensen är inte inställd på en instans av ett objekt (SceneTransitionService.Initialize)

I vissa situationer kan öppning EyeTrackingDemo-00-RootScene orsaka nullReferenceException i metoden Initialize i klassen SceneTransitionService. Det här felet beror på att scenövergångstjänstens konfigurationsprofil inte har angetts. Lös problemet med hjälp av följande steg:

  • Navigera till objektet MixedRealityToolkit i hierarkin
  • I fönstret Inspector väljer du Extensions
  • Om du inte expanderar expanderar du Scene Transition Service
  • Ange värdet Configuration Profile för till MRTKExamplesHubSceneTransitionServiceProfile

Åtgärda scenövergång

Oculus Quest

Det finns för närvarande ett känt problem för att använda Oculus XR-plugin-programmet med när du riktar in dig på fristående plattformar. Information om uppdateringar finns i Oculus bug tracker/forums/release notes.

Buggen är signerad med den här uppsättningen med 3 fel:

Oculus XR-plugin-fel

UnityUI och TextMeshPro

Det finns ett känt problem för nyare versioner av TextMeshPro (1.5.0+ eller 2.1.1+), där standardteckensnittsstorleken för listrutor och teckenavstånd i fetstil har ändrats.

TMP-avbildning

Du kan kringgå detta genom att nedgradera till en tidigare version av TextMeshPro. Mer information finns i problem nr 8556 .