Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
ConstraintManager
permite aplicar un conjunto de componentes de restricción a una transformación. De forma predeterminada, el administrador de restricciones recopilará automáticamente todos los componentes de restricción adjuntos y los aplicará al objeto de destino. Sin embargo, los usuarios también pueden optar por configurar manualmente la lista de restricciones aplicadas y solo permitir que se use un subconjunto de restricciones adjuntas.
Nota:
MRTK3 ofrece actualmente un subconjunto limitado de las restricciones de MRTK 2.x. Actualmente estamos investigando una refactorización del sistema constraints para unificar el flujo de trabajo del desarrollador con Solvers y Elastics. ¡Permaneced atentos!
Actualmente, los siguientes elementos de experiencia de usuario de MRTK admiten restricciones:
El administrador de restricciones puede funcionar en dos modos:
- Selección de restricciones automáticas
- Selección manual de restricciones
Selección de restricciones
Selección de restricciones automáticas
El modo automático predeterminado enumerará todos los componentes de restricción adjuntos. Puede saltar directamente al componente en el inspector mediante los botones Ir al componente o agregar una nueva restricción en la lista desplegable.
Selección manual de restricciones
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. Al habilitar el modo manual por primera vez, el administrador rellenará automáticamente la lista con todas las restricciones asociadas actualmente.
Nota:
La acción Quitar entrada solo quitará la restricción de la lista de selección manual. El componente seguirá estando presente en GameObject.
Orden de ejecución
El orden de ejecución de cada restricción se puede definir en la opción Orden de ejecución de la propia restricción. El orden se reflejará en la lista mostrada en el administrador de restricciones. Algunas restricciones se comportarán de manera diferente cuando se combinen en pedidos diferentes, por lo que debe tener en cuenta las prioridades de cada restricción y ajustar su orden en consecuencia.
Restricciones de transformación
Puede usar restricciones para limitar la manipulación de alguna manera. Por ejemplo, algunas aplicaciones pueden requerir rotación y 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 varias 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
. La nueva restricción debe aparecer en la lista desplegable y debe registrarse automáticamente en el administrador de restricciones cuando se agrega al objeto.
Todas las restricciones proporcionadas por MRTK comparten las siguientes propiedades:
Tipo de mano especifica si la restricción se usa para un solo uso, dos manos o ambos tipos de manipulación. Dado que esta propiedad es una marca, se pueden seleccionar ambas opciones.
- Con una mano: la restricción se usará durante la manipulación con una sola mano si se selecciona.
- Con dos manos: la restricción se usará durante la manipulación a dos manos si se selecciona.
ProximityType 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
Esta restricción limita la rotación de un objeto de modo que siempre se enfrente al usuario. La opción Face Away controla si se usa el eje Z positivo o negativo.
FixedDistanceConstraint
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. El campo De transformación Restricción tiene como valor predeterminado la transformación de cámara y es la otra transformación a la que el objeto manipulado tendrá una distancia fija.
MaintainApparentSizeConstraint
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.
MoveAxisConstraint
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.
El campo Restricción en 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.
MinMaxScaleConstraint
Esta restricción limita la escala de un objeto, útil para evitar que los usuarios escalen objetos a tamaños inusablemente pequeños o grandes. Funciona tanto para el escalado basado en controladores (con BoundsControl) como para el escalado directo de dos manos (con ObjectManipulator). La opción Relativa al estado inicial define si los valores de escala Mínimo y Máximo específicos son valores absolutos o si se multiplican en la escala inicial del objeto.
RotationAxisConstraint
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.
El campo Restricción en 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.