Opmerkingen bij de release van Microsoft Mixed Reality Toolkit 2.5

Belangrijk

Er is een bekend probleem met de compiler 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 de gegevens niet kunt bijwerken Visual Studio, importeert u het com.microsoft.mixedreality.toolkit.tools pakket om een tijdelijke oplossing toe te passen.

Wat is er nieuw in 2.5.4

Er is een fout opgelost met Oculus-integratie bij het gebruik van UPM

Wanneer u UPM gebruikt, worden voor OculusXRSDKDeviceManagerProfile bij het opstarten altijd de prefabsingesteld op Geen. Deze release configureert de Apparaatbeheer om te wijzen naar een werkende set prefabs bij het opstarten.

Er is een probleem opgelost met OpenXR via UPM

Er is een probleem opgelost waarbij de OpenXR-providers niet standaard zijn toegevoegd aan de link.xml, waardoor nieuwe projecten niet op het apparaat kunnen worden uitgevoerd bij het gebruik van OpenXR en MRTK via de Pakketbeheer van Unity. Bestaande projecten die worden bijgewerkt, moeten nog steeds handmatig worden toegevoegd.

Wat is er nieuw in 2.5.3

Herstelt een regressie met Oculus die is geïntroduceerd in 2.5.2

2.5.2 heeft een buildprobleem geïntroduceerd bij het integreren van de Oculus SDK. Dit probleem wordt opgelost in deze release.

Wat is er nieuw in 2.5.2

Ondersteuning voor OpenXR toevoegen

Initiële ondersteuning voor het OpenXR Preview-pakket van Unity en het OpenXR-pakket van Microsoft Mixed Reality is toegevoegd. Zie de pagina Aan de slag met MRTK/XRSDK,het forumberichtvan Unity of de documentatie van Microsoft voor meer informatie.

Belangrijk

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

Fouten met grensvisualisatie opgelost

Grensvisualisaties, zoals de vloer of muren, worden nu op de juiste wijze geconfigureerd en zichtbaar tijdens runtime volgens het grensprofiel.

MSBuild voor Unity-ondersteuning

Ondersteuning voor MSBuild voor Unity is verwijderd vanaf de versie 2.5.2, in overeenstemming met de richtlijnen voor het nieuwe pakket van Unity.

Wat is er nieuw in 2.5.1

Fouten met pakketafhankelijkheden opgelost

In deze release worden onjuiste bestandsafhankelijkheden tussen pakketten opgelost (bijvoorbeeld: bestanden in Standaardactiva verwijzen niet langer onjuist naar bestanden in Foundation). Versie 2.5.1 voegt ook een expliciete afhankelijkheid toe van Text Mesh Pro.

Standard Assets package shaders copied to Assets/MRTK/Shaders

Wanneer het pakket Standaardactiva is 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 van shaders die zijn bijgewerkt voor de Universal Render Pipeline (URP), waardoor het verouderde gedrag wordt terugdraaien wanneer het project de volgende keer wordt geladen.

Er is een probleem opgelost met de cursor die aan handen kleven

In deze release wordt een probleem opgelost waarbij de cursor voor de bestemming van de teleportor zich kan houden aan handvisukken.

Wat is er nieuw in 2.5.0

Ondersteuning voor Unity Pakketbeheer (UPM)

De Mixed Reality Toolkit kunnen nu worden beheerd met behulp van de Unity-Pakketbeheer.

MRTK Foundation UPM-pakket

Notitie

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

Ondersteuning voor Oculus Quest XR SDK

MRTK ondersteunt nu het uitvoeren van Oculus Quest Headsets en Controllers met behulp van de native XR SDK-pijplijn. Handtracking wordt ook ondersteund met het Oculus Integration Unity-pakket dankzij het werk van Eric Provencher aan MRTK-Quest!

Zie de Oculus Quest Setup Guide (Installatiehandleiding voor Oculus Quest) voor instructies over het implementeren van uw apparaat in Oculus Quest met behulp van de nieuwe pijplijn

Objectverzameling schuiven

Het MRTK UX-onderdeel is bijgewerkt van een experimentele functie en biedt meer vrijheid voor het in indelingen plaatsen van 3D-inhoud van verschillende grootten met extra ondersteuning voor objecten die geen botsers hebben gekoppeld. Er is ook een nieuwe optie toegevoegd voor het uitschakelen van inhoudsmaskering, waardoor het maken van prototypen eenvoudiger wordt.

Zie Scrolling Object Collection (Objectverzameling scrollen) voor meer informatie.

Objectverzameling schuiven

Verbeteringen aan de animatie, verwerking en geluid van deteltelpunter

De aanwijzer voor teleporteren heeft nu verbeterde animaties en audiofeedback. We hebben ook de verwerking van detelteleporteerpunt verbeterd, zodat deze soepeler wordt verwerkt bij het overstappen van het wijzen naar nabijgelegen oppervlak naar verder wegoppervlak.

Cheatsheet voor invoersimulatie

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

Cheatsheet voor invoersimulatie

Oogbewegingen van invoersimulatie met muis

Gebruikers kunnen nu de Muis gebruiken om het bijhouden van de ogen te simuleren. Zie het Eye Simulation Mode veld in het profiel voor invoersimulatie en stel het in op Muis. Hiermee wordt het vorige veld Simulate Eye Position vervangen.

Oogbewegingen muis

Bewegingscontroller voor invoersimulatie in de playmodus van de editor

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

Conical grab pointer

Selectiewijzers kunnen nu worden geconfigureerd om query's uit te voeren op objecten in de buurt met behulp van een ijsje van het selectiepunt in plaats van een bol. Dit lijkt meer op het gedrag van de standaardinterface HoloLens 2, die met behulp van een ijsje opvraagt naar objecten in de buurt. Het DefaultLokoLens2InputSystemProfile is ook aangepast voor het gebruik van de nieuwe ConicalGrabPointer .

Conical Grab Pointer

TestUtilities-pakket

Er is nu een pakket (Microsoft.MixedReality.Toolkit. Unity.TestUtilities.2.5.0.unitypackage) dat de testinfrastructuur PlayMode en TestMode bevat die de 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 weest, verplaatst en vervolgens samenknelt 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 dezeTestUtilities.

Zie PlayModeTestsvan 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 initiële Leap Motion-integratie. Zie How to Configure the Leap Motion Hand Tracking in MRTK (De Leap Motion Hand Tracking configureren in MRTK) voor meer informatie.

Spatial Awareness Mesh Observer is beter in staat om materialen aan te passen

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

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

Link.xml gemaakt in de map MixedRealityToolkit.Generated

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

Meer informatie over het MRTKlink.xml bestand vindt u in het artikel MRTK en beheerde code stripping.

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

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 configuratiedialoogvenster van de MRTK. Indien gewenst kan verouderde XR-ondersteuning in Unity 2019 worden ingeschakeld met behulp van Edit > Project Instellingen > Player > XR Instellingen Virtual Reality > Supported.

Vermindering van initialiserenOnLoad-overhead

We hebben werk gedaan om de hoeveelheid werk te verminderen die wordt uitgevoerd in InitializeOnLoad-handlers, wat zou moeten leiden tot verbeteringen in de ontwikkelingssnelheid van de interne lus. InitializeOnLoad-handlers worden uitgevoerd telkens wanneer een script wordt gecompileerd, voordat u de play-modus ingaat 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 afweging worden gemaakt:

Besturingselement voor grenzen is geseedeerd

Besturingselement voor grenzen

Besturingselement voor grenzen is niet meer experimenteel en wordt geleverd met een aantal nieuwe functies en heel veel foutfixes. Hier een lijst met de belangrijkste kenmerken van deze update:

  • eigenschappen worden gesplitst in configuraties, waardoor het eenvoudiger wordt om besturingselement voor grenzen in te stellen
  • configuraties kunnen worden gedeeld via scriptbare objecten
  • elke eigenschap/scriptbare eigenschap kan door runtime worden geconfigureerd
  • besturingselement voor grenzen wordt niet meer opnieuw gemaakt bij eigenschapswijzigingen
  • ondersteuning voor vertaaling handles
  • volledige beperkingsondersteuning via constraint manager
  • systeemintegratie voor elastics (experimenteel)

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

Beperkingsbeheeronderdeel

Beperkingen kunnen nu worden gebruikt door zowel het besturingselement voor grenzen als de object manipulator via het nieuwe beperkingsbeheeronderdeel. Beide onderdelen maken standaard een beperkingsbeheerder en verwerken eventuele gekoppelde beperkingen automatisch.

Naast de automatische gedragbeperkingsbeheerder 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 iets gewijzigd.

Inspector view showing manual constraint manager selection

De beperkingen die op het onderdeel worden toegepast, worden nu weergegeven als een lijst in het beperkingsbeheeronderdeel, terwijl het onderdeel dat gebruik maakt van de beperkingsbeheerder (begrenzingsbeheer of object manipulator) nu de geselecteerde beperkingsbeheerder en -modus (automatisch of handmatig) laat zien. Lees de sectie Constraint Manager in onze documenten voor meer informatie.

HoloLens 2 knopmateriaal bijwerken

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

HoloLens 2 knopmateriaal bijwerken

Update van het deelvenster Beschrijving, verplaatsbare voorbeeldscène

Het deelvenster Beschrijving is bijgewerkt. (SceneDescriptionPanelRev.prefab) Nieuw ontwerp biedt een pakkende bovenste balk waarmee de gebruiker de hele scène kan aanpassen/verplaatsen.

Update van het deelvenster Beschrijving

Visualisatie van ruimtelijke mesh - pulse on air-tap

Het voorbeeld van de pulse-shader voor de ruimtelijke mesh is bijgewerkt HoloLens 2 van de shell van de HoloLens 2 van de stroom.

Pulse on air-tap

Elastisch systeem (experimenteel)

Elastic System2

MRTK wordt nu geleverd met een elastisch simulatiesysteem dat een breed scala aan extensible en flexibele subklassen bevat, die bindingen bieden voor 4-dimensionale quaternion- en 3-dimensionale volumeverwijdering en eenvoudige lineaire springsystemen.

Momenteel kunnen de volgende MRTK-onderdelen die elastics manager ondersteunen gebruikmaken van elastics-functionaliteit:

Expanding an elastic menu Grabbing an elastic coffee cup

Hado (experimenteel)

Een voorbeeld van een interface waarmee een groot doelobject kan worden bestuurd.

Joystick

Kleuren kiezen (experimenteel)

Een experimenteel besturingselement dat het eenvoudig maakt om materiaalkleuren te wijzigen voor elk object tijdens runtime.

Drie verschillende methoden voor het besturingselement Kleur kiezen

Vier verschillende methoden voor het besturingselement kleuren kiezen

Wijzigingen die fouten veroorzaken

Wijzigingen in assemblydefinitiebestanden

Sommige asmdef-bestanden worden gewijzigd en ondersteunen nu alleen Unity 2018.4.13f1 of hoger. Compilatiefouten worden in eerdere versies van Unity weer geven bij het bijwerken naar MRTK 2.5. Dit kan worden opgelost door in het projectvenster naar te gaan en de ontbrekende verwijzing in de Assets\MRTK\Providers\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.asmdef 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 terugdraaien door deze drie asmdef-bestanden te vervangen door oorspronkelijke (dat wil zeggen ongewijzigde) bestanden bij een upgrade naar Unity 2019.

IMixedRealityPointerMediator

Deze interface is bijgewerkt met een nieuwe functie:

void SetPointerPreferences(IPointerPreferences pointerPreferences);

Als u een aangepaste aanwijzer hebt die geen subklasse DefaultPointerMediator 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 voorkeurswijzers expliciet worden doorgegeven aan de kantelaar, in plaats van dit impliciet te laten doen op basis van de aanwezigheid van een constructor die een IPointerPreferences heeft aangenomen.

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 bestand link.xml verwijderd uit het Foundation-pakket. Als u de regels voor het behouden van code wilt herstellen, maakt u met het openen van het project eenmaal in Unity een link.xml standaardbestand in Assets/MixedRealityToolkit.Generated . Het wordt aanbevolen dit bestand (en link.xml.meta ) toe te voegen aan broncodebeheer.

Wijzigingen in transformatiebeperkingen

De eigenschap TargetTransform is gemarkeerd als verouderd omdat deze niet is gebruikt door het beperkingssysteem. Beperkingslogica is gebaseerd op de transformatie die is doorgegeven aan 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 voor de initiële wereldhouding is gewijzigd van worldPoseOnManipulationStart 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 nemen.

Nieuwe eigenschap in IMixedRealityDictationSystem

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

Service-facades worden niet meer in gebruik genomen

Services-facades worden in 2.5 uitgeschakeld. Deze functie is oorspronkelijk toegevoegd om de configuratie van de MRTK-profielen gemakkelijker te maken (door het maken van valse GameObjects in scène die elk van de services van MRTK vertegenwoordigden). Op de lange termijn willen we voorkomen dat er valse gameobjecten worden gemaakt en proberen ze synchroon te houden (omdat problemen met gegevenssynchronisatie en 'bron van waarheid' moeilijk te schalen en goed te krijgen zijn).

In 2.5 worden de servicefaçade-handlers bewaard om ervoor te zorgen dat de projectupgrade soepel verloopt. Alle bestaande facades in het project worden door de servicefaçade-handler verwijderd om ervoor te zorgen dat de scènes die in 2.5 zijn geopend, automatisch worden hersteld.

De resterende code die is gekoppeld aan de functie voor de servicefaçade, wordt in een toekomstige release verwijderd.

Toevoeging van een bewegingscontroller aan de invoersimulatieservice

Bewegingscontrollersimulatie wordt nu aangeboden in de editor-playmodus, samen met de bestaande handsimulatie. Om deze wijziging mogelijk te maken, 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 de meeste verouderde functies, enzovoort, zijn gerelateerd aan het vervangen van verwijzingen naar 'hand' naar de meer algemene term 'controller' (bijvoorbeeld van naar DefaultHandSimulationMode DefaultControllerSimulationMode ). Naast het verkrijgen van nieuwe namen, wordt het retourtype van bepaalde nieuwe functies bijgewerkt om overeen te komen met de naams-/gedragswijziging (bijvoorbeeld op basis van de oorspronkelijke retourneert nu in plaats GetControllerDevice GetHandDevice van BaseController 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 het afsluiten

In sommige situaties (bijvoorbeeld wanneer u de LeapMotion-provider in de Unity Editor gebruikt), is het mogelijk dat cameraCache de MainCamera opnieuw maakt bij het afsluiten. Raadpleeg dit probleem voor meer informatie.

FileNotFoundException wanneer voorbeelden worden geïmporteerd via Unity Pakketbeheer

Afhankelijk van de lengte van het projectpad kunnen bij het importeren van voorbeelden via Unity Pakketbeheer FileNotFoundException-berichten worden gegenereerd in de Unity-console. De oorzaak hiervoor 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 Spatial Sound

Er wordt een waarschuwing 'Er is geen spatializer opgegeven' 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.

Om dit op te lossen, moet u ervoor zorgen dat:

  • Venster > Pakketbeheer of meer XR-pakketten zijn geïnstalleerd

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

    Selecteer Audio Spatializer

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

In sommige gevallen kan openen EyeTrackingDemo-00-RootScene een NullReferenceException veroorzaken in de methode Initialize van de klasse SceneTransitionService. Deze fout wordt veroorzaakt doordat het configuratieprofiel van de Scene Transition Service niet is gemaakt. Voer de volgende stappen uit om dit op te lossen:

  • Navigeer naar MixedRealityToolkit het object in de hiërarchie
  • Selecteer in het venster Inspector Extensions
  • Als dit niet het vouwt, vouwt u uit Scene Transition Service
  • Stel de waarde van Configuration Profile in op MRTKExamplesHubTransitionServiceProfile

Overgang van scène herstellen

Oculus Quest

Er is momenteel een bekend probleem bij het gebruik van de Oculus XR-invoegvoegsom bij bij het gebruik van zelfstandige platforms. Controleer de Oculus bug tracker/forums/release notes voor updates.

De fout wordt betekend met deze set van 3 fouten:

Fout met de Oculus XR-invoegvoegcode

UnityUI en TextMeshPro

Er is een bekend probleem voor nieuwere versies van TextMeshPro (1.5.0+ of 2.1.1+), waarbij de standaardlettergrootte voor vervolgkeuzen en vetgedrukte tekenruimte is gewijzigd.

TMP-afbeelding

Dit kan worden omkaderd door te downgraden naar een eerdere versie van TextMeshPro. Zie problemen #8556 voor meer informatie.