Versionsanteckningar för Microsoft Mixed Reality Toolkit 2.5

Viktigt

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

Vad är nytt 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 prefabsinställda på Ingen vid start. Den här versionen konfigurerar Enhetshanteraren att peka på en fungerande uppsättning prefabs vid start.

Åtgärdar ett problem med OpenXR via UPM

Åtgärdar ett problem där OpenXR-providers inte lades till i link.xml som standard, vilket gör att nya projekt inte kan köras på enheten när OpenXR och MRTK används via Unity-pakethanteraren. Befintliga projekt som uppgraderas måste fortfarande läggas till manuellt.

Vad är nytt i 2.5.3

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

2.5.2 införde ett build-problem vid integrering av Oculus SDK. Den här versionen återställer det problemet.

Vad är nytt 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. Se komma igång-sidan MRTK/XRSDK, Unity-foruminläggeteller Microsofts dokumentation för mer information.

Viktigt

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

Gränsvisualiseringsfel har åtgärdats

Gränsvisualiseringar, till exempel golv eller väggar, kommer nu att konfigureras korrekt och visas 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 version 2.5.2 för att passa Unitys nya paketvägledning.

Vad är nytt i 2.5.1

Paketberoende fel har åtgärdats

Den här versionen åtgärdar felaktiga filberoenden mellan paket (t.ex. filer i Standard Assets refererar inte längre felaktigt till filer i Foundation). Version 2.5.1 lägger också till ett explicit beroende av Text Mesh-Pro.

Standard Assets package shaders copied to 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 skuggare som har uppdaterats för UNIVERSAL Render Pipeline (URP) som återställer det äldre beteendet nästa gång projektet läses in.

Flyttappmarkör som håller sig i händerna har åtgärdats

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

Vad är nytt i 2.5.0

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

Nu Mixed Reality Toolkit hanteras med Unity Package Manager.

MRTK Foundation UPM-paket

Anteckning

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

Stöd för Oculus Quest XR SDK

MRTK stöder nu körning av Oculus Quest-headset och kontrollanter med hjälp av den inbyggda 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 hjälp av den nya pipelinen finns i Konfigurationsguide för Oculus-guiden för konfiguration

Rullningsobjektsamling

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

Mer information finns i Rullningsobjektsamling.

Rullningsobjektsamling

Animering, hantering och ljudförbättringar för teleporteringspekaren

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

Lathund för indatasimulering

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

Lathund för indatasimulering

Ögonögon blick för indatasimulering 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 det föregående Simulate Eye Position fältet.

Ögonögonmus

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

Användare kan nu simulera rörelsekontroller precis som i läget för redigeringsprogram. Knapparna utlösare, grab och meny stöds för närvarande.

Pekare för conical grab

Du kan nu konfigurera pekare för att fråga efter objekt i närheten med hjälp av en glass från startpunkten i stället för en sfär. Detta liknar beteendet närmare från standardgränssnittet HoloLens 2, som frågar efter objekt i närheten med hjälp av en glass. DefaultHoloLens2InputSystemProfile har också justerats för att använda den nya ConicalGrabPointer .

Pekare för konisk grab

TestUtilities-paket

Nu finns det ett paket (Microsoft.MixedReality.Toolkit.Unity.TestUtilities.2.5.0.unitypackage) som innehåller den PlayMode- och TestMode-testinfrastruktur som MRTK använder för att skapa end-to-end-tester. Den här infrastrukturen har varit mycket praktisk för SJÄLVA MRTK-teamet och vi är glada över att konsumenter ska kunna använda den för att lägga till testtäckning i sina egna projekt.

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

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

Instruktioner för hur du skriver ett test med hjälp av 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 av Leap Motion Unity-modulerna som stöds är 4.5.0 och 4.5.1.

Det finns också ett ytterligare steg för inledande Leap Motion-integrering. Mer information finns i How to Configure the Leap Motion Hand Tracking in MRTK (Så här konfigurerar du Handspårning för skott i MRTK).

Spatial Awareness Mesh Observer hanterar bättre anpassning av material

Med den här versionen har Windows Mixed Reality Spatial Mesh Observer komponenterna och förbättrat hanteringen av Generic XR SDK Spatial Mesh Observer visuellt material. Material bevaras nu när ett nät har uppdaterats av observerare där de tidigare återställdes till standardvärdet VisibleMaterial enligt konfiguration i profilen.

Detta gör att utvecklare kan ändra nätmaterial och inte skriva över ändringarna oväntat.

Link.xml skapas i mappen MixedRealityToolkit.Generated

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

Mer information om MRTK-link.xml finns i artikeln MRTK och borttagning av hanterad kod.

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

För att undvika potentiella konflikter när du använder Unity XR Platform har alternativet att aktivera äldre XR-stöd tagits bort från MRTK-konfigurationsdialogrutan. Om du vill kan äldre XR-stöd aktiveras, i Unity 2019, med hjälp av Edit > Project Inställningar > Player > XR Inställningar Virtual Reality > Supported.

Minskning av initializeOnLoad-overhead

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 du 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 svarstidsförbättringar i Unity.

I vissa fall var det en kompromiss som behövde göras:

Gränskontrollen har graderas

Kontroll av gränser

Gränskontrollen har graderat ut ur experimentet och levereras med en mängd nya funktioner och massor av felkorrigeringar. Här visas en lista över de viktigaste i den här uppdateringen:

  • egenskaper delas upp i konfigurationer, vilket gör det enklare att konfigurera begränsningskontroll
  • konfigurationer kan delas via skriptbara objekt
  • varje egenskap/skriptbar egenskap kan konfigureras i runtime
  • kontrollriggen bounds återskapas inte vid egenskapsändringar längre
  • stöd för översättningsreferenser
  • fullständigt begränsningsstöd via begränsningshanteraren
  • elastisk systemintegrering (experimentell)

Den gamla begränsningsrutan är nu inaktuell och befintliga spelobjekt med hjälp av en begränsningsruta kan uppgraderas med hjälp av migreringsverktyget eller kontrollkontrollen för begränsningsfältet.

Komponent för begränsningshanterare

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

Dessutom levereras begränsningshanteraren för automatiskt beteende också med ett manuellt läge som låter användarna bestämma vilken begränsning som ska bearbetas. Därför har vi ändrat lite på hur vi visar begränsningar i egenskapskontrollen.

Inspector view showing manual constraint manager selection

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

HoloLens 2-knapp materialuppdatering

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

HoloLens 2-knapp materialuppdatering

Uppdatering av beskrivningspanel, flyttbar exempelscen

Uppdaterad beskrivningspanel. (SceneDescriptionPanelRev.prefab) Ny design ger en uppslagsbar övre stapel som gör att användaren kan justera/flytta hela scenen.

Uppdatering av beskrivningspanel

Visualisering av rumsligt nät – puls på lufttryck

Uppdaterade pulse shader-exemplet för det rumsliga nät som HoloLens 2:s gränssnittsbeteende.

Puls vid tryck i luften

Elastiskt system (experimentellt)

Elastic System2

MRTK levereras nu med ett elastiskt simuleringssystem som innehåller en mängd utökningsbara och flexibla underklasser, som erbjuder bindningar för 4-dimensionell quaternion- och 3-dimensionell volymsorg och enkla linjära springsystem.

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

Expanding an elastic menu Grabbing an elastic coffee cup

– (experimentell)

Ett exempel på ett 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äljarkontroll

Fyra olika metoder för färgväljarkontroll

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 när du uppdaterar till MRTK 2.5 i tidigare versioner av Unity. Detta kan åtgärdas genom att gå Assets\MRTK\Providers\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.asmdef till i projektfönstret och ta bort referensen som saknas i kontrollgruppen. 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 så att det har en ny funktion:

void SetPointerPreferences(IPointerPreferences pointerPreferences);

Om du har en anpassad pekare som inte underklassar DefaultPointerMediator måste du implementera den här 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-/Enhetsportalen-API

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

Om du gjorde detta tidigare...

Rest.UseSSL = true

Gör detta nu...

DevicePortal.UseSSL = true

Link.xml

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

Transformera begränsningsändringar

TargetTransform-egenskapen har markerats som föråldrad eftersom den inte användes av begränsningssystemet. Begränsningslogiken 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 cachelagra TargetTransform i sin implementering genom att lagra transformeringen av begränsningskomponenten för att uppnå samma beteende.

Den lagrade datatypen för den ursprungliga världen har ändrats från worldPoseOnManipulationStart MixedRealityPose till MixedRealityTransform, som innehåller det manipulerade objektets lokala skalningsvärde. Med den här ändringen behöver du inte cachelagra några inledande skalningsvärden separat 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ändarna måste implementera egenskapen i sina skript som implementerar gränssnittet.

Inaktivera tjänstfasader

Tjänstfasader stängs av i 2.5. Den här funktionen lades ursprungligen till för att förenkla konfigurationen av MRTK-profiler (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 spelobjekt och försöka hålla dem synkroniserade (eftersom problem med datasynkronisering och "sanningskälla" är svårskaliga att skala och få rätt).

I 2.5 bevaras tjänstfasadens hanterare för att säkerställa att projektuppgraderingen går smidigt – alla fasader som finns i projektet tas bort av tjänstfasadens hanterare för att säkerställa att scener som öppnas i 2.5 åtgärdas automatiskt.

Den återstående koden som är associerad med tjänstfasadsfunktionen tas bort i en framtida version.

Tillägg av rörelsekontroll i tjänsten för indatasimulering

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

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

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 skapa MainCamera igen vid avstängning. Mer information finns i det här problemet.

FileNotFoundException när exempel importeras via Unity Package Manager

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

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

En varning om att ingen spatialiserare har angetts visas om en rumsligare 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önster > Package Manager har ett eller flera XR-paket installerade

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

    Välj Audio Spatializer

NullReferenceException: Objektreferensen har inte angetts till en instans av ett objekt (SceneTransitionService.Initialize)

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

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

Åtgärda scenövergång

Oculus Uppdrag

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

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

Fel med Oculus XR-plugin-programmet

UnityUI och TextMeshPro

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

TMP-avbildning

Du kan komma runt detta genom att nedgradera till en tidigare version av TextMeshPro. Se problem med #8556 mer information.