Manipulador de objetos: MRTK2

Manipulador de objetos

ObjectManipulator es el nuevo componente para el comportamiento de manipulación, que se encontró anteriormente en ManipulationHandler. El manipulador de objetos realiza una serie de mejoras y simplificaciones. Este componente es un reemplazo del controlador de manipulación, que quedará en desuso.

El script ObjectManipulator hace que un objeto sea extraíble, escalable y girable mediante una o dos manos. El manipulador de objetos se puede configurar para controlar cómo responderá el objeto a varias entradas. El script debe funcionar con la mayoría de las formas de interacción, como HoloLens 2 mano articulada, HoloLens 2 rayos de mano, mirada y gestos de HoloLens 1 y entrada del controlador de movimiento de auriculares envolventes.

Uso del manipulador de objetos

Para usar el manipulador de objetos, primero agregue el componente de ObjectManipulator script a gameObject. Asegúrese de agregar también un colisionador al objeto , que coincida con sus límites agarrables.

Para que el objeto responda a la entrada de mano articulada casi articulada, agregue también el NearInteractionGrabbable script.

El comportamiento físico se puede habilitar para el manipulador de objetos agregando un componente rigidbody al objeto. El comportamiento físico habilitado mediante la adición de este componente se describe con más detalle en Física y colisiones.

Además de esto, la manipulación se puede restringir agregando componentes de restricción de manipulación al objeto . Estos son componentes especiales que funcionan con manipulación y cambian el comportamiento de manipulación de alguna manera.

Uso del controlador de manipulación en el editor de Unity

Propiedades y campos del inspector

Estructura del manipulador de objetos

Propiedades generales

Transformación de host

Transformación de objeto que se manipulará. El valor predeterminado es el objeto del componente.

Tipo de manipulación

Especifica si el objeto se puede manipular mediante una o dos manos. Dado que esta propiedad es una marca, es posible seleccionar ambas opciones.

  • Una mano: habilita la manipulación de una mano si está seleccionada.
  • Dos manos: habilita la manipulación de dos manos si está seleccionada.

Permitir manipulación lejana

Especifica si la manipulación se puede realizar mediante la interacción lejana con punteros.

Propiedades de manipulación con una mano

Modo de rotación de una mano cerca

Especifica cómo se comportará el objeto cuando se agarra con una mano cerca. Estas opciones solo funcionan para las manos articuladas.

  • Girar sobre el centro de objetos: el objeto gira mediante la rotación de la mano, pero sobre el punto central del objeto. El objeto parecerá moverse menos mientras gira, pero puede haber una sensación de desconexión entre la mano y el objeto. Más útil para la interacción lejana.
  • Girar sobre el punto de agarre: gire el objeto con la mano sobre el punto de agarre entre el pulgar y el dedo índice. Debe sentirse como si el objeto se mantiene a mano.

Modo de rotación de una mano lejos

Especifica cómo se comportará el objeto cuando se agarra con una mano a distancia. Estas opciones solo funcionan para las manos articuladas.

  • Girar sobre el centro de objetos: gire el objeto mediante la rotación de la mano, pero sobre el punto central del objeto. Resulta útil para inspeccionar a una distancia sin que el centro de objetos se mueva a medida que el objeto gira.
  • Girar sobre el punto de agarre: gire el objeto utilizando la rotación de la mano, pero sobre el punto de acierto del rayo de puntero. Útil para la inspección.

Propiedades de manipulación de dos manos

Tipo de manipulación con dos manos

Especifica cómo la manipulación de dos manos puede transformar un objeto. Dado que esta propiedad es una marca, se puede seleccionar cualquier número de opciones.

  • Mover: se permite mover si está seleccionado.
  • Escala: se permite el escalado si está seleccionado.
  • Rotación: se permite la rotación si está seleccionada.

Controlador de manipulación

Restricciones

Habilitación de restricciones

Esta configuración habilitará el administrador de restricciones vinculadas. Las restricciones registradas en el administrador de restricciones seleccionadas procesarán los cambios de transformación.

Administrador de restricciones

La lista desplegable permite seleccionar cualquiera de los administradores de restricciones adjuntas. El manipulador de objetos garantiza que hay un administrador de restricciones asociado en todo momento. Tenga en cuenta que varios componentes del mismo tipo se mostrarán bajo el mismo nombre en unity. Para facilitar la distinción entre varios administradores de restricciones en el mismo objeto, las opciones disponibles mostrarán una sugerencia sobre la configuración del administrador de restricciones seleccionado (selección manual o automática de restricciones).

Ir al componente

La selección del administrador de restricciones incluye un botón Ir al componente . Este botón hará que el inspector se desplace hasta el componente seleccionado para que se pueda configurar.

Física

La configuración de esta sección solo aparece cuando el objeto tiene un componente RigidBody.

Comportamiento de la versión

Especifique qué propiedades físicas debe mantener un objeto manipulado tras la liberación. Dado que esta propiedad es una marca, es posible seleccionar ambas opciones.

  • Mantener velocidad: cuando se libera el objeto, si se selecciona esta opción, mantendrá su velocidad lineal.
  • Mantener Angular Velocidad: cuando se libere el objeto, si esta opción está seleccionada, mantendrá su velocidad angular.

Uso de fuerzas para la manipulación cercana

Si las fuerzas físicas se usan para mover el objeto al realizar manipulaciones cercanas. Si se establece en false , el objeto se sentirá más directamente conectado a la mano de los usuarios. Si se establece en true , se respetará la masa y la inercia del objeto, pero puede sentirse como si el objeto estuviera conectado a través de un muelle. El valor predeterminado es false.

Suavizado

Suavizado lejos

Si el suavizado independiente de velocidad de fotogramas está habilitado para interacciones lejanas. El suavizado lejano está habilitado de forma predeterminada.

Suavizado cerca

Si el suavizado independiente de velocidad de fotogramas está habilitado para interacciones cercanas. El suavizado cercano está deshabilitado de forma predeterminada porque el efecto puede percibirse como "desconectado" de la mano.

Suavizado activo

Obsoleto y se quitará en una versión futura. Las aplicaciones deben usar SmoothingFar, SmoothingNear o una combinación de las dos.

Tiempo de desplazamiento

Cantidad de suavizado que se va a aplicar al movimiento. Suavizado de 0 significa que no hay suavizado. El valor máximo significa que no hay ningún cambio en el valor.

Rotación del tiempo de lerp

Cantidad de suavizado que se va a aplicar a la rotación. Suavizado de 0 significa que no hay suavizado. El valor máximo significa que no hay ningún cambio en el valor.

Tiempo de escalado

Cantidad de suavizado que se va a aplicar a la escala. Suavizado de 0 significa que no hay suavizado. El valor máximo significa que no hay ningún cambio en el valor.

Eventos de manipulación

El controlador de manipulación proporciona los siguientes eventos:

  • OnManipulationStarted: se desencadena cuando se inicia la manipulación.
  • OnManipulationEnded: se activa cuando finaliza la manipulación.
  • OnHoverStarted: se activa cuando una mano o controlador mantiene el puntero sobre el manipulable, cerca o lejos.
  • OnHoverEnded: se activa cuando un controlador o mano desplace el puntero sobre el manipulable, cerca o lejos.

El orden de incendio del evento para la manipulación es:

OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded

Si no hay ninguna manipulación, seguirá recibiendo eventos de desplazamiento con el siguiente orden de activación:

OnHoverStarted ->OnHoverEnded

Física y colisiones

El comportamiento físico se puede habilitar agregando un componente rigidbody al mismo objeto que un manipulador de objetos. Esto no solo habilita la configuración del comportamiento de liberación anterior, sino que también permite colisiones. Sin un componente rigidbody, las colisiones no se comportan correctamente durante la manipulación:

  • Las colisiones entre un objeto manipulado y un colisionador estático (es decir, un objeto con un colisionador pero sin alguien rígido) no funcionan, el objeto manipulado pasa directamente a través del colisionador estático no afectado.
  • Las colisiones entre un objeto manipulado y un cuerpo rígido (es decir, un objeto con un colisionador y un cuerpo rígido) hacen que el cuerpo rígido tenga una respuesta de colisión, pero la respuesta es jumpy y unnatural. Tampoco hay ninguna respuesta de colisión en el objeto manipulado.

Cuando se agrega un cuerpo rígido, las colisiones deben funcionar correctamente.

Sin alguien rígido

Sin cuerpo rígido

Con rigidbody

Cuerpo rígido

Elastics (Experimental)

Los elásticos se pueden usar al manipular objetos a través del manipulador de objetos. Tenga en cuenta que el sistema elástico sigue en estado experimental. Para habilitar los elásticos, vincule un componente de administrador elástico existente o cree y vincule un nuevo administrador elástico a través del Add Elastics Manager botón .

Elásticos de control de límites

Consulte también