Konfigurationsguide för MRTK2-profil

Mixed Reality Toolkit centraliserar så mycket av konfigurationen som krävs för att hantera verktygslådan som möjligt (förutom "saker" för verklig körning").

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.

Konfigurationsprofilen för Mixed Reality Toolkit

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

Anteckning

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

MRTK-konfigurationsprofil

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

Viktigt

DefaultHoloLens2ConfigurationProfile är optimerat 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-konfigurationsscen

Om du väljer en MixedRealityToolkitConfigurationProfile-tillgång utan MixedRealityToolkit i scenen, kommer den att fråga dig om du vill att MRTK ska konfigurera scenen automatiskt åt dig. Det här är valfritt. Det måste dock 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 navigera 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å konfigurationssidan för Mixed Reality Toolkit och definierar standardåtgärden för Mixed Reality miljöskala för projektet.

Experiance-inställningar

Kamerainställningar

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

Kameraprofil

Inställningar för indatasystem

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

Inställningar för indatasystem 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.

Inställningar för indatasystem 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. Visualiseringskonfigurationen för gränsvisualisering ger dig möjlighet att automatiskt visa den inspelade gränsen i din scen i förhållande till användarens position. Gränsen kommer också att reagera/uppdatera baserat på var användaren teleporteras i scenen.

Inställningar för begränsningsvisualisering

Val av teleporteringssystem

Mixed Reality Project tillhandahåller ett fullständigt teleporteringssystem för hantering av teleporteringshändelser i projektet som är valt som standard.

Inställningar för teleporteringssystem

Inställningar för rumslig medvetenhet

Mixed Reality Project tillhandahåller ett ombyggt rumsligt medvetenhetssystem för att arbeta med rumsliga genomsökningssystem i projektet som väljs som standard.

Rumsliga medvetenhetsinställningar 1

Mixed Reality Konfiguration av rumslig medvetenhet i Toolkit gör att du kan skräddarsy hur systemet startar, oavsett om det sker automatiskt när programmet startas eller senare programmatiskt samt anger omfattningen för synfältet.

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 skannad miljö.

Rumsliga medvetenhetsinställningar 2

Diagnostikinställningar

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

Diagnostikinställningar

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

Diagnostikinställningar Systeminställningar 2

Scensysteminställningar

MRTK tillhandahåller den här valfria tjänsten som hjälper dig att hantera komplex inläsning/avlastning av additiva scenarier. Om du vill avgöra om scensystemet skulle passa bra för projektet läser du Komma igång guide för scensystem.

Scensysteminställningar 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 kostnader för att implementera ett MonoBehaviour- eller clunky 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.

ytterligare systeminställningar

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 oavsett var indata kommer ifrån, ditt projekt implementerar helt enkelt 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. Sedan behöver du bara välja en axel (typen av data) som åtgärden är avsedd att förmedla, eller när det gäller fysiska kontrollanter, den fysiska indatatyp som den kan kopplas till, till exempel:

Axelbegränsning 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
Enskild axel flyt Ett datavärde med enkel precision En intervallinmatning, t.ex. en utlösare
Dubbel axel Vektor2 Ett datum av typen dubbel flyttal för flera axlar En DPAD eller tumsticka
Tre Dof-lägen Vektor3 Positionella typdata från med 3 flyttalsaxel Kontrollant med endast 3D-placeringsformat
Tre Dof Rotation Quaternion Endast rotationsinmatning med 4 flyttalsaxel En kontrollant i 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örelsestyrenhet 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 bara en designtidskonfiguration. Den här profilen bör inte växlas ut medan projektet körs på grund av ramverksberoendet (och dina projekt) på det ID som genereras för varje åtgärd.

Konfigurationsprofil

Regler för indataåtgärder

Regler för indataåtgärder är ett sätt att automatiskt översätta en händelse som genereras 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.

Du kan 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" (se 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 någon av de 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.

Profil för indataåtgärdsregler


Pekarkonfiguration

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 hjälp av 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.

Profil för indatapekare
  • Pekande omfattning: Avgör den globala pekarens omfattning för alla pekare, inklusive blick.
  • Pekar på Raycast Layer Masks: Avgör vilka lagerpekare som ska strålkastas mot.
  • Felsöka ritande strålar: En felsökningshjälp för att visualisera de strålar som används för raycasting.
  • Felsöka ritande strålar färger: 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 när de läggs till i Toolkit i framtiden (inga datum ännu).

Gestkonfiguration

Talkommandon

Precis som gester ger vissa körningsplattformar också 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änna inställningar – "Startbeteende" inställd på Automatisk start eller Manuell start avgör om KeywordRecognizer ska initieras vid start av indatasystem eller låta projektet bestämma när nyckelordetRecognizer 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).

Konfigurationsprofilskärmar

Konfiguration av mappning av kontrollant

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

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

Mappning av kontrollant

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 controllers
  • 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:

Kontrollantkonfigurationsskärm

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 styrenhetsmodellens prefab (t.ex. att ställa in styrenhetens transformeringsposition med en förskjutningsposition).

Visualiseringsprofil

Redigeringsverktyg

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

Konfigurationsverktyg för MRTK-redigeraren

Tjänstkontrollanter

Service Inspectors är en redigeringsfunktion som genererar objekt i scenen 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.

Tjänstkontrollanter

Du kan aktivera tjänstkontrollanter genom att kontrollera Använd tjänstinspektörer under Redigeringsinstä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 bildpunkt för att ta hänsyn till subtila huvudrörelser under den tid det tog att återge en ram. Dessa tekniker 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 Redigerarinställningar i konfigurationsprofilen. Detta tar den aktuella djupbufferten och renderar den som färg till scenvyn genom att tillämpa en efterbearbetningseffekt, DepthBufferRenderer, på huvudkameran.

Återgivningsverktyget för djupbuffertDen 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äxel: 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 spatial mappning aktiverad.
  2. Aktiv profilväxel: Efter start, när MRTK har initierats och en profil har blivit aktiv, byter du den profil som för närvarande 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.

Pre MRTK-initieringsprofilväxel

Detta kan åstadkommas genom att koppla en MonoBehaviour (exempel nedan) som körs före MRTK-initieringen (t.ex. Awake()). Observera att skriptet (t.ex. anrop 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 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 är möjligt 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 ställa in MixedRealityToolkit.Instance.ActiveProfile egenskapen på en ny profil som ersätter den aktiva profilen.

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

Observera att när du ställer in ActiveProfile under körningen kommer de tjänster som körs att förstöras efter den sista 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 inträffa under den här processen. Även alla skript med högre prioritet än skriptet MixedRealityToolkit kan ange dess 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