Opmerkingen bij de release van Microsoft Mixed Reality Toolkit 2.5

Belangrijk

Er is een bekend compilerprobleem dat van invloed is op toepassingen die zijn gebouwd voor Microsoft HoloLens 2 met arm64. Dit probleem wordt opgelost door Visual Studio 2019 bij te werken naar versie 16.8 of hoger. Als u Visual Studio niet kunt bijwerken, importeert u het com.microsoft.mixedreality.toolkit.tools pakket om een tijdelijke oplossing toe te passen.

Nieuw in 2.5.4

Lost een fout op met Oculus Integration bij het gebruik van UPM

Wanneer u UPM gebruikt, zijn de prefabs van het OculusXRSDKDeviceManagerProfile altijd ingesteld op Geen bij het opstarten. In deze release wordt de Apparaatbeheer zo geconfigureerd dat deze verwijst naar een werkende set prefabs bij het opstarten.

Lost een probleem op met OpenXR via UPM

Hiermee wordt een probleem opgelost waarbij de OpenXR-providers niet standaard werden toegevoegd aan de link.xml, waardoor nieuwe projecten niet op het apparaat konden worden uitgevoerd bij gebruik van OpenXR en MRTK via Package Manager van Unity. Bestaande projecten die zijn bijgewerkt, moeten deze nog steeds handmatig worden toegevoegd.

Nieuw in 2.5.3

Hiermee wordt een regressie met Oculus opgelost die is geïntroduceerd in 2.5.2

2.5.2 heeft een buildprobleem geïntroduceerd bij het integreren van de Oculus SDK. Met deze release wordt dit probleem hersteld.

Nieuw in 2.5.2

Ondersteuning toevoegen voor OpenXR

De eerste ondersteuning voor het OpenXR Preview-pakket van Unity en het Mixed Reality OpenXR-pakket van Microsoft is toegevoegd. Zie de MRTK/XRSDK-pagina aan de slag, het forumbericht van Unity of de documentatie van Microsoft voor meer informatie.

Belangrijk

OpenXR in Unity wordt alleen ondersteund op Unity 2020.3 en hoger. Het ondersteunt ook alleen x64-, ARM- en ARM64-builds.

Fouten in grensvisualisatie opgelost

Grensvisualisaties, zoals de vloer of wanden, worden nu correct geconfigureerd en zichtbaar tijdens runtime volgens het grensprofiel.

MSBuild voor Unity-ondersteuning

Ondersteuning voor MSBuild voor Unity is verwijderd vanaf release 2.5.2, in overeenstemming met de nieuwe pakketrichtlijnen van Unity.

Nieuw in 2.5.1

Pakketafhankelijkheidsfouten opgelost

Deze release corrigeert onjuiste bestandsafhankelijkheden tussen pakketten (bijvoorbeeld: bestanden in Standard Assets verwijzen niet meer naar bestanden in Foundation). Versie 2.5.1 voegt ook een expliciete afhankelijkheid toe van Text Mesh Pro.

Standard Assets package shaders gekopieerd naar Assets/MRTK/Shaders

Wanneer het Standard Assets-pakket wordt geïnstalleerd via UPM, worden de shaders gekopieerd naar de map Assets/MRTK/Shaders, zodat ze niet meer onveranderbaar zijn. Hiermee wordt het probleem opgelost dat shaders die zijn bijgewerkt voor de Universal Render Pipeline (URP) het verouderde gedrag terugdraaien wanneer het project de volgende keer wordt geladen.

Vaste teleportcursor die aan handen kleeft

In deze release wordt een probleem opgelost waarbij de teleportdoelcursor aan handvisuals kan blijven hangen.

Nieuw in 2.5.0

Ondersteuning voor Unity Package Manager (UPM)

De Mixed Reality Toolkit kan nu worden beheerd met Unity Package Manager.

MRTK Foundation UPM-pakket

Notitie

Er zijn enkele handmatige stappen vereist om de MRTK UPM-pakketten te importeren. Raadpleeg Mixed Reality Toolkit en Unity Package Manager voor meer informatie.

Ondersteuning voor Oculus Quest XR SDK

MRTK ondersteunt nu het uitvoeren van Oculus Quest-headsets en -controllers met behulp van de systeemeigen XR SDK-pijplijn. Handtracking wordt ook ondersteund met het Oculus Integration Unity-pakket dankzij Eric Provenchers werk aan MRTK-Quest!

Zie de installatiehandleiding voor Oculus Quest voor instructies over het implementeren van uw apparaat in de Oculus Quest met behulp van de nieuwe pijplijn

Objectverzameling schuiven

Het MRTK UX-onderdeel is geüpgraded van een experimentele functie en biedt meer vrijheid voor het indelen van 3D-inhoud van verschillende grootten met extra ondersteuning voor objecten waaraan geen colliders zijn gekoppeld. Er is ook een nieuwe optie toegevoegd voor het uitschakelen van inhoudsmaskering, waardoor het maken van prototypen eenvoudiger wordt.

Zie Scrolling Object Collection voor meer informatie.

Objectverzameling schuiven

Verbeteringen in animatie, verwerking en geluid van teleportpointer

De teleportpointer heeft nu verbeterde animaties en audiofeedback. We hebben ook de verwerking van de teleportpointer verbeterd, zodat deze soepeler werkt bij het overschakelen van het wijzen op nabijgelegen oppervlakken naar verder weg gelegen oppervlakken.

Cheatsheet voor invoersimulatie

De scène HandInteractionExamples heeft nu een configureerbare snelkoppeling om een Help-pagina weer te geven voor invoersimulatie

Cheatsheet voor invoersimulatie

Ogen van invoersimulatie met muis

Gebruikers kunnen nu de muis gebruiken om oogtracering te simuleren. Bekijk het Eye Simulation Mode veld in het invoersimulatieprofiel en stel het in op Muis. Hiermee vervangt u het vorige Simulate Eye Position veld.

Eye Gaze Mouse

Bewegingscontroller voor invoersimulatie in de afspeelmodus van de editor

Gebruikers kunnen nu bewegingscontroller simuleren, net als handen in de afspeelmodus van de editor. De trigger-, grab- en menuknoppen worden momenteel ondersteund.

Conische grijper

Grabpointers kunnen nu worden geconfigureerd om een query uit te voeren op objecten in de buurt met behulp van een kegel van het pakpunt in plaats van een bol. Dit lijkt meer op het gedrag van de standaardinterface HoloLens 2, waarmee query's worden uitgevoerd op objecten in de buurt met behulp van een kegel. Het DefaultHoloLens2InputSystemProfile is ook aangepast voor het gebruik van de nieuwe ConicalGrabPointer.

Conische grijper

TestUtilities-pakket

Er is nu een pakket (Microsoft.MixedReality.Toolkit.Unity.TestUtilities.2.5.0.unitypackage) dat de PlayMode- en TestMode-testinfrastructuur bevat die MRTK gebruikt om end-to-end-tests te maken. Deze infrastructuur is zeer handig voor het MRTK-team zelf en we zijn blij dat consumenten deze gebruiken om testdekking toe te voegen aan hun eigen projecten.

De volgende code laat zien hoe u een testhand maakt, deze op een bepaalde locatie weergeeft, deze verplaatst en vervolgens knijpt en opent.

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

Zie deze sectie over het schrijven van tests voor instructies over het schrijven van een test met behulp van deze testhulpprogramma's.

Zie PlayModeTests van MRTK voor voorbeelden van bestaande tests die gebruikmaken van deze infrastructuur.

Ondersteuning voor de Leap Motion 4.5.1 Unity-modules

Ondersteuning voor Leap Motion Unity Modules versie 4.5.1 is toegevoegd en ondersteuning voor de 4.4.0-assets is verwijderd. De huidige ondersteunde versies van de Leap Motion Unity Modules zijn 4.5.0 en 4.5.1.

Er is ook een extra stap voor de eerste integratie van Leap Motion. Zie How to Configure the Leap Motion Hand Tracking in MRTK (De schrikkelsbewegingshand bijhouden configureren in MRTK ) voor meer informatie.

Spatial Awareness Mesh Observer verwerkt aanpassingen van materialen beter

Met deze release hebben de Windows Mixed Reality Spatial Mesh Observer onderdelen en de Generic XR SDK Spatial Mesh Observer verwerking van visueel materiaal verbeterd. Materialen blijven nu behouden wanneer een gaas is bijgewerkt door de waarnemer, waar ze voorheen opnieuw werden ingesteld op de standaard VisibleMaterial zoals geconfigureerd in het profiel.

Hierdoor kunnen ontwikkelaars het mesh-materiaal wijzigen en de wijzigingen niet onverwacht laten overschrijven.

Link.xml gemaakt in de map MixedRealityToolkit.Generated

Met de introductie van Unity Package Manger MRTK schrijft MRTK nu een link.xml bestand naar de Assets/MixedRealityToolkit.Generated map, als er geen bestand aanwezig is. Het wordt aanbevolen om dit bestand (en link.xml.meta) toe te voegen aan broncodebeheer. Link.xml wordt gebruikt om de functionaliteit voor het strippen van beheerde code van de Unity-linker te beïnvloeden.

Meer informatie over het MRTK-link.xml-bestand vindt u in het artikel MRTK en het verwijderen van beheerde code .

Unity 2019.3+: MRTK-configuratiedialoogvenster probeert verouderde XR-ondersteuning niet meer in te schakelen

Om mogelijke conflicten te voorkomen bij het gebruik van het XR-platform van Unity, is de optie voor het inschakelen van verouderde XR-ondersteuning verwijderd uit het DIALOOGVENSTER MRTK-configuratie. Indien gewenst kan verouderde XR-ondersteuning in Unity 2019 worden ingeschakeld metprojectinstellingen>bewerken>XR-instellingen>>virtual reality ondersteund.

Vermindering van de overhead van InitializeOnLoad

We hebben gewerkt aan het verminderen van de hoeveelheid werk die wordt uitgevoerd in InitializeOnLoad-handlers, wat zou moeten leiden tot verbeteringen in de ontwikkelsnelheid van de interne lus. InitializeOnLoad-handlers worden elke keer uitgevoerd wanneer een script wordt gecompileerd, voordat de afspeelmodus wordt geactiveerd, en ook bij het starten van de editor. Deze handlers worden nu in veel minder gevallen uitgevoerd, wat resulteert in algemene verbeteringen in de reactiesnelheid van Unity.

In sommige gevallen moest er een compromis worden gemaakt:

Besturingselement voor grenzen gediplomeerd

Besturingselement Voor grenzen

Het beheer van de grenzen is niet meer experimenteel en wordt geleverd met een heleboel nieuwe functies en tal van bugfixes. Hier volgt een lijst met de belangrijkste punten van deze update:

  • eigenschappen worden gesplitst in configuraties, waardoor het eenvoudiger is om een besturingselement voor grenzen in te stellen
  • configuraties kunnen worden gedeeld via scriptbare objecten
  • elke eigenschap/scriptbare eigenschap is configureerbaar voor runtime
  • Besturingsinstallatie voor grenzen wordt niet meer opnieuw gemaakt bij eigenschapswijzigingen
  • ondersteuning voor vertaalingangen
  • volledige ondersteuning voor beperkingen via beperkingsbeheer
  • systeemintegratie van elastics (experimenteel)

Het oude begrenzingsvak is nu afgeschaft en bestaande gameobjecten met behulp van het begrenzingsvak kunnen worden bijgewerkt met behulp van het migratiehulpprogramma of de controle van het begrenzingsvak.

Component Beperkingsbeheer

Beperkingen kunnen nu worden gebruikt door zowel het besturingselement voor grenzen als de objectmanipulator via het nieuwe component constraint manager. Beide onderdelen maken standaard een beperkingsbeheer en verwerken eventuele gekoppelde beperkingen automatisch.

Naast het beheer van automatische gedragsbeperkingen wordt ook een handmatige modus geleverd waarmee gebruikers kunnen bepalen welke beperking moet worden verwerkt. Daarom is de manier waarop we beperkingen weergeven in de eigenschappencontrole enigszins gewijzigd.

Inspector-weergave met handmatige selectie van beperkingsbeheer

De beperkingen die op het onderdeel worden toegepast, worden nu weergegeven als een lijst in het onderdeel beperkingsbeheer, terwijl het onderdeel dat de beperkingsbeheer gebruikt (besturingselement voor grenzen of objectmanipulator) nu het geselecteerde beperkingsbeheer en de geselecteerde modus (automatisch of handmatig) weergeeft. Lees de sectie Beperkingsbeheer in onze documenten voor meer informatie.

HoloLens 2 knop materiaal bijwerken

Het materiaal van de voorkooi van HoloLens 2 knop bijgewerkt om de zwarte kleur in MRC te verwijderen.

HoloLens 2 knop materiaal bijwerken

Beschrijving paneel update, verplaatsbare voorbeeldscène

Beschrijvingsvenster bijgewerkt. (SceneDescriptionPanelRev.prefab) Nieuw ontwerp biedt een grijpbare bovenste balk waarmee de gebruiker de hele scène kan aanpassen/verplaatsen.

Beschrijvingsvenster bijwerken

Visualisatie van ruimtelijk gaas - puls bij luchtkraan

Voorbeeld van pulse shader bijgewerkt voor het ruimtelijke mesh zodat deze overeenkomt met het shell-gedrag van HoloLens 2.

Pulse op luchtkraan

Elastisch systeem (experimenteel)

Elastisch systeem2

MRTK wordt nu geleverd met een elastisch simulatiesysteem met een grote verscheidenheid aan uitbreidbare en flexibele subklassen, met bindingen voor 4-dimensionaleriëntatieveren, 3-dimensionale volumeveren en eenvoudige lineaire veersystemen.

Op dit moment kunnen de volgende MRTK-onderdelen die de elastics manager ondersteunen gebruikmaken van elastics-functionaliteit:

Een elastisch menu uitvouwenEen elastisch koffiekopje pakken

Joystick (experimenteel)

Een voorbeeld van een joystickinterface die een groot doelobject kan beheren.

Joystick

Kleurenkiezer (experimenteel)

Een experimenteel besturingselement waarmee u eenvoudig materiaalkleuren kunt wijzigen op elk object tijdens runtime.

Drie verschillende methoden voor het besturingselement voor kleurkiezer

Vier verschillende methoden voor het besturingselement voor kleurkiezer

Wijzigingen die fouten veroorzaken

Wijzigingen in assemblydefinitiebestanden

Sommige asmdef-bestanden zijn gewijzigd en ondersteunen nu alleen Unity 2018.4.13f1 of hoger. Compilatiefouten worden weergegeven bij het bijwerken naar MRTK 2.5 in eerdere versies van Unity. Dit kan worden opgelost door naar Assets\MRTK\Providers\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.asmdef te gaan in het projectvenster en de ontbrekende verwijzing in de inspector te verwijderen. Herhaal deze stappen met Assets\MRTK\Providers\Oculus\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.Oculus.asmdef en Assets\MRTK\Providers\WindowsMixedReality\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.WMR.asmdef. Houd er rekening mee dat u de wijzigingen moet herstellen door deze drie asmdef-bestanden te vervangen door originele (dat wil zeggen niet-gewijzigde) bestanden bij het upgraden naar Unity 2019.

IMixedRealityPointerMediator

Deze interface is bijgewerkt met een nieuwe functie:

void SetPointerPreferences(IPointerPreferences pointerPreferences);

Als u een aangepaste aanwijzermediator hebt die defaultPointerMediator niet in subklasse heeft, moet u deze nieuwe functie implementeren. Zie dit probleem voor meer achtergrondinformatie over waarom dit is toegevoegd. Dit is toegevoegd om ervoor te zorgen dat aanwijzervoorkeuren expliciet worden doorgegeven aan de bemiddelaar, in plaats van dat dit impliciet wordt gedaan op basis van de aanwezigheid van een constructor die een IPointerPreferences heeft genomen.

REST/Apparaatportal-API

De UseSSL statische eigenschap is verplaatst van Rest naar DevicePortal.

Als u dit eerder hebt gedaan...

Rest.UseSSL = true

Doe dit nu...

DevicePortal.UseSSL = true

Link.xml

Als een toepassing eerder de NuGet-distributie van de MRTK gebruikte, is het link.xml bestand verwijderd uit het Foundation-pakket. Als u regels voor codebehoud wilt herstellen door het project eenmaal in Unity te openen, wordt er een standaardbestand link.xml gemaakt in Assets/MixedRealityToolkit.Generated. Het wordt aanbevolen dit bestand (en link.xml.meta) toe te voegen aan broncodebeheer.

Wijzigingen in transformatiebeperking

De eigenschap TargetTransform is gemarkeerd als verouderd omdat deze niet is gebruikt door het beperkingssysteem. Beperkingslogica is gebaseerd op de transformatie die is doorgegeven in de methoden Initialiseren en Toepassen. Afgeleide gebruikersbeperkingen die afhankelijk zijn van deze eigenschap, kunnen targetTransform in de cache opslaan in hun implementatie door de transformatie van het beperkingsonderdeel op te slaan om hetzelfde gedrag te bereiken.

Het opgeslagen gegevenstype initiële wereldhouding worldPoseOnManipulationStart is gewijzigd van MixedRealityPose in MixedRealityTransform, dat de lokale schaalwaarde van het gemanipuleerde object bevat. Met deze wijziging is het niet meer nodig om initiële schaalwaarden afzonderlijk in de cache op te slaan.

Nieuwe eigenschap in IMixedRealityDictationSystem

Er is een nieuwe eigenschap AudioClip toegevoegd aan de interface IMixedRealityDictationSystem. Met AudioClip de eigenschap kunt u toegang krijgen tot de audioclip die is gekoppeld aan de huidige dicteersessie. Gebruikers moeten de eigenschap implementeren in hun scripts die de interface implementeren.

Service-gevels draaien naar beneden

Dienstengevels worden in 2,5 afgeslagen. Deze functie is oorspronkelijk toegevoegd om de configuratie van de MRTK-profielen eenvoudiger te maken (door valse gameobjecten in de scène te maken die elk van de MRTK-services vertegenwoordigden). Op de lange termijn willen we voorkomen dat valse in-game-objecten worden gemaakt en proberen deze gesynchroniseerd te houden (omdat problemen met gegevenssynchronisatie en 'bron van waarheid' notoir moeilijk te schalen en goed te krijgen zijn).

In 2.5 worden de servicegevelhandlers rondgehouden om ervoor te zorgen dat de projectupgrade soepel verloopt - alle gevels die in het project aanwezig zijn, worden verwijderd door de servicegevelhandler om ervoor te zorgen dat scènes die in 2.5 worden geopend, automatisch worden opgelost.

De resterende code die is gekoppeld aan de functie voor de servicegevel, wordt in een toekomstige versie verwijderd.

Toevoeging van bewegingscontroller aan invoersimulatieservice

Bewegingscontrollersimulatie wordt nu aangeboden in de afspeelmodus van de editor naast de bestaande handsimulatie. Om deze wijziging in te schakelen, worden veel huidige functies/velden/eigenschappen nu gemarkeerd als verouderd, met InputSimulationService.cs en MixedRealityInputSimulationProfile.cs de belangrijkste wijzigingen. De logica en het gedrag van relevante code blijven grotendeels hetzelfde, en het merendeel van de verouderde functies, enzovoort. zijn gerelateerd aan het vervangen van de verwijzing naar 'hand' naar de meer algemene term 'controller' (bijvoorbeeld van DefaultHandSimulationMode tot DefaultControllerSimulationMode). Naast het verkrijgen van nieuwe namen, wordt het retourtype van bepaalde nieuwe functies bijgewerkt zodat deze overeenkomt met de naam/gedragswijziging (bijvoorbeeld GetControllerDevice op basis van het origineel GetHandDevice retourneert BaseController nu in plaats van SimulatedHand).

IInputSimulationService heeft nu nieuwe eigenschappen MotionControllerDataLeft en MotionControllerDataRight. MixedRealityInputSimulationProfile bevat nu nieuwe velden voor de toetsenbordtoewijzing van bepaalde bewegingscontrollerknoppen.

Bekende problemen

CameraCache kan een nieuwe camera maken bij afsluiten

In sommige situaties (bijvoorbeeld bij het gebruik van de LeapMotion-provider in de Unity Editor), is het mogelijk dat de CameraCache de MainCamera opnieuw maakt bij het afsluiten. Zie dit probleem voor meer informatie.

FileNotFoundException wanneer voorbeelden worden geïmporteerd via Unity Package Manager

Afhankelijk van de lengte van het projectpad kunnen bij het importeren van voorbeelden via Unity Package Manager FileNotFoundException-berichten in de Unity Console worden gegenereerd. De oorzaak hiervan is dat het pad naar het ontbrekende bestand langer is dan MAX_PATH (256 tekens). U kunt dit oplossen door de lengte van het projectpad in te korten.

Er is geen spatializer opgegeven. De toepassing biedt geen ondersteuning voor ruimtelijk geluid

De waarschuwing 'Er is geen spatializer opgegeven' wordt weergegeven als er geen audio spatializer is geconfigureerd. Dit kan gebeuren als er geen XR-pakket is geïnstalleerd, omdat Unity spatializers in deze pakketten bevat.

Zorg ervoor dat u het volgende wilt oplossen:

  • Venster>Package Manager heeft een of meer XR-pakketten geïnstalleerd

  • Mixed Reality Toolkit>Hulpprogramma's>Unity Project configureren en een selectie maken voor Audio Spatializer

    Audio Spatializer selecteren

NullReferenceException: Objectverwijzing is niet ingesteld op een exemplaar van een object (SceneTransitionService.Initialize)

In sommige situaties kan het openen EyeTrackingDemo-00-RootScene een NullReferenceException veroorzaken in de methode Initialize van de klasse SceneTransitionService. Deze fout wordt veroorzaakt doordat het configuratieprofiel van de Scèneovergangsservice niet is ingesteld. Voer de volgende stappen uit om dit op te lossen:

  • Naar het MixedRealityToolkit object in de hiërarchie navigeren
  • Selecteer in het venster Inspector Extensions
  • Als dit niet is uitgevouwen, vouwt u Scene Transition Service
  • Stel de waarde van in Configuration Profile op MRTKExamplesHubSceneTransitionServiceProfile

Scèneovergang herstellen

Oculus Quest

Er is momenteel een bekend probleem met het gebruik van de Oculus XR-invoegtoepassing bij het richten op zelfstandige platforms. Controleer de Oculus bugtracker/forums/releaseopmerkingen voor updates.

De fout wordt opgeven met deze set van 3 fouten:

Fout met Oculus XR-invoegtoepassing

UnityUI en TextMeshPro

Er is een bekend probleem voor nieuwere versies van TextMeshPro (1.5.0+ of 2.1.1+), waarbij de standaardtekengrootte voor vervolgkeuzelijsten en vetgedrukte tekenafstand is gewijzigd.

TMP-installatiekopieën

Dit kan worden opgelost door te downgraden naar een eerdere versie van TextMeshPro. Zie probleem 8556 voor meer informatie.