Manipulador de objetos – MRTK2

Manipulador de objetos

O ObjectManipulator é o novo componente para o comportamento de manipulação, anteriormente encontrado em ManipulationHandler. O manipulador de objetos faz várias melhorias e simplificações. Este componente substitui o processador de manipulação, que será preterido.

O script ObjectManipulator torna um objeto móvel, dimensionável e rotativo com uma ou duas mãos. O manipulador de objetos pode ser configurado para controlar a forma como o objeto irá responder a várias entradas. O script deve funcionar com a maioria das formas de interação, como HoloLens 2 mão articulada, HoloLens 2 raios de mão, olhares e gestos do HoloLens 1 e entradas envolventes do controlador de movimento dos auscultadores.

Como utilizar o manipulador de objetos

Para utilizar o manipulador de objetos, adicione primeiro o componente de ObjectManipulator script a um GameObject. Certifique-se de que também adiciona um colisor ao objeto, que corresponde aos respetivos limites agarráveis.

Para fazer com que o objeto responda à entrada manual quase articulada, adicione também o NearInteractionGrabbable script.

O comportamento físico pode ser ativado para o manipulador de objetos ao adicionar um componente rigidbody ao objeto. O comportamento físico ativado pela adição deste componente é abordado com maior detalhe em Física e colisões.

Além disso, a manipulação pode ser limitada ao adicionar componentes de restrição de manipulação ao objeto. Estes são componentes especiais que funcionam com manipulação e mudam o comportamento de manipulação de alguma forma.

Utilizar o Processador de Manipulação no editor do Unity

Propriedades e campos do inspetor

Estrutura do Manipulador de Objetos

Propriedades gerais

Transformação do anfitrião

A transformação do objeto que será manipulada. Predefinição para o objeto do componente.

Tipo de manipulação

Especifica se o objeto pode ser manipulado com uma ou duas mãos. Uma vez que esta propriedade é um sinalizador, ambas as opções podem ser selecionadas.

  • Uma mão: ativa a manipulação com uma mão, se selecionada.
  • Duas mãos: ativa a manipulação de duas mãos se estiver selecionada.

Permitir manipulação de longe

Especifica se a manipulação pode ser feita através de interação com ponteiros.

Propriedades de manipulação com uma mão

Modo de rotação de uma mão perto

Especifica como o objeto se irá comportar quando está a ser agarrado com uma mão perto. Estas opções só funcionam para mãos articuladas.

  • Rodar sobre o centro de objetos: o objeto roda com a rotação da mão, mas sobre o ponto central do objeto. O objeto parece mover-se menos à medida que roda, mas pode haver uma sensação de desconexão entre a mão e o objeto. Mais útil para uma interação muito grande.
  • Rodar sobre o ponto de captura: rode o objeto com a mão sobre o ponto de captura entre o polegar e o dedo indicador. Deve parecer que o objeto está a ser mantido pela mão.

Um modo de rotação de mãos distante

Especifica como o objeto se irá comportar quando está a ser agarrado com uma mão à distância. Estas opções só funcionam para mãos articuladas.

  • Rodar sobre o centro de objetos: rode o objeto com a rotação da mão, mas sobre o ponto central do objeto. Útil para inspecionar à distância sem que o centro de objetos se mova à medida que o objeto roda.
  • Rodar sobre o ponto de captura: rode o objeto com a rotação da mão, mas sobre o ponto de acesso de raio do ponteiro. Útil para inspeção.

Propriedades de manipulação com duas mãos

Tipo de manipulação com duas mãos

Especifica como a manipulação de duas mãos pode transformar um objeto. Uma vez que esta propriedade é um sinalizador, podem ser selecionadas várias opções.

  • Mover: a movimentação é permitida se estiver selecionada.
  • Dimensionamento: o dimensionamento é permitido se estiver selecionado.
  • Rodar: a rotação é permitida se estiver selecionada.

Processador de Manipulação

Restrições

Ativar restrições

Esta definição irá ativar o gestor de restrições ligado. As alterações de transformação serão processadas por restrições registadas no gestor de restrições selecionado.

Gestor de restrições

A lista pendente permite selecionar qualquer um dos gestores de restrições anexados. O manipulador de objetos garante que existe sempre um gestor de restrições ligado. Tenha em atenção que vários componentes do mesmo tipo serão apresentados com o mesmo nome no unity. Para facilitar a distinção entre vários gestores de restrições no mesmo objeto, as opções disponíveis mostrarão uma sugestão sobre a configuração do gestor de restrições selecionado (seleção de restrição manual ou automática).

Ir para o componente

A seleção do gestor de restrições inclui um botão Ir para componente . Este botão fará com que o inspetor desloque-se para o componente selecionado para que possa ser configurado.

Física

As definições nesta secção só aparecem quando o objeto tem um componente RigidBody.

Comportamento da versão

Especifique as propriedades físicas que um objeto manipulado deve manter após a libertação. Uma vez que esta propriedade é um sinalizador, ambas as opções podem ser selecionadas.

  • Manter Velocidade: quando o objeto é libertado, se esta opção estiver selecionada, manterá a velocidade linear.
  • Manter Angular Velocidade: quando o objeto for libertado, se esta opção estiver selecionada, manterá a velocidade angular.

Utilizar forças para manipulação quase

Se as forças físicas são usadas para mover o objeto ao realizar manipulações próximas. Definir isto como falso fará com que o objeto se sinta mais diretamente ligado à mão dos utilizadores. Definir isto como verdadeiro irá respeitar a massa e a inércia do objeto, mas pode parecer que o objeto está ligado através de uma mola. A predefinição é falsa.

Suavização

A suavizar muito

Se a suavidade independente da taxa de fotogramas está ativada para interações longínquas. Por predefinição, a suavidade está ativada.

A suavizar perto

Se a suavidade independente da taxa de fotogramas está ativada para interações próximas. Por predefinição, a suavidade está desativada porque o efeito pode ser visto como "desligado" da mão.

A suavizar ativo

Obsoleto e será removido numa versão futura. As aplicações devem utilizar SmoothingFar, SmoothingNear ou uma combinação dos dois.

Mover hora de lerp

Quantidade de suavidade a aplicar ao movimento. A suavidade de 0 significa que não há alisamento. O valor máximo significa que não há alteração ao valor.

Rodar a hora do lerp

Quantidade de suavidade a aplicar à rotação. A suavidade de 0 significa que não há alisamento. O valor máximo significa que não há alteração ao valor.

Dimensionar o tempo de lerp

Quantidade de suavizações a aplicar à escala. Suavização de 0 significa que não há suavização. Valor máximo significa nenhuma alteração ao valor.

Eventos de manipulação

O processador de manipulação fornece os seguintes eventos:

  • OnManipulationStarted: acionado quando a manipulação é iniciada.
  • OnManipulationEnded: é acionado quando a manipulação termina.
  • OnHoverStarted: é acionado quando uma mão/controlador paira sobre o manipulável, próximo ou distante.
  • OnHoverEnded: é acionado quando uma mão/controlador não paira o rato sobre o manipulável, próximo ou distante.

A ordem de incêndio do evento para manipulação é:

OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded

Se não houver manipulação, continuará a receber eventos de pairar com a seguinte ordem de incêndio:

OnHoverStarted ->OnHoverEnded

Física e colisões

O comportamento físico pode ser ativado ao adicionar um componente de rigidbody ao mesmo objeto que um manipulador de objetos. Isto não só permite a configuração do comportamento de versão acima, como também permite colisões. Sem um componente rígido, as colisões não se comportam corretamente durante a manipulação:

  • As colisões entre um objeto manipulado e um colisor estático (ou seja, um objecto com um colisor, mas sem corpo rígido) não funcionam, o objecto manipulado passa directamente pelo colisor estático não afetado.
  • Colisões entre um objeto manipulado e um corpo rígido (ou seja, um objeto com um colisor e um corpo rígido) fazem com que o rigidbody tenha uma resposta de colisão, mas a resposta é rápida e não natural. Também não há resposta de colisão no objeto manipulado.

Quando é adicionado um corpo rígido, as colisões devem funcionar corretamente.

Sem corpo rígido

Sem Corpo Rígido

Com um corpo rígido

Corpo Rígido

Elásticos (Experimental)

Os elásticos podem ser utilizados ao manipular objetos através do manipulador de objetos. Tenha em atenção que o sistema elástico ainda está no estado experimental. Para ativar os elásticos, ligue um componente do gestor de elásticos existente ou crie e ligue um novo gestor de elásticos através do Add Elastics Manager botão.

Elásticos de Controlo de Limites

Ver também