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.
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.
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
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.
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
.
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:
- Zie Leap Motion Hand Tracking Configuration voor de extra integratiestap.
- Voor degenen die ARFoundation gebruiken, is er nu een extra handmatige stap in de stappen om aan de slag te gaan. Zie ARFoundation voor de nieuwe stappen.
- Voor degenen die Holographic Remoting met verouderde XR-pijplijn op HoloLens 2 gaan gebruiken, is er nu een handmatige stap om uit te voeren.
Besturingselement voor grenzen gediplomeerd
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.
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.
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.
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.
Elastisch systeem (experimenteel)
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:
Joystick (experimenteel)
Een voorbeeld van een joystickinterface die een groot doelobject kan beheren.
Kleurenkiezer (experimenteel)
Een experimenteel besturingselement waarmee u eenvoudig materiaalkleuren kunt wijzigen op elk object tijdens runtime.
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
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
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:
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.
Dit kan worden opgelost door te downgraden naar een eerdere versie van TextMeshPro. Zie probleem 8556 voor meer informatie.