BoundsControl : MRTK3

Control Bounds

BoundsControl proporciona un rectángulo de selección de tamaño automático, junto con las prestaciones de manipulación para la rotación y la escala.

En MRTK 2.x, BoundsControl se generó principalmente en tiempo de ejecución mediante el uso de scriptableObjects de configuración. En MRTK3, la configuración y personalización de BoundsControl se ha simplificado significativamente. Los objetos visuales y identificadores enlazados son simplemente un objeto prefabricado personalizable que BoundsControl crea instancias en tiempo de ejecución. Los desarrolladores pueden ajustar y personalizar los objetos visuales prefabricados, o incluso crear nuevos objetos visuales enlazados desde cero. Proporcionamos implementaciones de objetos visuales enlazados estándar, siguiendo el nuevo lenguaje de diseño de Mixed Reality.

Los nuevos objetos visuales ofrecen comentarios visuales simplificados que ilustran la intención y manipulación del objeto con un ruido visual mínimamente intrusivo.

Configurar

Basta con agregar BoundsControl a un objeto existente y rellenar la BoundsVisualsPrefab referencia con los objetos visuales enlazados que desea usar. Proporcionamos algunos objetos visuales predefinidos diferentes para su uso.

Importante

Se recomienda encarecidamente que los desarrolladores agreguen MinMaxScaleConstraint para evitar que el usuario escale el objeto a un tamaño inutilizablemente pequeño o grande.

Para usar la intención y los efectos de foco de los objetos visuales enlazados, debe tener un StatefulInteractable en el objeto . Si no se detecta automáticamente el objeto interactable, puede especificar la conexión en el inspector BoundsControl.

Nota

Se recomienda que los desarrolladores usen ObjectManipulator junto con BoundsControl para ofrecer a los usuarios la manipulación directa además de la manipulación basada en la prestación. ObjectManipulator puede servir como para StatefulInteractable los estados de puntero/enfoque a los que responden los objetos visuales enlazados.

Objetos visuales enlazados prefabricados

Ofrecemos varios objetos visuales de límites predefinidos para su uso con BoundsControl. Se recomienda a los desarrolladores que realicen variantes prefabricadas de estos objetos visuales y personalícelas para adaptarlas a sus necesidades. Las animaciones de controlador y los estados están alimentados por StateVisualizer, lo que permite a los desarrolladores personalizar aún más la apariencia de las prestaciones.

Controlar el estilo de oclusión

Estos objetos visuales enlazados ofrecen un diseño visual simplificado con menos distracciones para el usuario. Solo estarán visibles los identificadores pertinentes a lo largo de los bordes de los límites. Los objetos visuales enlazados contraen, expandan y cambian el color o grosor en función del progreso de la selección y la intención del usuario. Se recomienda encarecidamente usar este estilo visual de límites.

Identificadores ocluidos

Solo intención

En algunos contextos, es posible que los identificadores no sean deseables, y es posible que los desarrolladores quieran usar solo los objetos visuales enlazados como un indicador encantador de la intención del usuario. Aunque este objeto prefabricado realiza el trabajo, se puede lograr el mismo efecto con cualquiera de los demás objetos visuales enlazados seleccionando HandleType.None. Hemos encontrado que los objetos visuales de límites acuestables son un elemento de comentarios visuales satisfactorio y encantador para muchos contextos diferentes, no solo para la manipulación basada en identificadores.

Sin identificadores

Estilo heredado

Estos objetos visuales enlazados muestran todos los identificadores y bordes del cuadro. Esto coincide más estrechamente con el lenguaje de diseño heredado y el comportamiento anterior visto en MRTK 2.x; sin embargo, este diseño puede ser más distraído para los usuarios debido a ruido visual innecesario. Además, la presencia de los controladores que están delante del objeto (y detrás) puede causar problemas con la manipulación indirecta de la mirada-pellizco. No se recomienda usar este estilo para las nuevas aplicaciones, especialmente aquellas que aprovechan el destino de la mirada.

Identificadores tradicionales

Diseño de la interacción

En la iteración actual, ofrecemos una interacción sencilla de activación/desactivación. Al hacer clic en los límites en contexto (es decir, seleccionar el objeto, no moverlo y liberarlo), los identificadores se pueden activar y desactivar. La tolerancia a la distancia para esta comprobación se puede ajustar con DragToggleThreshold, y este comportamiento de activación se puede habilitar o deshabilitar con la ToggleHandlesOnClick propiedad .

Alternancia de control de límites

Los identificadores se pueden activar o desactivar manualmente desde el código en cualquier momento estableciendo HandlesActive.

Cálculo automático de límites

BoundsControl intentará calcular automáticamente los límites del objeto asociado. Si se desea una forma de límites específica, active la OverrideBounds opción y especifique el objeto de límites directamente. El sistema de cálculo de límites solo calculará los límites del objeto de invalidación especificado.

Influye BoundsCalculationMethod en la forma en que el algoritmo calcula los límites. Si la forma visual del objeto cerrado no coincide necesariamente con el colisionador, o lo contrario es true, los desarrolladores pueden ajustar el método de cálculo para preferir usar límites de representador o colisionador, o una combinación de ambos.

Independientemente del método de cálculo, la Padding opción rellenará los límites uniformemente en unidades del mundo. Cuando los límites se aplanan, el eje aplanado no se rellena.

Acoplamiento

BoundsControl acoplado

BoundsControl también se puede usar para manipular el contenido 2D. Si FlattenMode se establece Autoen , BoundsControl se aplanará en un límite rectangular 2D si el objeto es suficientemente plano a lo largo de cualquier eje. Si el objeto no es lo suficientemente plano, pero todavía le gustaría que los límites rectangulares FlattenMode.Always se aplanaran siempre el BoundsControl a lo largo del eje más delgado. Por el contrario, FlattenMode.Never impedirá que BoundsControl se aplane, incluso cuando el objeto es muy fino.

Opciones de manipulación

El comportamiento de manipulación de BoundsControl se puede ajustar de varias maneras. La RotateAnchor opción controla el punto de pivote alrededor del que se gira BoundsControl cuando se usan las prestaciones de rotación. Algunos puntos dinámicos de algunos objetos están lejos de su centro visual, lo que puede causar molestias e imprecisiones al manipular con los identificadores de rotación. Especificar BoundsCenter para RotateAnchor hará que BoundsControl gire siempre alrededor del centro geométrico de los límites calculados en lugar del origen real del objeto.

El comportamiento de escalado se puede establecer Uniform en o Non Uniform. En el modo Uniforme, todos los ejes del objeto se escalan juntos, manteniendo la relación de aspecto y la apariencia. El escalado no uniforme permite escalar cada eje del objeto de forma independiente.