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.
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 .
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
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.
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
.
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 Observer
Generic 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:
- Se Leap Motion Hand Tracking Configuration för det extra integreringssteget.
- För dem som använder ARFoundation finns det nu ytterligare ett manuellt steg i stegen för att komma igång. Se ARFoundation för de nya stegen.
- För dem som ska använda Holographic Remoting med äldre XR-pipeline på HoloLens 2 finns det nu ett manuellt steg att utföra.
Gränskontroll graderad
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.
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.
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.
Visualisering av rumsligt nät – puls på luftkran
Uppdaterade pulsskuggningsexemplet för det rumsliga nätet så att det matchar HoloLens 2 gränssnittsbeteende.
Elastiskt system (experimentellt)
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:
Joystick (experimentell)
Ett exempel på joystick-gränssnitt som kan styra ett stort målobjekt.
Färgväljare (experimentell)
En experimentell kontroll som gör det enkelt att ändra materialfärger på alla objekt vid körning.
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.Generated
om 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
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
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:
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.
Du kan kringgå detta genom att nedgradera till en tidigare version av TextMeshPro. Mer information finns i problem nr 8556 .