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 de entrada o modalidad. Realiza una tarea similar a XRI XRGrabInteractable, pero ofrece características adicionales e interacciones específicas de la realidad mixta. Aunque es XRGrabInteractable totalmente compatible con nuestros interactuantes (y lo contrario también es cierto), todavía 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 la interfaz de usuario, como controles deslizantes o botones, consulte nuestros artículos sobre controles deslizantes y botones en su lugar. Evite usar ObjectManipulator para escribir micro interacciones.

Arquitectura

En MRTK v2, la mayor parte de la lógica compleja y las matemáticas para los diferentes tipos de entrada se controlaron por ObjectManipulator sí mismo. Se tenía que mantener una ruta de código independiente para cada tipo de interacción, lo que resultaba en menos flexibilidad al introducir nuevos tipos de interacciones. En MRTK3, el interactor es responsable de los detalles de cómo se traduce un tipo determinado de entrada en una manipulación. ObjectManipulator simplemente escucha a estos interactuadores y aplica la transformación pertinente al objeto. Como resultado, ObjectManipulator en MRTK3 es significativamente más simple y más pequeño en el ámbito. Consulte la arquitectura del interactor para obtener descripciones de cómo se comunican los interactores a través de sus transformaciones de asociación.

nManipulaciones con manos

ObjectManipulator admite cualquier número de interactuantes participantes, lo que permite un comportamiento de interacción generalizable en una, dos e incluso nmanipulaciones con manos. Por lo general, el centroide geométrico de los attachTransforms de todos los interactores participantes se usa para las interacciones de varias manos. Como un XRI interactable, es compatible con cualquier tipo de interactor que envía una transformación de asociación bien comportada.

Si desea no permitir manipulaciones de varias manos, establezca XRI Selection ModeSingleen . Se asigna un alias a esta propiedad en el inspector al nombre Multiselect Mode más específico para evitar confusiones con nuestro MRTK Selection Mode, que se usa para especificar si se puede alternar un elemento interactable (consulte la documentación de Button para obtener más aclaraciones).

Modo de selección múltiple

Restricciones

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

Inserción lógica de manipulación

Los desarrolladores pueden personalizar el comportamiento de manipulación de sin necesidad de ObjectManipulator subclase o modificar el propio script. Basta con escribir un nuevo ManipulationLogic<T> y especificar el tipo en el inspector con la ManipulationLogicTypes propiedad .

De forma similar, 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, probablemente vaya por la ruta equivocada. La lógica de manipulación existente debe funcionar para tipos de entrada arbitrarios siempre y cuando la transformación de asociación se comporte bien. Considere la posibilidad de ajustar o escribir un nuevo interactor en su lugar. Lea la documentación de arquitectura de Interactor y la documentación de arquitectura interactable para obtener más información sobre cómo escribir lógica de interacción bien comportada.