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.
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:
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:
- Het belangrijkste Mixed Reality Toolkit-configuratieprofiel
- Ervaringsinstellingen
- Camera-instellingen
- Systeeminstellingen voor invoer
- Instellingen voor grensvisualisatie
- Selectie van teleportatiesysteem
- Instellingen voor ruimtelijk bewustzijn
- Diagnostische instellingen
- Systeeminstellingen voor scènes
- Aanvullende services-instellingen
- Instellingen voor invoeracties
- Regels voor invoeracties
- Aanwijzerconfiguratie
- Configuratie van bewegingen
- Spraakopdrachten
- Configuratie van controllertoewijzing
- Visualisatie-instellingen controller
- Editorhulpprogramma's
- Profielen wijzigen tijdens runtime
- Zie ook
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.
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.
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.
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.
Elk van de afzonderlijke profielen wordt hieronder beschreven:
- Focusinstellingen
- Instellingen voor invoeracties
- Regels voor invoeracties
- Aanwijzerconfiguratie
- Configuratie van bewegingen
- Spraakopdrachten
- Configuratie van controllertoewijzing
- Visualisatie-instellingen controller
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.
Selectie van teleportatiesysteem
De Mixed Reality Project biedt een volledig teleportatiesysteem voor het beheren van teleportatiegebeurtenissen in het project, dat standaard is geselecteerd.
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.
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.
Diagnostische instellingen
Een optionele maar zeer nuttige functie van MRTK is de diagnostische functionaliteit van de invoegtoepassing.
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.
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.
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.
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.
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.
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.
- 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).
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:
- 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
- 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).
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.
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:
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).
Editorhulpprogramma's
De volgende hulpprogramma's werken alleen in de editor en zijn nuttig om de ontwikkelingsproductiviteit te verbeteren.
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.
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.
De 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:
- 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.
- 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.