Configuratiehandleiding voor MRTK2-profielen

Mixed Reality Toolkit centraliseert zoveel mogelijk van de configuratie die nodig is om de toolkit te beheren (met uitzondering van echte runtime-'dingen').

Deze handleiding is een eenvoudig overzicht van elk van de configuratieprofielschermen die momenteel beschikbaar zijn voor de toolkit.

Het belangrijkste Mixed Reality Toolkit-configuratieprofiel

Het hoofdconfiguratieprofiel, dat is gekoppeld aan de MixedRealityToolkit GameObject in uw scène, biedt het belangrijkste toegangspunt voor de toolkit in uw project.

Notitie

Mixed Reality Toolkit 'vergrendelt' de standaardconfiguratieschermen om ervoor te zorgen dat u altijd een gemeenschappelijk beginpunt voor uw project hebt. Het wordt aangeraden om te beginnen met het definiëren van uw eigen instellingen naarmate uw project zich ontwikkelt. MRTK-configuratie kan niet worden bewerkt tijdens de afspeelmodus.

MRTK-configuratieprofiel

Alle standaardprofielen voor Mixed Reality Toolkit vindt u in het SDK-project in de map Assets/MRTK/SDK/Profiles.

Belangrijk

DefaultHoloLens2ConfigurationProfile is geoptimaliseerd voor HoloLens 2. Zie Profielen voor meer informatie.

Wanneer u het hoofdprofiel Mixed Reality Toolkit-configuratie opent, ziet u het volgende scherm in de inspector:

MRTK-configuratiescène

Als u een MixedRealityToolkitConfigurationProfile-asset selecteert zonder de MixedRealityToolkit in de scène, wordt u gevraagd of u wilt dat MRTK de scène automatisch voor u instelt. Dit is optioneel; Er moet echter een actief MixedRealityToolkit-object in de scène zijn om toegang te krijgen tot alle configuratieschermen.

Dit bevat de huidige actieve runtimeconfiguratie voor het project.

Hier kunt u naar alle configuratieprofielen voor de MRTK navigeren, waaronder:

Deze configuratieprofielen worden hieronder beschreven in de relevante secties:


Ervaringsinstellingen

Deze instelling bevindt zich op de hoofdpagina Mixed Reality Toolkit-configuratie en definieert de standaardbewerking van de Mixed Reality-omgevingsschaal voor uw project.

Ervaringsinstellingen

Camera-instellingen

De camera-instellingen bepalen hoe de camera wordt ingesteld voor uw Mixed Reality project, en definiëren de algemene instellingen voor knipsel, kwaliteit en transparantie.

Cameraprofiel

Systeeminstellingen voor invoer

De Mixed Reality Project biedt een robuust en goed getraind invoersysteem voor het routeren van alle invoergebeurtenissen rond het project, dat standaard is geselecteerd.

Instellingen voor invoersysteem 1

Achter het invoersysteem van MRTK bevinden zich verschillende andere systemen, die helpen bij het aandrijven en beheren van de complexe inter-wevings die nodig zijn om de complexiteit van een multiplatform/mixed reality-framework te abstraheren.

Instellingen voor invoersysteem 2

Elk van de afzonderlijke profielen wordt hieronder beschreven:


Instellingen voor grensvisualisatie

Het grenssysteem vertaalt de waargenomen grens die is gerapporteerd door het onderliggende platformgrens-/bewakerssysteem. De configuratie grens visualiseren biedt u de mogelijkheid om automatisch de opgenomen grens binnen uw scène ten opzichte van de positie van de gebruiker weer te geven. De grens reageert/wordt ook bijgewerkt op basis van waar de gebruiker binnen de scène teleporteert.

Instellingen voor afhankelijkhedenvisualisatie

Selectie van teleportatiesysteem

De Mixed Reality Project biedt een volledig teleportatiesysteem voor het beheren van teleportatiegebeurtenissen in het project, dat standaard is geselecteerd.

Systeeminstellingen voor teleport

Instellingen voor ruimtelijk bewustzijn

Het Mixed Reality Project biedt een herbouwd systeem voor ruimtelijk bewustzijn voor het werken met ruimtelijke scansystemen in het project, dat standaard is geselecteerd.

Instellingen voor ruimtelijk bewustzijn 1

Mixed Reality Configuratie van ruimtelijk bewustzijn van de toolkit kunt u aanpassen hoe het systeem wordt gestart, of het nu automatisch is wanneer de toepassing wordt gestart of later programmatisch, en kunt u de gebieden voor het weergaveveld instellen.

Ook kunt u hiermee de mesh- en surface-instellingen configureren, zodat u verder kunt aanpassen hoe uw project de omgeving om u heen begrijpt.

Dit is alleen van toepassing op apparaten die een gescande omgeving kunnen bieden.

Instellingen voor ruimtelijk bewustzijn 2

Diagnostische instellingen

Een optionele maar zeer nuttige functie van MRTK is de diagnostische functionaliteit van de invoegtoepassing.

Diagnostische instellingen

Het diagnoseprofiel biedt verschillende eenvoudige systemen die kunnen worden bewaakt terwijl het project wordt uitgevoerd, waaronder een handige aan/uit-schakelaar om het weergavepaneel in de scène in of uit te schakelen.

Diagnostische instellingen Systeeminstellingen 2

Systeeminstellingen voor scènes

MRTK biedt deze optionele service om u te helpen bij het laden/lossen van complexe additieve scènes. Als u wilt beslissen of het scènesysteem geschikt is voor uw project, leest u de handleiding voor scènesysteem Aan de slag.

Instellingen voor scènesysteem 1

Aanvullende services-instellingen

Een van de meer geavanceerde gebieden van Mixed Reality Toolkit is de implementatie van het service-locatorpatroon waarmee elke service kan worden geregistreerd met het framework. Hierdoor kan het framework eenvoudig worden uitgebreid met nieuwe functies/systemen, maar kunnen projecten ook profiteren van deze mogelijkheden om hun eigen runtime-onderdelen te registreren.

Elke geregistreerde service krijgt nog steeds het volledige voordeel van alle Unity-gebeurtenissen, zonder de overhead en kosten van het implementeren van een MonoBehaviour- of onhandig singleton-patroon. Dit maakt pure C#-onderdelen zonder scène-overhead mogelijk voor het uitvoeren van zowel voorgrond- als achtergrondprocessen, bijvoorbeeld spawningsystemen, runtime-gamelogica of vrijwel alles anders.

aanvullende systeeminstellingen

Instellingen voor invoeracties

Invoeracties bieden een manier om fysieke interacties en invoer van een runtimeproject te abstraheren. Alle fysieke invoer (van controllers / handen / muis / enzovoort) wordt omgezet in een logische invoeractie voor gebruik in uw runtime-project. Dit zorgt ervoor dat, ongeacht waar de invoer vandaan komt, uw project deze acties gewoon implementeert als 'Dingen om te doen' of 'Interactie met' in uw scènes.

Als u een nieuwe invoeractie wilt maken, klikt u op de knop 'Een nieuwe actie toevoegen' en voert u een beschrijvende tekstnaam in voor wat deze vertegenwoordigt. U hoeft dan alleen een as te selecteren (het type gegevens) dat de actie moet overbrengen, of, in het geval van fysieke controllers, het fysieke invoertype waaraan deze kan worden gekoppeld, bijvoorbeeld:

Asbeperking Gegevenstype Beschrijving Voorbeeld van gebruik
Geen Geen gegevens Wordt gebruikt voor een lege actie of gebeurtenis Gebeurtenistrigger
Raw (gereserveerd) object Gereserveerd voor toekomstig gebruik N.v.t.
Digitaal booleaans Een booleaanse gegevens van het type Aan of Uit Een controllerknop
Eén as float Eén precisiegegevenswaarde Een bereikinvoer, bijvoorbeeld een trigger
Dubbele as Vector2 Een datum van het type dubbele float voor meerdere as Een Dpad of duimstick
Positie van drie dof Vector3 Gegevens van positioneel type met 3 float-as Alleen controller voor 3D-positiestijl
Drie dof-draaiing Quaternion Alleen rotatie-invoer met 4 floatas Een controller met drie gradenstijl, bijvoorbeeld Oculus Go-controller
Zes dof Mixed Reality Pose (Vector3, Quaternion) Invoer van positie- en draaistijl met zowel Vector3- als Quaternion-onderdelen Een bewegingscontroller of aanwijzer

Gebeurtenissen die invoeracties gebruiken, zijn niet beperkt tot fysieke controllers en kunnen nog steeds binnen het project worden gebruikt om runtime-effecten nieuwe acties te genereren.

Notitie

Invoeracties zijn een van de weinige onderdelen die niet kunnen worden bewerkt tijdens runtime. Ze zijn alleen een ontwerptijdconfiguratie. Dit profiel moet niet worden verwisseld terwijl het project wordt uitgevoerd vanwege de afhankelijkheid van het framework (en uw projecten) van de id's die voor elke actie worden gegenereerd.

Configuratieprofiel

Regels voor invoeracties

Regels voor invoeracties bieden een manier om een gebeurtenis die voor één invoeractie is gegenereerd, automatisch te vertalen naar verschillende acties op basis van de gegevenswaarde. Deze worden naadloos beheerd binnen het framework en er worden geen prestatiekosten in rekening gebracht.

Bijvoorbeeld, het converteren van de invoergebeurtenis met één dubbele as van een DPad in naar de 4 overeenkomende acties 'Dpad omhoog' / 'DPad omlaag' / 'Dpad links' / 'Dpad rechts' (zoals weergegeven in de onderstaande afbeelding).

Dit kan ook in uw eigen code worden gedaan. Aangezien dit echter een veelvoorkomend patroon was, biedt het framework een mechanisme om dit "out-of-the-box" te doen

Regels voor invoeracties kunnen worden geconfigureerd voor een van de beschikbare invoeras. Invoeracties van het ene astype kunnen echter worden omgezet in een andere invoeractie van hetzelfde astype. U kunt een actie met twee assen toewijzen aan een andere actie met dubbele as, maar niet aan een digitale of geen actie.

Profiel voor invoeractieregels


Aanwijzerconfiguratie

Pointers worden gebruikt om interactiviteit in de scène te stimuleren vanaf elk invoerapparaat, waardoor zowel een richting als een treffertest wordt gegeven met elk object in een scène (waaraan een collider is gekoppeld of die een UI-onderdeel is). Aanwijzers worden standaard automatisch geconfigureerd voor controllers, headsets (staren/focus) en muis-/aanraakinvoer.

Pointers kunnen ook worden gevisualiseerd in de actieve scène met behulp van een van de vele regelonderdelen van Mixed Reality Toolkit, of een van uw eigen onderdelen als ze de MRTK IMixedRealityPointer-interface implementeren.

Profiel voor invoerpointer
  • Aanwijzend gebied: bepaalt het globale aanwijzende gebied voor alle aanwijzers, inclusief staren.
  • Raycast-laagmaskers aanwijzen: bepaalt tegen welke lagen pointers raycast wordt uitgevoerd.
  • Fouten opsporen in pointing rays voor tekenen: een foutopsporingshulp voor het visualiseren van de stralen die worden gebruikt voor raycasting.
  • Fouten opsporen in Kleuren van aanwijsstralen tekenen: een set kleuren die moet worden gebruikt voor het visualiseren.
  • Gaze cursor prefab: hiermee kunt u eenvoudig een globale blikcursor opgeven voor elke scène.

Er is een extra helperknop om snel naar de Gaze-provider te gaan om indien nodig enkele specifieke waarden voor Gaze te overschrijven.


Bewegingen configureren

Bewegingen zijn een systeemspecifieke implementatie waarmee u invoeracties kunt toewijzen aan de verschillende invoermethoden voor bewegingen die worden geleverd door verschillende SDK's (bijvoorbeeld HoloLens).

Notitie

De huidige implementatie van Gebaren is alleen voor de HoloLens en wordt uitgebreid voor andere systemen naarmate deze in de toekomst aan de toolkit worden toegevoegd (nog geen datums).

Gebaar configureren

Spraakopdrachten

Net als bewegingen bieden sommige runtime-platforms ook intelligente spraak-naar-tekst-functionaliteit met de mogelijkheid om opdrachten te genereren die kunnen worden ontvangen door een Unity-project. Met dit configuratieprofiel kunt u het volgende configureren:

  1. Algemene instellingen: 'Startgedrag' ingesteld op Automatisch starten of Handmatig starten bepaalt of KeywordRecognizer moet worden geïnitialiseerd bij het opstarten van het invoersysteem of dat het project moet beslissen wanneer de KeywordRecognizer moet worden geïnitialiseerd. 'Herkenningsvertrouwensniveau' wordt gebruikt om de KeywordRecognizer-API van Unity te initialiseren
  2. Spraakopdrachten: registreert 'woorden' en vertaalt deze in naar invoeracties die door uw project kunnen worden ontvangen. Ze kunnen indien nodig ook worden gekoppeld aan toetsenbordacties.

Belangrijk

Het systeem ondersteunt momenteel alleen spraak wanneer deze wordt uitgevoerd op Windows 10-platforms, zoals HoloLens en Windows 10 desktop, en wordt uitgebreid voor andere systemen wanneer deze in de toekomst aan MRTK worden toegevoegd (nog geen datums).

Configuratieprofielschermen

Configuratie van controllertoewijzing

Een van de belangrijkste configuratieschermen voor Mixed Reality Toolkit is de mogelijkheid om de verschillende typen controllers te configureren en toe te wijzen die door uw project kunnen worden gebruikt.

In het onderstaande configuratiescherm kunt u alle controllers configureren die momenteel door de toolkit worden herkend.

Controllertoewijzing

MRTK biedt een standaardconfiguratie voor de volgende controllers/systemen:

  • Muis (inclusief 3D ruimtelijke muisondersteuning)
  • Touchscreen
  • Xbox-controllers
  • Windows Mixed Reality controllers
  • HoloLens-bewegingen
  • HTC Vive toverstafcontrollers
  • Oculus Touch-controllers
  • Oculus Afstandsbediening
  • Algemene OpenVR-apparaten (alleen geavanceerde gebruikers)

Als u op de afbeelding klikt voor een van de vooraf gebouwde controllersystemen, kunt u één invoeractie configureren voor alle bijbehorende invoer. Zie bijvoorbeeld het configuratiescherm van de Oculus Touch-controller hieronder:

Scherm controllerconfiguratie

Er is ook een geavanceerd scherm voor het configureren van andere OpenVR- of Unity-invoercontrollers die hierboven niet zijn geïdentificeerd.


Instellingen voor controllervisualisatie

Naast de controllertoewijzing wordt er een afzonderlijk configuratieprofiel geboden om aan te passen hoe uw controllers worden weergegeven in uw scènes.

Dit kan worden geconfigureerd op een 'Global' (alle exemplaren van een controller voor een specifieke hand) of specifiek voor een afzonderlijk controllertype/hand.

MRTK ondersteunt ook systeemeigen SDK-controllermodellen voor Windows Mixed Reality en OpenVR. Deze worden geladen als GameObjects in uw scène en geplaatst met behulp van de controllertracering van het platform.

Als de weergave van de controller in de scène moet worden verschoven ten opzichte van de positie van de fysieke controller, stelt u die offset in tegen de prefab van het controllermodel (bijvoorbeeld het instellen van de transformatiepositie van de controller-prefab met een offsetpositie).

Visualisatieprofiel

Editorhulpprogramma's

De volgende hulpprogramma's werken alleen in de editor en zijn nuttig om de ontwikkelingsproductiviteit te verbeteren.

Configuratiehulpprogramma's mrtk-editor

Service-inspecteurs

Service Inspectors is een functie die alleen in de editor wordt gebruikt om objecten in scènes te genereren die actieve services vertegenwoordigen. Als u deze objecten selecteert, worden inspecteurs weergegeven die documentatiekoppelingen bieden, controle over editorvisualisaties en inzicht in de status van de service.

Service-inspecteurs

U kunt servicecontrole inschakelen door Servicecontrole gebruiken in te schakelen onder Editor-instellingen in het configuratieprofiel.

Dieptebuffer renderer

Het delen van de dieptebuffer met sommige mixed reality-platforms kan de stabilisatie van hologrammen verbeteren. Het Windows Mixed Reality platform kan bijvoorbeeld de weergegeven scène per pixel wijzigen om rekening te houden met subtiele hoofdbewegingen gedurende de tijd die nodig was om een frame weer te geven. Deze technieken vereisen echter dieptebuffers met nauwkeurige gegevens om te weten waar en hoe ver geometrie zich van de gebruiker bevindt.

Om ervoor te zorgen dat een scène alle benodigde gegevens naar de dieptebuffer weergeeft, kunnen ontwikkelaars de functie Dieptebuffer weergeven in- of uitschakelen onder Editorinstellingen in het configuratieprofiel. Hiermee wordt de huidige dieptebuffer als kleur weergegeven in de scèneweergave door een naverwerkingseffect, DepthBufferRenderer, toe te passen op de hoofdcamera.

Render Depth Buffer UtilityDe blauwe cilinder in de scène heeft een materiaal met ZWrite uitgeschakeld, zodat er geen dieptegegevens worden geschreven

Profielen wijzigen tijdens runtime

Het is mogelijk om profielen tijdens runtime bij te werken en er zijn over het algemeen twee verschillende scenario's en tijden waarin dit nuttig is:

  1. Profielswitch vóór MRTK-initialisatie: Bij het opstarten, voordat MRTK wordt geïnitialiseerd en het profiel actief wordt, vervangt u het profiel dat nog niet wordt gebruikt om verschillende functies in of uit te schakelen op basis van de mogelijkheden van het apparaat. Als de ervaring bijvoorbeeld wordt uitgevoerd in VR die geen hardware voor ruimtelijke toewijzing heeft, is het waarschijnlijk niet logisch om het onderdeel voor ruimtelijke toewijzing in te schakelen.
  2. Actieve profielswitch: nadat MRTK is geïnitialiseerd en een profiel actief is geworden, verwisselt u het profiel dat momenteel wordt gebruikt om het gedrag van bepaalde functies te wijzigen. Er kan bijvoorbeeld een specifieke subervaring in de toepassing zijn die verre aanwijzers volledig wil verwijderen.

Profielswitch vóór MRTK-initialisatie

Dit kan worden bereikt door een MonoBehaviour (voorbeeld hieronder) te koppelen die wordt uitgevoerd vóór de MRTK-initialisatie (dat wil zeggen Awake()). Houd er rekening mee dat het script (dat wil zeggen de aanroep van SetProfileBeforeInitialization) eerder moet worden uitgevoerd dan het MixedRealityToolkit script. Dit kan worden bereikt door de instellingen voor de uitvoeringsvolgorde van het script in te stellen.

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);
    }
}

In plaats van profileToUse is het mogelijk om een willekeurige set profielen te hebben die van toepassing zijn op specifieke platforms (bijvoorbeeld één voor HoloLens 1, één voor VR, één voor HoloLens 2, enzovoort). Het is mogelijk om verschillende andere indicatoren (bijvoorbeeld https://docs.unity3d.com/ScriptReference/SystemInfo.html, of of de camera ondoorzichtig/transparant is) te gebruiken om erachter te komen welk profiel moet worden geladen.

Schakeloptie actief profiel

Dit kan worden bereikt door de MixedRealityToolkit.Instance.ActiveProfile eigenschap in te stellen op een nieuw profiel, waardoor het actieve profiel wordt vervangen.

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

Houd er rekening mee dat bij het instellen ActiveProfile tijdens runtime de vernietiging van de momenteel actieve services plaatsvindt na de laatste LateUpdate() van alle services en de instantiëring en initialisatie van de services die zijn gekoppeld aan het nieuwe profiel plaatsvinden vóór de eerste Update() van alle services.

Tijdens dit proces kan een merkbare aarzeling optreden bij de toepassing. Ook elk script met een hogere prioriteit dan het MixedRealityToolkit script kan de update invoeren voordat het nieuwe profiel correct is ingesteld. Zie Instellingen voor scriptuitvoeringsvolgorde voor meer informatie over scriptprioriteit.

In het proces voor het schakelen tussen profielen blijft de bestaande UI-camera ongewijzigd, zodat onderdelen van de Unity-gebruikersinterface waarvoor canvas is vereist, nog steeds werken na de overschakeling.

Zie ook