Gestor de restrições — MRTK2

O gestor 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 tidos em consideração. Por predefinição, o gestor de restrições irá recolher automaticamente todos os componentes de restrição ligados ao objeto de jogo e aplicá-los a transformações processadas. No entanto, os utilizadores podem optar por configurar manualmente a lista de restrições aplicadas e permitir a aplicação de apenas um subconjunto de restrições anexadas.

Atualmente, os seguintes elementos do MRTK UX suportam o gestor de restrições:

Propriedades e campos do inspetor

O gestor 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 predefinido do gestor de restrições, a seleção de restrição automática, irá fornecer uma lista de todos os componentes de restrição anexados, bem como aceder a botões e um botão adicionar restrição.

Adicionar restrição ao objeto de jogo

Este botão permite que um componente de restrição seja adicionado diretamente ao inspetor do gestor de restrições. Todos os tipos de restrição num projeto devem estar visíveis aqui. Veja 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 componente . Este botão fará com que o inspetor desloque-se para o componente de restrição selecionado para que possa ser configurado.

Seleção de restrição manual

Seleção Manual

Se o gestor de restrições estiver definido como modo manual, apenas as restrições que estão ligadas na lista de restrições são processadas e aplicadas à transformação. A lista apresentada só irá mostrar as restrições selecionadas pelo utilizador, bem como aceder a botões ou opções para remover ou adicionar entradas. Ao ativar o modo manual pela primeira vez, o gestor de restrições preencherá a lista todos os componentes disponíveis como ponto de partida para selecionar componentes de restrição anexados.

Remover entrada

Esta ação remove a entrada da lista selecionada manualmente. Tenha em atenção que esta opção não removerá o componente de restrição do objeto de jogo. Os componentes de restrição têm sempre de ser removidos manualmente para garantir que não quebram acidentalmente qualquer outro componente que se refuja a este componente.

Adicionar entrada

Adicionar entrada abrirá uma lista pendente com todos os componentes de restrição disponíveis que ainda não se encontram na lista manual. Ao clicar em qualquer uma das entradas, esse componente será adicionado à seleção de restrição manual.

Adicionar nova restrição

Esta opção irá adicionar um componente do tipo selecionado ao objeto de jogo e adicionar o componente de restrição recentemente criado à lista de restrições manual.

Transformar restrições

As restrições podem ser utilizadas para limitar a manipulação de alguma forma. Por exemplo, algumas aplicações podem necessitar de rotação, mas também exigem que o objeto permaneça na vertical. Neste caso, um RotationAxisConstraint pode ser adicionado ao objeto e utilizado para limitar a rotação para a 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 utilizá-las para criar comportamentos de manipulação exclusivos que podem ser necessários para algumas aplicações. Para tal, 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, deve restringir a manipulação da forma que foi definida. Esta nova restrição também deve ser apresentada na seleção automática do gestor de restrições ou adicionar o menu pendente de entrada no modo manual.

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

Tipo de Mão

Especifica se a restrição é utilizada para uma mão, duas mãos ou ambos os tipos de manipulação. Uma vez que esta propriedade é um sinalizador, ambas as opções podem ser selecionadas.

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

Tipo de Proximidade

Especifica se a restrição é utilizada para tipos próximos, distantes ou ambos os tipos de manipulação. Uma vez que esta propriedade é um sinalizador, ambas as opções podem ser selecionadas.

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

FaceUserConstraint

Constrangimento face utilizador

Quando esta restrição é anexada a um objeto, a rotação será limitada para que o objeto fique sempre virado para o utilizador. Isto é útil para ardósias ou painéis. As propriedades para FaceUserConstraint são as seguintes:

Face ausente

Os rostos do objeto estão afastados do utilizador, se forem verdadeiros.

FixedDistanceConstraint

Restrição Distâncias fixas

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

Transformação de restrição

Esta é a outra transformação à qual o objeto manipulado terá uma distância fixa. Predefinições para a transformação da câmara.

FixedRotationToUserConstraint

Rotação Fixa

Esta restrição corrige a rotação relativa entre o utilizador e o objeto manipulado enquanto está a ser manipulado. Isto é útil para ardósias ou painéis, uma vez que garante que o objeto manipulado mostra sempre o mesmo rosto ao utilizador do que no início da manipulação. O FixedRotationToUserConstraint não tem quaisquer propriedades exclusivas.

FixedRotationToWorldConstraint

Rotação fixa para o mundo

Esta restrição corrige a rotação global do objeto manipulado enquanto está a ser manipulado. Isto pode ser útil nos casos em que nenhuma rotação deve ser transmitida pela manipulação. O FixedRotationToWorldConstraint não tem quaisquer propriedades exclusivas:

ManterApparentSizeConstraint

Manter Tamanho aparente

Quando esta restrição é anexada a um objeto, independentemente da distância do objeto do utilizador, manterá o mesmo tamanho aparente para o utilizador (ou seja, ocupará a mesma proporção do campo de vista do utilizador). Isto pode ser utilizado para garantir que uma ardósia ou painel de texto permanece legível enquanto manipula. O MaintainApparentSizeConstraint não tem quaisquer propriedades exclusivas:

MoveAxisConstraint

Eixo de Movimentação de Restrição

Esta restrição pode ser utilizada para corrigir os eixos que podem ser movidos por um objeto manipulado. Isto 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 ao movimento

Especifica os eixos que impedem o movimento. Por predefinição, estes eixos serão globais e não locais, mas podem ser alterados abaixo. Uma vez que esta propriedade é um sinalizador, podem ser selecionadas várias opções.

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

Utilizar espaço local para restrição

Irá restringir relativamente os eixos de transformação local do objeto manipulado, se forem verdadeiros. Falso por predefinição.

RotationAxisConstraint

Eixo de Rotação de Restrições

Esta restrição pode ser utilizada para corrigir os eixos que um objeto manipulado pode ser rodado. Isto pode ser útil para manter um objeto manipulado na vertical, mas continuar a permitir rotações de eixo y, por exemplo. As propriedades para RotationAxisConstraint são as seguintes:

Restrição na rotação

Especifica os eixos para impedir a rotação. Por predefinição, estes eixos serão globais e não locais, mas podem ser alterados abaixo. Uma vez que esta propriedade é um sinalizador, podem ser selecionadas várias opções.

  • 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.

Utilizar espaço local para restrição

Irá restringir relativamente os eixos de transformação local do objeto manipulado, se forem verdadeiros. Falso por predefinição.

MinMaxScaleConstraint

Min Max Constatint

Esta restrição permite definir valores mínimos e máximos para a escala do objeto manipulado. Isto é útil para impedir que os utilizadores dimensionem um objeto demasiado pequeno ou demasiado grande. As propriedades para MinMaxScaleConstraint são as seguintes:

Mínimo de dimensionamento

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

Dimensionar máximo

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

Relativamente ao estado inicial

Se for verdadeiro, os valores acima serão interpretados em relação à escala inicial dos objetos. Caso contrário, serão interpretados como valores de dimensionamento absolutos.