Guía de configuración de perfiles de MRTK2
Mixed Reality Toolkit centraliza la mayor parte de la configuración necesaria para administrar el kit de herramientas lo más posible (excepto para el verdadero tiempo de ejecución "cosas").
Esta guía es un tutorial sencillo para cada una de las pantallas de perfil de configuración disponibles actualmente para el kit de herramientas.
El perfil de configuración principal de Mixed Reality Toolkit
El perfil de configuración principal, que se adjunta al gameObject MixedRealityToolkit en la escena, proporciona el punto de entrada principal para el kit de herramientas en el proyecto.
Nota:
Mixed Reality Toolkit "bloquea" las pantallas de configuración predeterminadas para asegurarse de que siempre tiene un punto de partida común para el proyecto y se recomienda empezar a definir su propia configuración a medida que evoluciona el proyecto. La configuración de MRTK no se puede editar durante el modo de reproducción.
Todos los perfiles "predeterminados" de Mixed Reality Toolkit se pueden encontrar en el proyecto del SDK en la carpeta Assets/MRTK/SDK/Profiles.
Importante
DefaultHoloLens2ConfigurationProfile está optimizado para HoloLens 2. Consulte Perfiles para obtener los detalles.
Al abrir el perfil de configuración del kit de herramientas de Mixed Reality principal, verá la siguiente pantalla en el inspector:
Si selecciona un recurso MixedRealityToolkitConfigurationProfile sin MixedRealityToolkit en la escena, le preguntará si desea que MRTK configure automáticamente la escena. Esto es opcional; Sin embargo, debe haber un objeto MixedRealityToolkit activo en la escena para acceder a todas las pantallas de configuración.
Esto alberga la configuración actual del entorno de ejecución activo para el proyecto.
Desde aquí puede ir a todos los perfiles de configuración de MRTK, entre los que se incluyen:
- El perfil de configuración principal de Mixed Reality Toolkit
- Configuración de la experiencia
- Configuración de la cámara
- Configuración del sistema de entrada
- Configuración de visualización de límites
- Selección del sistema de teletransportación
- Configuración de reconocimiento espacial
- Configuración de diagnóstico
- Configuración del sistema de escena
- Configuración de servicios adicionales
- Configuración de acciones de entrada
- Reglas de acciones de entrada
- Configuración del puntero
- Configuración de gestos
- Comandos de voz
- Configuración de asignación de controladores
- Configuración de visualización del controlador
- Utilidades del editor
- Cambio de perfiles en tiempo de ejecución
- Consulte también
Estos perfiles de configuración se detallan a continuación en sus secciones pertinentes:
Configuración de la experiencia
Ubicado en la página de configuración del kit de herramientas de Mixed Reality principal, esta configuración define la operación predeterminada de la escala de entorno de Mixed Reality para el proyecto.
Configuración de la cámara
La configuración de la cámara define cómo se configurará la cámara para el proyecto de Mixed Reality, definiendo el recorte genérico, la calidad y la configuración de transparencia.
Configuración del sistema de entrada
El Mixed Reality Project proporciona un sistema de entrada sólido y bien entrenado para enrutar todos los eventos de entrada alrededor del proyecto que está seleccionado de forma predeterminada.
Detrás del sistema de entrada proporcionado por MRTK hay otros sistemas, que ayudan a impulsar y administrar los complejos inter-tejido necesarios para abstraer las complejidades de un marco de realidad mixta o multiplataforma.
Cada uno de los perfiles individuales se detalla a continuación:
- Configuración de foco
- Configuración de acciones de entrada
- Reglas de acciones de entrada
- Configuración del puntero
- Configuración de gestos
- Comandos de voz
- Configuración de asignación de controladores
- Configuración de visualización del controlador
Configuración de visualización de límites
El sistema de límites traduce el límite percibido notificado por el sistema de protección o límites de plataformas subyacentes. La configuración del visualizador de límites permite mostrar automáticamente el límite grabado dentro de la escena en relación con la posición del usuario. El límite también reaccionará o actualizará en función de dónde teletransporte el usuario dentro de la escena.
Selección del sistema de teletransportación
El Mixed Reality Project proporciona un sistema de teletransportación completo para administrar eventos de teletransportación en el proyecto que está seleccionado de forma predeterminada.
Configuración de reconocimiento espacial
El Mixed Reality Project proporciona un sistema de reconocimiento espacial recompilado para trabajar con sistemas de examen espacial en el proyecto que está seleccionado de forma predeterminada.
Mixed Reality configuración de reconocimiento espacial del Kit de herramientas le permite adaptar cómo se inicia el sistema, ya sea automáticamente cuando se inicia o posteriormente la aplicación, así como establecer las extensiones para el campo de vista.
También le permite configurar las opciones de malla y superficie, personalizando aún más cómo el proyecto entiende el entorno que le rodea.
Esto solo es aplicable a los dispositivos que pueden proporcionar un entorno examinado.
Configuración de diagnóstico
Una característica opcional pero muy útil de MRTK es la funcionalidad de diagnóstico del complemento.
El perfil de diagnóstico proporciona varios sistemas sencillos para supervisar mientras se ejecuta el proyecto, incluido un práctico conmutador On/Off para habilitar o deshabilitar el panel de visualización en la escena.
Configuración del sistema de escena
MRTK proporciona este servicio opcional para ayudarle a administrar la carga y descarga complejas de escenas de aditivos. Para decidir si el sistema de escenas sería una buena opción para el proyecto, lea la Guía del sistema de escenas Introducción.
Configuración de servicios adicionales
Una de las áreas más avanzadas de Mixed Reality Toolkit es su implementación del patrón de localizador de servicios que permite el registro de cualquier "servicio" con el marco. Esto permite que el marco se extienda fácilmente con nuevas características o sistemas, pero también permite que los proyectos aprovechen estas funcionalidades para registrar sus propios componentes en tiempo de ejecución.
Cualquier servicio registrado todavía obtiene la ventaja completa de todos los eventos de Unity, sin la sobrecarga y el costo de implementar un modelo MonoBehaviour o singleton desordenado. Esto permite que los componentes puros de C# sin sobrecarga de escena ejecuten procesos en primer plano y en segundo plano, por ejemplo, sistemas de generación, lógica del juego en tiempo de ejecución o prácticamente cualquier otra cosa.
Configuración de acciones de entrada
Las acciones de entrada proporcionan una manera de abstraer las interacciones físicas y la entrada de un proyecto en tiempo de ejecución. Toda la entrada física (desde controladores, manos, mouse, etc.) se traduce en una acción de entrada lógica para su uso en el proyecto en tiempo de ejecución. Esto garantiza que, independientemente de dónde proceda la entrada, el proyecto simplemente implementa estas acciones como "Cosas con las que hacer" o "Interactuar con" en las escenas.
Para crear una nueva acción de entrada, simplemente haga clic en el botón "Agregar una nueva acción" y escriba un nombre de texto descriptivo para lo que representa. A continuación, solo necesita seleccionar un eje (el tipo de datos) a la que se va a transmitir la acción, o en el caso de controladores físicos, el tipo de entrada físico al que se puede adjuntar, por ejemplo:
Restricción axis | Tipo de datos | Descripción | Ejemplo de uso |
---|---|---|---|
None | Sin datos | Se usa para una acción o evento vacíos | Desencadenador de eventos |
Sin procesar (reservado) | object | Reservado para uso futuro | N/D |
Digital | bool | Datos de tipo booleano activado o desactivado | Un botón de controlador |
Eje único | FLOAT | Un valor de datos de precisión único | Una entrada con intervalos, por ejemplo, un desencadenador |
Eje dual | Vector2 | Una fecha de tipo float dual para varios ejes | Un controlador Dpad o un stick analógico |
Posición de tres dof | Vector3 | Datos de tipo posicional de con 3 ejes flotantes | Controlador de estilo de posición 3D |
Rotación de tres dof | Quaternion | Solo entrada rotacional con 4 ejes flotantes | Un controlador de estilo de tres grados, por ejemplo, controlador de La go de Storage |
Seis Dof | Mixed Reality Posición (Vector3, Cuaternión) | Entrada de estilo de posición y rotación con componentes Vector3 y Quaternion | Un controlador de movimiento o puntero |
Los eventos que usan acciones de entrada no se limitan a los controladores físicos y todavía se pueden usar dentro del proyecto para que los efectos en tiempo de ejecución generen nuevas acciones.
Nota:
Las acciones de entrada son uno de los pocos componentes que no se pueden editar en tiempo de ejecución, solo son una configuración en tiempo de diseño. Este perfil no se debe intercambiar mientras se ejecuta el proyecto debido a la dependencia del marco (y los proyectos) en el identificador generado para cada acción.
Reglas de acciones de entrada
Las reglas de acción de entrada proporcionan una manera de traducir automáticamente un evento generado para una acción de entrada en diferentes acciones en función de su valor de datos. Estos se administran sin problemas en el marco y no incurren en costos de rendimiento.
Por ejemplo, convertir el evento de entrada de eje dual único de un DPad en en el 4 correspondiente "Dpad Up" / "DPad Down" / "Dpad Left" / "Dpad Right" (como se muestra en la imagen siguiente).
Esto también se puede hacer en su propio código. Sin embargo, al ver que se trata de un patrón muy común, el marco proporciona un mecanismo para hacerlo "de fábrica".
Las reglas de acción de entrada se pueden configurar para cualquiera de los ejes de entrada disponibles. Sin embargo, las acciones de entrada de un tipo de eje se pueden traducir a otra acción de entrada del mismo tipo de eje. Puede asignar una acción de eje dual a otra acción de eje dual, pero no a una acción digital o ninguna.
Configuración del puntero
Los punteros se usan para impulsar la interactividad en la escena desde cualquier dispositivo de entrada, lo que proporciona una dirección y una prueba de posicionamiento con cualquier objeto de una escena (que tiene un colisionador conectado o es un componente de interfaz de usuario). Los punteros se configuran automáticamente de forma predeterminada para controladores, auriculares (mirada/foco) y entrada táctil o mouse.
Los punteros también se pueden visualizar dentro de la escena activa mediante uno de los muchos componentes de línea proporcionados por Mixed Reality Toolkit, o cualquiera de sus propios si implementan la interfaz IMixedRealityPointer de MRTK.
- Extensión señalador: determina la extensión de apuntamiento global para todos los punteros, incluida la mirada.
- Señalador máscaras de capa de Raycast: determina qué punteros de capas se harán raycast contra.
- Depurar dibujar rayos apuntando: un asistente de depuración para visualizar los rayos usados para la difusión de rayos.
- Depurar dibujar colores de rayos apuntando: un conjunto de colores que se van a usar para visualizar.
- Objeto prefabricado del cursor de mirada: facilita la especificación de un cursor de mirada global para cualquier escena.
Hay un botón auxiliar adicional para saltar rápidamente al proveedor de miradas para invalidar algunos valores específicos de Gaze si es necesario.
Configuración de gestos
Los gestos son una implementación específica del sistema que permite asignar acciones de entrada a los distintos métodos de entrada "Gestos" proporcionados por varios SDK (por ejemplo, HoloLens).
Nota:
La implementación de gestos actual es solo para HoloLens y se mejorará para otros sistemas a medida que se agreguen al kit de herramientas en el futuro (aún no hay fechas).
Comandos de voz
Al igual que los gestos, algunas plataformas en tiempo de ejecución también proporcionan funcionalidad inteligente "Conversión de voz en texto" con la capacidad de generar comandos que un proyecto de Unity puede recibir. Este perfil de configuración permite configurar lo siguiente:
- Configuración general: "Comportamiento de inicio" establecido en Inicio automático o Inicio manual determina si se debe inicializar KeywordRecognizer al iniciar el sistema de entrada o dejar que el proyecto decida cuándo inicializar KeywordRecognizer. "Nivel de confianza de reconocimiento" se usa para inicializar la API KeywordRecognizer de Unity.
- Comandos de voz: registra "palabras" y los traduce en acciones de entrada que el proyecto puede recibir. También se pueden adjuntar a acciones de teclado si es necesario.
Importante
Actualmente, el sistema solo admite voz cuando se ejecuta en plataformas windows 10, por ejemplo, holoLens y escritorio de Windows 10 y se mejorará para otros sistemas, ya que se agregan a MRTK en el futuro (aún no hay fechas).
Configuración de asignación de controladores
Una de las pantallas de configuración principales para Mixed Reality Toolkit es la capacidad de configurar y asignar los distintos tipos de controladores que puede usar el proyecto.
La pantalla de configuración siguiente permite configurar cualquiera de los controladores actualmente reconocidos por el kit de herramientas.
MRTK proporciona una configuración predeterminada para los siguientes controladores o sistemas:
- Mouse (incluida la compatibilidad con el mouse espacial 3D)
- Pantalla táctil
- Mandos de Xbox
- controladores de Windows Mixed Reality
- Gestos de HoloLens
- Controladores de wanda HTC Vive
- Controladores Táctiles de Los Cascos
- Controlador remoto de Power Directory
- Dispositivos OpenVR genéricos (solo usuarios avanzados)
Al hacer clic en la imagen de cualquiera de los sistemas de controlador pregenerados, puede configurar una única acción de entrada para todas sus entradas correspondientes, por ejemplo, vea la pantalla de configuración del controlador Touch De Windows a continuación:
También hay una pantalla avanzada para configurar otros controladores de entrada openVR o Unity que no se identifican anteriormente.
Configuración de visualización del controlador
Además de la asignación del controlador, se proporciona un perfil de configuración independiente para personalizar cómo se presentan los controladores en las escenas.
Esto se puede configurar en un "Global" (todas las instancias de un controlador para una mano específica) o específicas de un tipo o mano de controlador individual.
MRTK también admite modelos de controlador de SDK nativos para Windows Mixed Reality y OpenVR. Se cargan como GameObjects en la escena y se colocan mediante el seguimiento del controlador de la plataforma.
Si la representación del controlador en la escena debe desplazarse desde la posición del controlador físico, simplemente establezca ese desplazamiento en el objeto prefabricado del modelo de controlador (por ejemplo, establecer la posición de transformación del objeto prefabricado del controlador con una posición de desplazamiento).
Utilidades del editor
Las siguientes utilidades solo funcionan en el editor y son útiles para mejorar la productividad del desarrollo.
Inspectores de servicio
Los inspectores de servicio son una característica de solo editor que genera objetos en escena que representan servicios activos. Al seleccionar estos objetos se muestran los inspectores que ofrecen vínculos de documentación, el control sobre las visualizaciones del editor y la información sobre el estado del servicio.
Para habilitar los inspectores de servicio, active Usar inspectores de servicio en Configuración del editor en el perfil de configuración.
Representador de búfer de profundidad
Compartir el búfer de profundidad con algunas plataformas de realidad mixta puede mejorar la estabilización del holograma. Por ejemplo, la plataforma Windows Mixed Reality puede modificar la escena representada por píxel para tener en cuenta los movimientos sutiles de la cabeza durante el tiempo que tardó en representar un fotograma. Sin embargo, estas técnicas requieren búferes de profundidad con datos precisos para saber dónde y hasta dónde se encuentra la geometría del usuario.
Para asegurarse de que una escena representa todos los datos necesarios en el búfer de profundidad, los desarrolladores pueden alternar la característica Búfer de profundidad de representación en Configuración del editor en el perfil de configuración. Esto tomará el búfer de profundidad actual y lo representará como color para la vista de escena aplicando un efecto posterior al procesamiento, DepthBufferRenderer
, a la cámara principal.
El cilindro azul de la escena tiene un material con ZWrite desactivado, por lo que no se escriben datos de profundidad.
Cambio de perfiles en tiempo de ejecución
Es posible actualizar perfiles en tiempo de ejecución y, por lo general, hay dos escenarios y horas diferentes en los que esto resulta útil:
- Modificador de perfil de inicialización de MRTK anterior: al iniciarse, antes de que SE inicialice MRTK y el perfil se active, reemplazando el perfil que aún no está en uso para habilitar o deshabilitar características diferentes en función de las funcionalidades del dispositivo. Por ejemplo, si la experiencia se ejecuta en VR que no tiene hardware de asignación espacial, probablemente no tenga sentido tener habilitado el componente de asignación espacial.
- Cambio de perfil activo: después del inicio, después de inicializar MRTK y un perfil se ha vuelto activo, intercambiando el perfil actualmente en uso para cambiar la forma en que se comportan determinadas características. Por ejemplo, puede haber una subconsulta específica en la aplicación que quiera que los punteros de mano lejanos se quiten por completo.
Modificador de perfil de inicialización anterior a MRTK
Esto se puede lograr mediante la asociación de un MonoBehaviour (ejemplo a continuación), que se ejecuta antes de la inicialización de MRTK (es decir, Awake()). Tenga en cuenta que el script (es decir, llamar a SetProfileBeforeInitialization
) debe ejecutarse antes que el MixedRealityToolkit
script, que se puede lograr estableciendo la configuración del orden de ejecución del script.
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);
}
}
En lugar de "profileToUse", es posible tener un conjunto arbitrario de perfiles que se aplican a plataformas específicas (por ejemplo, una para HoloLens 1, otra para VR, otra para HoloLens 2, etc.). Es posible usar otros indicadores (por ejemplo, https://docs.unity3d.com/ScriptReference/SystemInfo.html, o si la cámara es opaca o transparente) para averiguar qué perfil se va a cargar.
Modificador de perfil activo
Esto se puede lograr estableciendo la MixedRealityToolkit.Instance.ActiveProfile
propiedad en un nuevo perfil reemplazando el perfil activo.
MixedRealityToolkit.Instance.ActiveProfile = profileToUse;
Tenga en cuenta que, al establecer ActiveProfile
durante el tiempo de ejecución, la destrucción de los servicios actualmente en ejecución se producirá después de la última actualización tardía() de todos los servicios, y la creación de instancias y la inicialización de los servicios asociados al nuevo perfil se producirán antes de la primera actualización() de todos los servicios.
Es posible que se produzca una duda en la aplicación durante este proceso. Además, cualquier script con mayor prioridad que el MixedRealityToolkit
script puede especificar su actualización antes de que el nuevo perfil esté configurado correctamente. Consulte Configuración del orden de ejecución de scripts para obtener más información sobre la prioridad del script.
En el proceso de cambio de perfil, la cámara de interfaz de usuario existente permanecerá sin cambios, lo que garantiza que los componentes de la interfaz de usuario de Unity que requieran lienzo sigan funcionando después del modificador.