Gerenciador de restrição

O gerenciador de restrições permite aplicar um conjunto de componentes de restrição a uma transformação. Os componentes do tipo TransformConstraint anexados ao objeto de jogo podem ser levados em consideração. Por padrão, o gerenciador de restrições coletará automaticamente todos os componentes de restrição anexados ao objeto de jogo e os aplicará a transformações processadas. No entanto, os usuários podem optar por configurar a lista de restrições aplicadas manualmente e permitir que apenas um subconjunto de restrições anexadas seja aplicado.

Atualmente, os seguintes elementos de UX do MRTK são compatíveis com o gerenciador de restrições:

Propriedades e campos do inspetor

O gerenciador de restrições pode ser operado em dois modos:

  • Seleção de restrição automática
  • Seleção de restrição manual

Seleção de restrição automática

Auto Selection

O modo padrão do gerenciador de restrições, a seleção de restrição automática, fornecerá uma lista de todos os componentes de restrição anexados, bem como acessará botões e um botão adicionar restrição.

Adicionar restrição ao objeto de jogo

Esse botão permite que um componente de restrição seja adicionado diretamente do inspetor do gerenciador de restrições. Todos os tipos de restrição em um projeto devem estar visíveis aqui. Consulte restrições de transformação para obter mais informações.

Ir para o componente

Todas as restrições encontradas no objeto serão listadas aqui com um botão Ir para o componente . Esse botão fará com que o inspetor role até o componente de restrição selecionado para que ele possa ser configurado.

Seleção de restrição manual

Manual Selection

Se o gerenciador de restrições for definido como modo manual, somente as restrições vinculadas na lista de restrições serão processadas e aplicadas à transformação. A lista exibida mostrará apenas as restrições selecionadas pelo usuário, bem como acessará botões ou opções para remover ou adicionar entradas. Ao habilitar o modo manual pela primeira vez, o gerenciador de restrições preencherá todos os componentes disponíveis como ponto de partida para selecionar componentes de restrição anexados.

Remover entrada

Isso remove a entrada da lista selecionada manualmente. Observe que essa opção não removerá o componente de restrição do objeto de jogo. Os componentes de restrição sempre precisam ser removidos manualmente para garantir que não haja interrupção acidental de nenhum outro componente referente a esse componente.

Adicionar entrada

Adicionar entrada abrirá uma lista suspensa mostrando todos os componentes de restrição disponíveis que ainda não estão na lista manual. Clicando em qualquer uma das entradas que o componente será adicionado à seleção de restrição manual.

Adicionar nova restrição

Essa opção adicionará um componente do tipo selecionado ao objeto de jogo e adicionará o componente de restrição recém-criado à lista de restrições manuais.

Restrições de transformação

Restrições podem ser usadas para limitar a manipulação de alguma forma. Por exemplo, alguns aplicativos podem exigir rotação, mas também exigem que o objeto permaneça ereto. Nesse caso, um RotationAxisConstraint pode ser adicionado ao objeto e usado para limitar a rotação à rotação do eixo y. O MRTK fornece uma série de restrições, todas descritas abaixo.

Também é possível definir novas restrições e usá-las para criar um comportamento de manipulação exclusivo que pode ser necessário para alguns aplicativos. Para fazer isso, crie um script que herda TransformConstraint e implemente a propriedade abstrata ConstraintType e o método abstrato ApplyConstraint . Ao adicionar uma nova restrição ao objeto, ele deve restringir a manipulação da maneira que foi definida. Essa nova restrição também deve ser mostrada na seleção automática do gerenciador de restrições ou adicionar lista suspensa de entrada no modo manual.

Todas as restrições fornecidas pelo MRTK compartilham as seguintes propriedades:

Tipo de mão

Especifica se a restrição é usada para uma mão, duas mãos ou ambos os tipos de manipulação. Como essa propriedade é um sinalizador, ambas as opções podem ser selecionadas.

  • Uma mão: a restrição será usada durante a manipulação de uma mão, se selecionada.
  • Duas mãos: a restrição será usada durante a manipulação de duas mãos, se selecionada.

Tipo de proximidade

Especifica se a restrição é usada para quase, longe ou ambos os tipos de manipulação. Como essa propriedade é um sinalizador, ambas as opções podem ser selecionadas.

  • Próximo: a restrição será usada durante a manipulação próxima, se selecionada.
  • Longe: a restrição será usada durante a manipulação distante, se selecionada.

FaceUserConstraint

Constraint Face User

Quando essa restrição é anexada a um objeto, a rotação será limitada para que o objeto sempre enfrente o usuário. Isso é útil para ardósias ou painéis. As propriedades para FaceUserConstraint são as seguintes:

Face away

O objeto será afastado do usuário, se for verdadeiro.

FixedDistanceConstraint

Constraint Fixed distances

Essa restrição corrige a distância entre o objeto manipulado e outra transformação de objeto no início da manipulação. Isso é útil para comportamentos como corrigir a distância do objeto manipulado para a transformação de cabeçalho. As propriedades para FixedDistanceConstraint são as seguintes:

Transformação de restrição

Essa é a outra transformação para a qual o objeto manipulado terá uma distância fixa. O padrão é a transformação da câmera.

FixedRotationToUserConstraint

Fixed Rotation

Essa restrição corrige a rotação relativa entre o usuário e o objeto manipulado enquanto ele está sendo manipulado. Isso é útil para ardósias ou painéis, pois garante que o objeto manipulado sempre mostre o mesmo rosto para o usuário que ele fez no início da manipulação. Não FixedRotationToUserConstraint tem nenhuma propriedade exclusiva.

FixedRotationToWorldConstraint

Fixed rotation to the world

Essa restrição corrige a rotação global do objeto manipulado enquanto ele está sendo manipulado. Isso pode ser útil em casos em que nenhuma rotação deve ser transmitida por manipulação. As FixedRotationToWorldConstraint propriedades não têm nenhuma exclusiva:

MaintainApparentSizeConstraint

Maintain Apparent size

Quando essa restrição é anexada a um objeto, não importa o quão longe o objeto esteja do usuário, ele manterá o mesmo tamanho aparente para o usuário (ou seja, ele assumirá a mesma proporção do campo de exibição do usuário). Isso pode ser usado para garantir que uma ardósia ou um painel de texto permaneça legível durante a manipulação. As MaintainApparentSizeConstraint propriedades não têm nenhuma exclusiva:

MoveAxisConstraint

Constraint Move Axis

Essa restrição pode ser usada para corrigir em quais eixos um objeto manipulado pode ser movido. Isso pode ser útil para manipular objetos sobre a superfície de um plano ou ao longo de uma linha. As propriedades para MoveAxisConstraint são as seguintes:

Restrição de movimentação

Especifica quais eixos impedir a movimentação. Por padrão, esses eixos serão globais e não locais, mas isso pode ser alterado abaixo. Como essa propriedade é um sinalizador, qualquer número de opções pode ser selecionado.

  • Eixo X: o movimento ao longo do eixo x é restrito se selecionado.
  • Eixo Y: o movimento ao longo do eixo y é restrito se selecionado.
  • Eixo Z: o movimento ao longo do eixo z é restrito se selecionado.

Usar espaço local para restrição

Restringirá os eixos de transformação locais do objeto manipulado se for verdadeiro. Falso por padrão.

RotationAxisConstraint

Constraint Rotation Axis

Essa restrição pode ser usada para corrigir quais eixos um objeto manipulado pode ser girado. Isso pode ser útil para manter um objeto manipulado ereto, mas ainda permitindo rotações de eixo y, por exemplo. As propriedades para RotationAxisConstraint são as seguintes:

Restrição na rotação

Especifica sobre quais eixos impedir a rotação. Por padrão, esses eixos serão globais e não locais, mas isso pode ser alterado abaixo. Como essa propriedade é um sinalizador, qualquer número de opções pode ser selecionado.

  • Eixo Y: a rotação sobre o eixo y é restrita se selecionada.
  • Eixo Z: a rotação sobre o eixo z é restrita se selecionada.
  • Eixo X: a rotação sobre o eixo x é restrita se selecionada.

Usar espaço local para restrição

Restringirá os eixos de transformação locais do objeto manipulado se for verdadeiro. Falso por padrão.

MinMaxScaleConstraint

Min Max Constatint

Essa restrição permite que valores mínimos e máximos sejam definidos para a escala do objeto manipulado. Isso é útil para impedir que os usuários dimensionem um objeto muito pequeno ou muito grande. As propriedades para MinMaxScaleConstraint são as seguintes:

Escala mínima

O valor mínimo de escala durante a manipulação.

Máximo de escala

O valor máximo de escala durante a manipulação.

Em relação ao estado inicial

Se verdadeiro, os valores acima serão interpretados como relativos à escala inicial dos objetos. Caso contrário, eles serão interpretados como valores de escala absoluta.