Administrador de restricciones: MRTK2

El administrador de restricciones permite aplicar un conjunto de componentes de restricción a una transformación. Los componentes de tipo TransformConstraint que están asociados al objeto de juego se pueden tener en cuenta. Por defecto, el administrador de restricciones recopilará automáticamente todos los componentes de restricción asociados al objeto de juego y los aplicará a las transformaciones procesadas. Sin embargo, los usuarios pueden optar por configurar manualmente la lista de restricciones aplicadas y permitir que solo se aplique un subconjunto de restricciones adjuntas.

Actualmente, los siguientes elementos de experiencia de usuario de MRTK admiten el administrador de restricciones:

Propiedades y campos del inspector

El administrador de restricciones se puede operar en dos modos:

  • Selección de restricciones automáticas
  • Selección manual de restricciones

Selección de restricciones automáticas

Selección automática

El modo predeterminado del administrador de restricciones, la selección de restricciones automáticas, proporcionará una lista de todos los componentes de restricción adjuntos, así como los botones y un botón agregar restricción.

Agregar restricción al objeto de juego

Este botón permite agregar un componente de restricción directamente desde el inspector del administrador de restricciones. Todos los tipos de restricciones de un proyecto deben estar visibles aquí. Consulte restricciones de transformación para obtener más información.

Ir al componente

Todas las restricciones que se encuentran en el objeto aparecerán aquí con un botón Ir al componente . Este botón hará que el inspector se desplace al componente de restricción seleccionado para que se pueda configurar.

Selección manual de restricciones

Selección manual

Si el administrador de restricciones se establece en modo manual, solo se procesan y aplican a la transformación las restricciones vinculadas en la lista de restricciones. La lista mostrada solo mostrará las restricciones seleccionadas por el usuario, así como ir a botones o opciones para quitar o agregar entradas. Al habilitar el modo manual por primera vez, el administrador de restricciones rellenará la lista de todos los componentes disponibles como punto de partida para seleccionar los componentes de restricción adjuntos.

Quitar entrada

Esto quita la entrada de la lista seleccionada manualmente. Tenga en cuenta que esta opción no quitará el componente de restricción del objeto de juego. Los componentes de restricción siempre deben quitarse manualmente para garantizar que no se rompa accidentalmente ningún otro componente que haga referencia a este componente.

Agregar entrada

Agregar entrada abrirá una lista desplegable que muestra todos los componentes de restricción disponibles que aún no están en la lista manual. Al hacer clic en cualquiera de las entradas que el componente se agregará a la selección de restricciones manual.

Agregar nueva restricción

Esta opción agregará un componente del tipo seleccionado al objeto de juego y agregará el componente de restricción recién creado a la lista de restricciones manual.

Restricciones de transformación

Las restricciones se pueden usar para limitar la manipulación de alguna manera. Por ejemplo, algunas aplicaciones pueden requerir rotación, pero también requieren que el objeto permanezca vertical. En este caso, se puede agregar al RotationAxisConstraint objeto y usarse para limitar la rotación a la rotación del eje Y. MRTK proporciona una serie de restricciones, todas las cuales se describen a continuación.

También es posible definir nuevas restricciones y usarlas para crear un comportamiento de manipulación único que puede ser necesario para algunas aplicaciones. Para ello, cree un script que herede e TransformConstraint implemente la propiedad abstracta ConstraintType y el método abstracto ApplyConstraint . Al agregar una nueva restricción al objeto, debe restringir la manipulación de la manera que se definió. Esta nueva restricción también debe mostrarse en la selección automática del administrador de restricciones o agregar la lista desplegable de entradas en modo manual.

Todas las restricciones proporcionadas por MRTK comparten las siguientes propiedades:

Tipo de mano

Especifica si la restricción se usa para una mano, dos manos o ambos tipos de manipulación. Dado que esta propiedad es una marca, se pueden seleccionar ambas opciones.

  • Una mano: la restricción se usará durante la manipulación de una mano si se selecciona.
  • Con dos manos: la restricción se usará durante la manipulación con dos manos si se selecciona.

Tipo de proximidad

Especifica si la restricción se usa para los tipos de manipulación cercanos, lejanos o ambos. Dado que esta propiedad es una marca, se pueden seleccionar ambas opciones.

  • Cerca: la restricción se usará durante la manipulación cercana si está seleccionada.
  • Lejos: la restricción se usará durante la manipulación lejana si se selecciona.

FaceUserConstraint

Usuario de la cara de restricción

Cuando esta restricción se adjunta a un objeto, la rotación se limitará para que el objeto siempre se enfrente al usuario. Esto es útil para pizarras o paneles. Las propiedades de FaceUserConstraint son las siguientes:

Cara a cara

El objeto se aleja del usuario si es true.

FixedDistanceConstraint

Restricciones Distancias fijas

Esta restricción corrige la distancia entre el objeto manipulado y otra transformación de objeto al iniciar la manipulación. Esto resulta útil para comportamientos como la fijación de la distancia entre el objeto manipulado y la transformación de la cabeza. Las propiedades de FixedDistanceConstraint son las siguientes:

Transformación de restricciones

Esta es la otra transformación a la que el objeto manipulado tendrá una distancia fija. El valor predeterminado es la transformación de cámara.

FixedRotationToUserConstraint

Rotación fija

Esta restricción corrige la rotación relativa entre el usuario y el objeto manipulado mientras se está manipulando. Esto es útil para pizarras o paneles, ya que garantiza que el objeto manipulado siempre muestre la misma cara al usuario que al principio de la manipulación. FixedRotationToUserConstraint no tiene ninguna propiedad única.

FixedRotationToWorldConstraint

Rotación fija al mundo

Esta restricción corrige la rotación global del objeto manipulado mientras se está manipulando. Esto puede ser útil en casos en los que no se debe impartir ninguna rotación mediante la manipulación. FixedRotationToWorldConstraint no tiene ninguna propiedad única:

MaintainApparentSizeConstraint

Mantener el tamaño aparente

Cuando esta restricción se adjunta a un objeto, independientemente de lo lejos que esté el objeto del usuario, mantendrá el mismo tamaño aparente para el usuario (es decir, ocupará la misma proporción del campo de visión del usuario). Esto se puede usar para asegurarse de que un panel de pizarra o texto sigue siendo legible mientras se manipula. MaintainApparentSizeConstraint no tiene ninguna propiedad única:

MoveAxisConstraint

Eje de movimiento de restricciones

Esta restricción se puede usar para corregir a lo largo de qué ejes se puede mover un objeto manipulado. Esto puede ser útil para manipular objetos sobre la superficie de un plano o a lo largo de una línea. Las propiedades de MoveAxisConstraint son las siguientes:

Restricción al movimiento

Especifica los ejes en los que se va a evitar el movimiento. De forma predeterminada, estos ejes serán globales en lugar de locales, pero esto se puede cambiar a continuación. Dado que esta propiedad es una marca, se puede seleccionar cualquier número de opciones.

  • Eje X: el movimiento a lo largo del eje X está restringido si está seleccionado.
  • Eje Y: el movimiento a lo largo del eje Y está restringido si está seleccionado.
  • Eje Z: el movimiento a lo largo del eje Z está restringido si está seleccionado.

Uso de espacio local para la restricción

Restringirá los ejes de transformación local del objeto manipulado en relación si es true. False es el valor predeterminado.

RotationAxisConstraint

Eje de rotación de restricciones

Esta restricción se puede usar para corregir los ejes en los que se puede girar un objeto manipulado. Esto puede ser útil para mantener un objeto manipulado verticalmente, pero seguir permitiendo rotaciones del eje Y, por ejemplo. Las propiedades de RotationAxisConstraint son las siguientes:

Restricción en la rotación

Especifica los ejes sobre los que evitar la rotación. De forma predeterminada, estos ejes serán globales en lugar de locales, pero esto se puede cambiar a continuación. Dado que esta propiedad es una marca, se puede seleccionar cualquier número de opciones.

  • Eje Y: la rotación sobre el eje Y está restringida si está seleccionada.
  • Eje Z: la rotación sobre el eje Z está restringida si está seleccionada.
  • Eje X: la rotación sobre el eje X está restringida si está seleccionada.

Uso de espacio local para la restricción

Restringirá los ejes de transformación local del objeto manipulado en relación si es true. False es el valor predeterminado.

MinMaxScaleConstraint

Min Max Constatint

Esta restricción permite establecer valores mínimos y máximos para la escala del objeto manipulado. Esto es útil para evitar que los usuarios escalen un objeto demasiado pequeño o demasiado grande. Las propiedades de MinMaxScaleConstraint son las siguientes:

Escala mínima

Valor de escala mínimo durante la manipulación.

Escalado máximo

Valor de escala máximo durante la manipulación.

Relativo al estado inicial

Si es true, los valores anteriores se interpretarán como relativos a la escala inicial de objetos. De lo contrario, se interpretarán como valores de escala absolutos.