Gerenciador de restrições — MRTK2

O gerenciador de restrições permite aplicar um conjunto de componentes de restrição a uma transformação. 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

Seleção Automática

O modo padrão do gerenciador de restrições, 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

Seleção Manual

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á a lista 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 várias 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 herde de 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 uma manipulação com 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, muito ou ambos os tipos de manipulação. Como essa propriedade é um sinalizador, ambas as opções podem ser selecionadas.

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

FaceUserConstraint

Usuário De Detecção Facial de Restrição

Quando essa restrição estiver 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 para longe

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

FixedDistanceConstraint

Restrição Distâncias fixas

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 até 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

Rotação Fixa

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. O FixedRotationToUserConstraint não tem nenhuma propriedade exclusiva.

FixedRotationToWorldConstraint

Rotação fixa para o mundo

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 pela manipulação. O FixedRotationToWorldConstraint não tem nenhuma propriedade exclusiva:

MaintainApparentSizeConstraint

Manter o tamanho aparente

Quando essa restrição estiver anexada a um objeto , independentemente de 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 um painel de ardósia ou texto permaneça legível durante a manipulação. O MaintainApparentSizeConstraint não tem nenhuma propriedade exclusiva:

MoveAxisConstraint

Eixo de Movimentação de Restrição

Essa restrição pode ser usada para corrigir os eixos que um objeto manipulado pode mover. 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 na movimentação

Especifica quais eixos impedir o movimento. 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

Eixo de rotação de restrição

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 permitir rotações do 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 escalonem um objeto muito pequeno ou muito grande. As propriedades para MinMaxScaleConstraint são as seguintes:

Mínimo de escala

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

Máximo de escala

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

Em relação ao estado inicial

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