Konfigurationsguide för MRTK-profil

Mixed Reality Toolkit centraliserar så mycket av den konfiguration som krävs för att hantera verktygslådan som möjligt (förutom "saker" i körningsmiljön").

Den här guiden är en enkel genomgång för var och en av de konfigurationsprofilskärmar som för närvarande är tillgängliga för verktygslådan.

Huvudkonfigurationsprofilen för Mixed Reality Toolkit

Huvudkonfigurationsprofilen, som är kopplad till MixedRealityToolkit GameObject i din scen, är huvudstartpunkten för Toolkit i projektet.

Anteckning

Den Mixed Reality Toolkit "låser" standardkonfigurationsskärmarna för att säkerställa att du alltid har en gemensam startpunkt för ditt projekt och det uppmuntras att börja definiera dina egna inställningar när projektet utvecklas. MRTK-konfigurationen kan inte redigeras under uppspelningsläget.

MRTK configuration profile

Alla standardprofiler för Mixed Reality Toolkit finns i SDK-projektet i mappen Assets/MRTK/SDK/Profiles.

Viktigt

DefaultHoloLens2ConfigurationProfile är optimerad för HoloLens 2. Mer information finns i Profiler .

När du öppnar huvudkonfigurationsprofilen för Mixed Reality Toolkit visas följande skärm i inspektören:

MRTK configuration scene

Om du väljer en MixedRealityToolkitConfigurationProfile-tillgång utan MixedRealityToolkit i scenen, kommer den att fråga dig om du vill att MRTK automatiskt ska konfigurera scenen åt dig. Detta är valfritt, men det måste finnas ett aktivt MixedRealityToolkit-objekt i scenen för att få åtkomst till alla konfigurationsskärmar.

Här finns den aktuella aktiva körningskonfigurationen för projektet.

Härifrån kan du gå till alla konfigurationsprofiler för MRTK, inklusive:

De här konfigurationsprofilerna beskrivs nedan i relevanta avsnitt:


Upplevelseinställningar

Den här inställningen finns på huvudsidan för Mixed Reality Toolkit och definierar standardåtgärden för Mixed Reality miljöskala för projektet.

Experiance settings

Kamerainställningar

Kamerainställningarna definierar hur kameran ska konfigureras för ditt Mixed Reality projekt, och definierar allmänna inställningar för klippning, kvalitet och transparens.

Camera Profile

Inställningar för indatasystem

Den Mixed Reality Project tillhandahåller ett robust och vältränat indatasystem för routning av alla indatahändelser runt projektet som väljs som standard.

Input System settings 1

Bakom indatasystemet som tillhandahålls av MRTK finns flera andra system, som hjälper till att driva och hantera de komplexa intervävningar som krävs för att abstrahera komplexiteten i ett ramverk för multiplattform/mixad verklighet.

Input System settings 2

Var och en av de enskilda profilerna beskrivs nedan:


Inställningar för gränsvisualisering

Gränssystemet översätter den upplevda gränsen som rapporteras av de underliggande plattformarnas gräns-/skyddssystem. Konfigurationen av Boundary visualizer ger dig möjlighet att automatiskt visa den inspelade gränsen i din scen i förhållande till användarens position. Gränsen reagerar/uppdateras också baserat på var användaren teleporteras inom scenen.

Boundry Visualization Settings

Val av teleporteringssystem

I Mixed Reality Project finns ett komplett teleporteringssystem för hantering av teleporteringshändelser i projektet som är valt som standard.

Teleport System settings

Inställningar för rumslig medvetenhet

Den Mixed Reality Project tillhandahåller ett ombyggt rumsligt medvetenhetssystem för arbete med rumsliga skanningssystem i projektet som väljs som standard.

Spatial Awareness settings 1

Med konfigurationen för rumslig medvetenhet i Mixed Reality Toolkit kan du skräddarsy hur systemet startar, oavsett om det är automatiskt när programmet startas eller senare programmatiskt samt ange utrymmena för visningsområdet.

Du kan också konfigurera nät- och ytinställningarna och ytterligare anpassa hur projektet förstår miljön omkring dig.

Detta gäller endast för enheter som kan tillhandahålla en genomsökt miljö.

Spatial Awareness settings 2

Diagnostikinställningar

En valfri men mycket användbar funktion i MRTK är funktionen för plugin-diagnostik.

Diagnostics settings

Diagnostikprofilen innehåller flera enkla system att övervaka medan projektet körs, inklusive en praktisk på/av-brytare för att aktivera/inaktivera visningspanelen i scenen.

Diagnostics settings System settings 2

Scensysteminställningar

MRTK tillhandahåller den här valfria tjänsten som hjälper dig att hantera komplex additiv sceninläsning/avlastning. Om du vill avgöra om scensystemet skulle passa bra för ditt projekt läser du Komma igång Guide för scensystem.

Scene System settings 1

Ytterligare tjänstinställningar

Ett av de mer avancerade områdena i Mixed Reality Toolkit är dess implementering av tjänstlokaliserarmönster som gör det möjligt att registrera alla "tjänster" med ramverket. Detta gör att ramverket både kan utökas med nya funktioner/system enkelt, men gör det också möjligt för projekt att dra nytta av dessa funktioner för att registrera sina egna körningskomponenter.

Alla registrerade tjänster får fortfarande full nytta av alla Unity-händelser, utan omkostnader och kostnader för att implementera ett MonoBehaviour- eller klumpigt singleton-mönster. Detta möjliggör rena C#-komponenter utan scenomkostnader för att köra både förgrunds- och bakgrundsprocesser, t.ex. leksystem, körningsspellogik eller praktiskt taget allt annat.

additional System settings

Inställningar för indataåtgärder

Indataåtgärder är ett sätt att abstrahera fysiska interaktioner och indata från ett körningsprojekt. Alla fysiska indata (från styrenheter/händer/mus/etc) översätts till en logisk indataåtgärd för användning i ditt körningsprojekt. Detta säkerställer att oavsett var indata kommer ifrån implementerar projektet bara dessa åtgärder som "Saker att göra" eller "Interagera med" i dina scener.

Om du vill skapa en ny indataåtgärd klickar du bara på knappen "Lägg till en ny åtgärd" och anger ett eget textnamn för vad den representerar. Då behöver du bara välja en axel (typen av data) som åtgärden är avsedd att förmedla, eller, om det gäller fysiska kontrollanter, den fysiska indatatyp som den kan kopplas till, till exempel:

Axelvillkor Datatyp Beskrivning Exempel på användning
Ingen Inga data Används för en tom åtgärd eller händelse Händelseutlösare
Rå (reserverad) objekt Reserverad för framtida användning Ej tillämpligt
Digital boolesk Ett booleskt värde på eller utanför typdata En kontrollantknapp
Enkel axel flyt Ett enda precisionsdatavärde Intervallindata, t.ex. en utlösare
Dubbel axel Vektor2 Ett datum av typen dubbel flyttal för flera axlar En Dpad eller tumsticka
Tre dof-placeringar Vektor3 Positionella typdata från med 3 flyttalsaxel Kontrollant med endast 3D-placeringsformat
Tre dof-rotation Quaternion Endast rotationsinmatning med 4 flyttalsaxel En kontrollant med tre graders stil, t.ex. Oculus Go-styrenhet
Sex dof Mixed Reality pose (Vector3, Quaternion) Indata för position och rotationsformat med både Vector3- och Quaternion-komponenter En rörelsekontrollant eller pekare

Händelser som använder indataåtgärder är inte begränsade till fysiska kontrollanter och kan fortfarande användas i projektet för att få körningseffekter att generera nya åtgärder.

Anteckning

Indataåtgärder är en av de få komponenter som inte kan redigeras vid körning. De är endast en konfiguration för designtid. Den här profilen bör inte växlas ut medan projektet körs på grund av ramverkets (och dina projekts) beroende av ID:t som genereras för varje åtgärd.

Configuration Profile

Regler för indataåtgärder

Regler för indataåtgärder är ett sätt att automatiskt översätta en händelse som utlöses för en indataåtgärd till olika åtgärder baserat på dess datavärde. Dessa hanteras sömlöst inom ramverket och medför inga prestandakostnader.

Till exempel konvertera indatahändelsen med en enda dubbel axel från en DPad i till de 4 motsvarande åtgärderna "Dpad Up" / "DPad Down" / "Dpad Left" /"Dpad Right" (som visas i bilden nedan).

Detta kan också göras i din egen kod. Men eftersom detta var ett mycket vanligt mönster tillhandahåller ramverket en mekanism för att göra detta "out of the box"

Regler för indataåtgärder kan konfigureras för vilken som helst av den tillgängliga indataaxeln. Indataåtgärder från en axeltyp kan dock översättas till en annan indataåtgärd av samma axeltyp. Du kan mappa en åtgärd med dubbla axlar till en annan åtgärd med dubbla axlar, men inte till en digital åtgärd eller ingen åtgärd.

Input action rules profile


Konfiguration av pekare

Pekare används för att driva interaktivitet i scenen från alla indataenheter, vilket ger både en riktning och ett träfftest med alla objekt i en scen (som har en kolliderare ansluten eller är en UI-komponent). Pekare konfigureras som standard automatiskt för styrenheter, headset (blick/fokus) och mus-/beröringsinmatning.

Pekare kan också visualiseras i den aktiva scenen med någon av de många radkomponenter som tillhandahålls av Mixed Reality Toolkit, eller någon av dina egna om de implementerar MRTK IMixedRealityPointer-gränssnittet.

Input Pointer Profile
  • Pekare: Avgör den globala pekmängden för alla pekare, inklusive blick.
  • Pekar på Raycast Layer Masks: Avgör vilka lagerpekare som ska strålkastas mot.
  • Debug Draw Pointing Rays: En felsökningshjälp för visualisering av de strålar som används för raycasting.
  • Felsöka strålefärger för ritning: En uppsättning färger som ska användas för visualisering.
  • Prefab för blickmarkör: Gör det enkelt att ange en global blickmarkör för alla scenar.

Det finns ytterligare en hjälpknapp för att snabbt gå till Gaze Provider för att åsidosätta vissa specifika värden för Gaze om det behövs.


Konfiguration av gester

Gester är en systemspecifik implementering som gör att du kan tilldela indataåtgärder till de olika "Gest"-indatametoderna som tillhandahålls av olika SDK:er (t.ex. HoloLens).

Anteckning

Den aktuella gestimplementeringen är endast avsedd för HoloLens och kommer att förbättras för andra system eftersom de läggs till i Toolkit i framtiden (inga datum ännu).

Gesture configuration

Talkommandon

Precis som gester ger vissa körningsplattformar även intelligenta "Tal till text"-funktioner med möjlighet att generera kommandon som kan tas emot av ett Unity-projekt. Med den här konfigurationsprofilen kan du konfigurera följande:

  1. Allmänt Inställningar – "Startbeteende" inställt på Automatisk start eller Manuell start avgör om KeywordRecognizer ska initieras vid start av indatasystemet eller om projektet ska bestämma när KeywordRecognizer ska initieras. "Konfidensnivå för igenkänning" används för att initiera Unitys KeywordRecognizer-API
  2. Talkommandon – Registrerar "ord" och översätter dem till indataåtgärder som kan tas emot av projektet. De kan också kopplas till tangentbordsåtgärder om det behövs.

Viktigt

Systemet stöder för närvarande endast tal när det körs på Windows 10 plattformar, t.ex. HoloLens och Windows 10 desktop och kommer att förbättras för andra system eftersom de läggs till i MRTK i framtiden (inga datum ännu).

Configuration Profile screens

Konfiguration av kontrollantmappning

En av huvudkonfigurationsskärmarna för Mixed Reality Toolkit är möjligheten att konfigurera och mappa de olika typer av kontrollanter som kan användas av ditt projekt.

På konfigurationsskärmen nedan kan du konfigurera alla kontrollanter som för närvarande identifieras av verktygslådan.

Controller Mapping

MRTK tillhandahåller en standardkonfiguration för följande kontrollanter/system:

  • Mus (inklusive stöd för 3D-rumslig mus)
  • Pekskärm
  • Xbox-styrenheter
  • Windows Mixed Reality styrenheter
  • HoloLens gester
  • HTC Vive wand styrenheter
  • Oculus Touch-styrenheter
  • Oculus Fjärrstyrenhet
  • Allmänna OpenVR-enheter (endast avancerade användare)

Om du klickar på Avbildning för något av de färdiga styrsystemen kan du konfigurera en enda indataåtgärd för alla motsvarande indata, till exempel se konfigurationsskärmen för Oculus Touch-styrenheten nedan:

Controller config screen

Det finns också en avancerad skärm för att konfigurera andra OpenVR- eller Unity-indatastyrenheter som inte identifieras ovan.


Visualiseringsinställningar för kontrollant

Förutom kontrollantmappningen tillhandahålls en separat konfigurationsprofil för att anpassa hur dina kontrollanter visas i dina scener.

Detta kan konfigureras på en "Global" (alla instanser av en kontrollant för en specifik hand) eller specifika för en enskild kontrollanttyp/hand.

MRTK stöder även interna SDK-styrmodeller för Windows Mixed Reality och OpenVR. Dessa läses in som GameObjects i din scen och placeras med hjälp av plattformens kontrollantspårning.

Om din kontrollantrepresentation i scenen måste förskjutas från den fysiska kontrollantens position anger du helt enkelt den förskjutningen mot kontrollantmodellens prefab (t.ex. att ställa in transformeringspositionen för kontrollantens prefab med en förskjutningsposition).

Visualization profile

Verktyg för redigeringsprogram

Följande verktyg fungerar bara i redigeringsprogrammet och är användbara för att förbättra produktiviteten i utvecklingen.

MRTK Editor Configuration Utilities

Tjänstkontrollanter

Tjänstkontrollanter är en redigeringsfunktion som genererar scenobjekt som representerar aktiva tjänster. Om du väljer dessa objekt visas inspektörer som erbjuder dokumentationslänkar, kontroll över redigerarvisualiseringar och insikter om tjänstens tillstånd.

Service Inspectors

Du kan aktivera tjänstkontrollanter genom att kontrollera Använd tjänstkontrollanter under Redigeraren Inställningar i konfigurationsprofilen.

Djupbuffertåtergivning

Att dela djupbufferten med vissa plattformar för mixad verklighet kan förbättra hologramstabiliseringen. Till exempel kan Windows Mixed Reality-plattformen ändra den renderade scenen per pixel för att ta hänsyn till subtila huvudrörelser under den tid det tog att återge en bildruta. De här teknikerna kräver dock djupbuffertar med korrekta data för att veta var och hur långt geometrin kommer från användaren.

För att säkerställa att en scen renderar alla nödvändiga data till djupbufferten kan utvecklare växla funktionen Render Depth Buffer under Redigeraren Inställningar i konfigurationsprofilen. Detta tar den aktuella djupbufferten och renderar den som färg i scenvyn genom att tillämpa en efterbearbetningseffekt, DepthBufferRenderer, på huvudkameran.

Render Depth Buffer UtilityDen blå cylindern i scenen har ett material med ZWrite av så att inga djupdata skrivs

Ändra profiler vid körning

Det är möjligt att uppdatera profiler vid körning, och det finns vanligtvis två olika scenarier och tider där det här är användbart:

  1. Pre MRTK-initieringsprofilväxling: Vid start, innan MRTK initieras och profilen blir aktiv, ersätter du profilen som ännu inte används för att aktivera/inaktivera olika funktioner baserat på enhetens funktioner. Om upplevelsen till exempel körs i VR som inte har maskinvara för rumslig mappning är det förmodligen inte meningsfullt att ha komponenten för rumslig mappning aktiverad.
  2. Aktiv profilväxling: Efter starten, efter att MRTK har initierats och en profil har blivit aktiv, byter du den profil som används för att ändra hur vissa funktioner beter sig. Det kan till exempel finnas en specifik underupplevelse i programmet som vill att långt handpekare ska tas bort helt.

Profilväxel före MRTK-initiering

Detta kan åstadkommas genom att koppla en MonoBehaviour (exempel nedan) som körs före MRTK-initiering (dvs. Awake()). Observera att skriptet (dvs. anropa till SetProfileBeforeInitialization) måste köras tidigare än skriptet MixedRealityToolkit , vilket kan uppnås genom att ange inställningar för skriptkörningsordning.

using Microsoft.MixedReality.Toolkit;
using UnityEngine;

/// <summary>
/// Sample MonoBehaviour that will run before the MixedRealityToolkit object, and change
/// the profile, so that when the MRTK initializes it uses the profile specified below
/// rather than the one that is saved in its scene.
/// </summary>
/// <remarks>
/// Note that this script must have a higher priority in the script execution order compared
/// to that of MixedRealityToolkit.cs. See https://docs.unity3d.com/Manual/class-MonoManager.html
/// for more information on script execution order.
/// </remarks>
public class PreInitProfileSwapper : MonoBehaviour
{

    [SerializeField]
    private MixedRealityToolkitConfigurationProfile profileToUse = null;

    private void Awake()
    {
        // Here you could choose any arbitrary MixedRealityToolkitConfigurationProfile (for example, you could
        // add some platform checking code here to determine which profile to load).
        MixedRealityToolkit.SetProfileBeforeInitialization(profileToUse);
    }
}

I stället för "profileToUse" är det möjligt att ha en godtycklig uppsättning profiler som gäller för specifika plattformar (till exempel en för HoloLens 1, en för VR, en för HoloLens 2 osv.). Det går att använda olika andra indikatorer (t.ex. https://docs.unity3d.com/ScriptReference/SystemInfo.html, eller om kameran är ogenomskinlig/transparent) för att ta reda på vilken profil som ska läsas in.

Aktiv profilväxel

Detta kan åstadkommas genom att ange MixedRealityToolkit.Instance.ActiveProfile egenskapen till en ny profil som ersätter den aktiva profilen.

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

Observera att när du ställer in ActiveProfile under körning kommer de tjänster som körs att förstöras efter den senaste LateUpdate() för alla tjänster, och instansiering och initiering av de tjänster som är associerade med den nya profilen sker före den första uppdateringen() av alla tjänster.

En märkbar programhämtning kan uppstå under den här processen. Alla skript med högre prioritet än skriptet MixedRealityToolkit kan också ange sin Uppdatering innan den nya profilen har konfigurerats korrekt. Mer information om skriptprioritet finns i Inställningar för skriptkörningsordning .

I profilväxlingsprocessen förblir den befintliga UI-kameran oförändrad, vilket säkerställer att Unity-gränssnittskomponenter som kräver arbetsyta fortfarande fungerar efter växeln.

Se även