Konfigurationsguide för MRTK-profil

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

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 Mixed Reality Toolkit

Huvudkonfigurationsprofilen, som är kopplad till MixedRealityToolkit GameObject i din scen, utgör den huvudsakliga startpunkten för Toolkit i projektet.

Anteckning

Den Mixed Reality Toolkit "låser" standardkonfigurationsskärmarna för att se till att du alltid har en gemensam startpunkt för ditt projekt och det rekommenderas att du börjar definiera dina egna inställningar allt eftersom projektet utvecklas. MRTK-konfigurationen kan inte redigeras i uppspelningsläget.

MRTK-konfigurationsprofil

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 Mixed Reality Toolkit visas följande skärm i kontrollanten:

MRTK configuration scene

Om du väljer en MixedRealityToolkitConfigurationProfile-tillgång utan MixedRealityToolkit i scenen frågar den dig om du vill att MRTK ska konfigurera scenen automatiskt å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 navigera till alla konfigurationsprofiler för MRTK, inklusive:

Dessa konfigurationsprofiler beskrivs nedan i relevanta avsnitt:


Upplevelseinställningar

På huvudsidan för Mixed Reality Toolkit definierar den här inställningen standardåtgärden för Mixed Reality för ditt projekt.

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 urklipp, kvalitet och transparens.

Camera Profile

Systeminställningar för indata

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

Input System settings 1

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

Input System settings 2

Var och en av de enskilda profilerna beskrivs nedan:


Visualiseringsinställningar för gränser

Gränssystemet översätter den uppfattade gränsen som rapporteras av den underliggande plattformens gräns-/skyddssystem. Med boundary visualizer-konfigurationen kan du automatiskt visa den registrerade 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 teleporterar i scenen.

Boundry Visualization Settings

Val av system för teleportering

I Mixed Reality Project finns ett komplett teleporteringssystem för att hantera teleporteringshändelser i projektet, vilket är valt som standard.

Teleport System settings

Inställningar för rumslig medvetenhet

I Mixed Reality Project ett ombyggt system för spatial medvetenhet för att arbeta med system för rumslig genomsökning i projektet som är valt som standard.

Spatial Awareness settings 1

Med Mixed Reality Toolkit spatial awareness Configuration kan du skräddarsy hur systemet startar, oavsett om det är automatiskt när programmet startar eller senare programmatiskt samt ange omfattningen för visningsfä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 genomsökt miljö.

Spatial Awareness settings 2

Diagnostikinställningar

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

Diagnostics settings

Diagnostikprofilen innehå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.

Diagnostics settings System settings 2

Inställningar för scensystem

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

Scene System settings 1

Ytterligare tjänstinställningar

Ett av de mer avancerade områdena i Mixed Reality Toolkit är implementeringen av tjänstlokaliserarmönstret som gör det möjligt att registrera "tjänster" med ramverket. Detta gör att ramverket kan utökas med både 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 och kostnader för att implementera ett MonoBehaviour- eller clunky-singleton-mönster. Detta möjliggör rena C#-komponenter utan scenkostnader för körning av både förgrunds- och bakgrundsprocesser, t.ex. att skapa system, köra spellogik 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 frå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. 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 styrenheter, 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 Reserverat för framtida användning Ej tillämpligt
Digital boolesk Booleska data av typen på eller av En kontrollantknapp
Enskild axel flyt Ett enda precisionsdatavärde En intervallindata, t.ex. en utlösare
Dubbel axel Vektor2 Datum för dubbel flyttalstyp för flera axlar En Dpad eller tumsticka
Tre Dof-position Vektor3 Positionell typdata från med 3 flyttalsaxel Endast kontrollant för 3D-position
Tre Dof-rotation Quaternion Rotationsinmatning endast med 4 flyttalsaxel En kontrollant med tre grader, t.ex. Oculus Go-kontrollant
Sex dof Mixed Reality Pose (Vector3, Quaternion) Indata för position och rotation med både Vector3- och Quaternion-komponenter En rörelsekontroll eller pekare

Händelser som använder indataåtgärder är inte begränsade till fysiska styrenheter 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å komponenterna som inte kan redigeras vid körning, de är endast en designtidskonfiguration. Den här profilen bör inte växlas ut medan projektet körs på grund av ramverksberoendet (och dina projekt) 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 har genererats 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 dubbel axel från en DPad i till de fyra 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 det här var ett mycket vanligt mönster tillhandahåller ramverket en mekanism för att göra detta "från fall till fall"

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 dubbel axelåtgärd till en annan dubbel axelåtgärd, men inte till en digital eller ingen åtgärd.

Profil för regler för indataåtgärd


Pekarkonfiguration

Pekare används för att driva interaktivitet i scenen från valfri indataenhet, vilket ger både riktning och träfftest med alla objekt i en scen (som har en krockare kopplad eller är en GRÄNSSNITTskomponent). Pekare konfigureras som standard automatiskt för styrenheter, headset (blick/fokus) och mus-/pekinmatning.

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

Input Pointer Profile
  • Pekarens omfattning: Avgör den globala pekvidd för alla pekare, inklusive blick.
  • Peka på Raycast Layer Masks: Avgör vilka lager pekare som raycast kommer att raycast mot.
  • Felsökning av ritande fot: En felsökningshjälp för visualisering av de röslar som används för raycasting.
  • Felsöka rita pekarensor 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 vilken scen som helst.

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


Gesterkonfiguration

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

Anteckning

Den aktuella implementeringen av gester är endast till för HoloLens och förbättras för andra system när de läggs till i Toolkit i framtiden (inga datum ännu).

Gesture configuration

Talkommandon

Precis som gester tillhandahåller 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än Inställningar – "Startbeteende" inställt på Automatisk start eller Manuell start avgör om KeywordRecognizer ska initieras vid start av indatasystemet eller låta projektet bestämma när KeywordRecognizer ska initieras. "Recognition Confidence Level" (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 vid körning på Windows 10-plattformar, t.ex. HoloLens och Windows 10 Desktop och kommer att förbättras för andra system när de läggs till i MRTK i framtiden (inga datum ännu).

Configuration Profile screens

Konfiguration av kontrollantmappning

En av de viktigaste konfigurationsskärmarna för Mixed Reality Toolkit är möjligheten att konfigurera och mappa de olika typerna av styrenheter som kan användas av ditt projekt.

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

Controller Mapping

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

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

Genom att klicka på Bild för något av de förbyggda styrenhetssystemen kan du konfigurera en enda indataåtgärd för alla dess motsvarande indata. Se till exempel konfigurationsskärmen för Oculus Touch-kontrollanten 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 styrenheter visas i bakgrunden.

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

MRTK stöder också inbyggda SDK-styrenhetsmodeller för Windows Mixed Reality och OpenVR. Dessa läses in som GameObjects i din scen och placeras med plattformens kontrollantspårning.

Om kontrollantrepresentationen i scenen måste förskjutas från den fysiska styrenhetens position anger du helt enkelt den förskjutningen mot styrenhetsmodellens prefab-modell (t.ex. att ställa in transformeringspositionen för kontrollantens prefab med en offsetposition).

Visualization profile

Verktyg för redigerare

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

Konfigurationsverktyg för MRTK-redigeraren

Tjänstkontroll

Service Inspectors är en funktion för enbart redigerare som genererar objekt i scenen som representerar aktiva tjänster. Om du väljer dessa objekt visas kontroller som erbjuder dokumentationslänkar, kontroll över redigeringsvisualiseringar och insyn i tjänstens tillstånd.

Service Inspectors

Du kan aktivera tjänstkontroller genom att markera Använd tjänstkontroll under Redigerare Inställningar i konfigurationsprofilen.

Djupbuffert renderare

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

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

Render Depth Buffer Utility Den 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 tidpunkter då detta är användbart:

  1. Profilväxel före MRTK-initiering: Innan MRTK initieras och profilen aktiveras 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, när MRTK har initierats och en profil har blivit aktiv, växlar du profilen som används för att ändra beteendet för vissa funktioner. Det kan till exempel finnas en specifik underupplevelse i programmet som vill att långt hand pekare 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 ) måste köras tidigare än skriptet, vilket kan uppnås genom att ange inställningarna för SetProfileBeforeInitialization MixedRealityToolkit 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" kan du 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. , eller om kameran är täckande/transparent) för att ta reda på vilken profil som https://docs.unity3d.com/ScriptReference/SystemInfo.html ska läsas in.

Aktiv profilväxel

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

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

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

En märkbar programtolkning kan uppstå under den här processen. Alla skript med högre prioritet än skriptet MixedRealityToolkit kan också ange uppdateringen innan den nya profilen konfigureras korrekt. Se Inställningar för skriptkörningsordning för mer information om skriptprioritet.

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

Se även