Compartir a través de


Manipulador de objetos: MRTK3

Manipulador de objetos

ObjectManipulator permite la manipulación intuitiva de objetos en el espacio 3D con cualquier dispositivo o modalidad de entrada. Realiza una tarea similar a XRGrabInteractable de XRI, aunque ofrece características adicionales e interacciones específicas de realidad mixta. Aunque XRGrabInteractable es totalmente compatible con nuestros interactivos (y viceversa), se recomienda usar nuestra implementación para obtener la mejor experiencia.

Nota

ObjectManipulator está diseñado específicamente para manipular objetos 3D de forma directa e intuitiva. Si busca interacciones comunes de interfaz de usuario, como controles deslizantes o botones, consulte mejor nuestros artículos sobre controles deslizantes y botones. Evite usar ObjectManipulator para escribir microinteracciones.

Architecture

En MRTK v2, la mayoría de la lógica compleja y las matemáticas de los diferentes tipos de entrada se controlaban mediante el propio script ObjectManipulator. Había que mantener una ruta de código independiente para cada tipo de interacción, lo que daba lugar a una menor flexibilidad al incorporar nuevos tipos de interacciones. En MRTK3, el interactivo es responsable de los aspectos concretos de cómo se traduce un tipo determinado de entrada en una manipulación. ObjectManipulator simplemente escucha estos interactivos y aplica la transformación pertinente al objeto. Como resultado, ObjectManipulator en MRTK3 es considerablemente más sencillo y tiene un ámbito más pequeño. Vea la arquitectura del interactivo para obtener descripciones de cómo se comunican los interactivos por medio de sus transformaciones de asociación.

Manipulaciones con n manos

ObjectManipulator admite cualquier número de interactivos participantes, lo que permite un comportamiento de interacción generalizable en manipulaciones con una, dos e incluso n manos. Por lo general, el centroide geométrico de attachTransforms de todos los interactivos participantes se usa en las interacciones con muchas manos. Como XRI con el que se puede interactuar, es compatible con cualquier tipo de interactivo que envíe una transformación de asociación correcta.

Si no quiere permitir las manipulaciones con varias manos, establezca la opción Selection Mode de XRI en Single. En el inspector se emplea Multiselect Mode como nombre de esta propiedad a fin de evitar confusiones con Selection Mode de MRTK, que se usa para especificar si es posible alternar un objeto con el que se puede interactuar (consulte la documentación de los botones para obtener más aclaraciones).

Modo de selección múltiple

Restricciones

ObjectManipulator usa la API de restricciones para restringir las manipulaciones. Vea la documentación de restricciones para obtener más información.

Inyección de lógica de manipulación

Los desarrolladores pueden personalizar el comportamiento de manipulación de ObjectManipulator sin necesidad de establecer subclases ni modificar el propio script. Simplemente escriba un nuevo ManipulationLogic<T> y especifique el tipo en el inspector con la ManipulationLogicTypes propiedad .

Del mismo modo, los desarrolladores pueden personalizar el comportamiento de suavizado escribiendo una nueva implementación de ITransformSmoothingLogic y especificando el tipo en el inspector con la TransformSmoothingLogicType propiedad .

Importante

Si se encuentra escribiendo nuevos tipos de lógica de manipulación para un nuevo tipo de interacción o dispositivo de entrada, es probable que haya tomado el camino incorrecto. La lógica de manipulación existente debe funcionar con los tipos de entrada arbitrarios, siempre que la transformación de asociación sea correcta. Considere la posibilidad de ajustar o escribir un nuevo interactivo en su lugar. Lea la documentación sobre la arquitectura de los interactivos y la documentación sobre la arquitectura de los objetos con los que se puede interactuar para obtener más información sobre cómo escribir lógica de interacción correcta.