Manipulador de objetos — MRTK2

Manipulador de objetos

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

O script ObjectManipulator torna um objeto móvel, escalonável e rotativo usando uma ou duas mãos. O manipulador de objetos pode ser configurado para controlar como o objeto responderá a várias entradas. O script deve funcionar com a maioria das formas de interação, como HoloLens 2 mão articulada, raios de mão HoloLens 2, olhar e gestos do HoloLens 1 e entrada imersiva do controlador de movimento do headset.

Como usar o manipulador de objetos

Para usar o manipulador de objetos, primeiro adicione o ObjectManipulator componente de script a um GameObject. Certifique-se de também adicionar um colisor ao objeto, correspondendo aos limites que podem ser capturados.

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

O comportamento físico pode ser habilitado para o manipulador de objetos adicionando um componente rigidbody ao objeto . O comportamento físico habilitado pela adição desse componente é discutido com mais detalhes em Física e colisões.

Além disso, a manipulação pode ser restrita adicionando componentes de restrição de manipulação ao objeto . Esses são componentes especiais que funcionam com manipulação e alteram o comportamento de manipulação de alguma forma.

Usando o manipulador de manipulação no editor do Unity

Propriedades e campos do inspetor

Estrutura manipuladora de objetos

Propriedades gerais

Transformação do host

A transformação de objeto que será manipulada. O padrão é o objeto do componente.

Tipo de manipulação

Especifica se o objeto pode ser manipulado usando uma mão ou duas mãos. Como essa propriedade é um sinalizador, ambas as opções podem ser selecionadas.

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

Permitir manipulação distante

Especifica se a manipulação pode ser feita usando interação distante com ponteiros.

Propriedades de manipulação com uma mão

Modo de rotação de uma mão próximo

Especifica como o objeto se comportará quando ele estiver sendo agarrado com uma mão próxima. Essas opções só funcionam para mãos articuladas.

  • Girar sobre o centro de objetos: o objeto gira usando a rotação da mão, mas sobre o ponto central do objeto. O objeto parecerá mover-se menos à medida que gira, mas pode haver uma sensação de desconexão entre a mão e o objeto. Mais útil para interação distante.
  • Girar sobre o ponto de captura: gire o objeto com a mão sobre o ponto de captura entre o polegar e o dedo indicador. Deve parecer que o objeto está sendo mantido pela mão.

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

Especifica como o objeto se comportará quando ele estiver sendo agarrado com uma mão à distância. Essas opções só funcionam para mãos articuladas.

  • Girar sobre o centro de objetos: gire o objeto usando 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 gira.
  • Girar sobre o ponto de captura: gire o objeto usando a rotação da mão, mas sobre o ponto de ocorrência do raio 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. Como essa propriedade é um sinalizador, qualquer número de opções pode ser selecionado.

  • Mover: a movimentação é permitida se selecionada.
  • Escala: o dimensionamento é permitido se selecionado.
  • Girar: a rotação é permitida se selecionada.

Manipulador de manipulação

Restrições

Habilitar restrições

Essa configuração habilitará o gerenciador de restrições vinculado. As alterações de transformação serão processadas por restrições registradas no gerenciador de restrições selecionado.

Gerenciador de restrição

A lista suspensa permite selecionar qualquer um dos gerenciadores de restrições anexados. O manipulador de objetos garante que haja um gerenciador de restrições anexado o tempo todo. Observe que vários componentes do mesmo tipo aparecerão com o mesmo nome no Unity. Para facilitar a distinção entre vários gerenciadores de restrições no mesmo objeto, as opções disponíveis mostrarão uma dica sobre a configuração do gerenciador de restrições selecionado (seleção manual ou de restrição automática).

Ir para o componente

A seleção do gerenciador de restrições vem com um botão Ir para o componente . Esse botão fará com que o inspetor role até o componente selecionado para que ele possa ser configurado.

Física

As configurações nesta seção aparecem somente quando o objeto tem um componente RigidBody.

Comportamento da versão

Especifique quais propriedades físicas um objeto manipulado deve manter após a liberação. Como essa propriedade é um sinalizador, ambas as opções podem ser selecionadas.

  • Manter Velocidade: quando o objeto for liberado, se essa opção for selecionada, ele manterá sua velocidade linear.
  • Mantenha Angular Velocidade: quando o objeto for liberado, se essa opção for selecionada, ele manterá sua velocidade angular.

Usar forças para manipulação próxima

Se as forças físicas são usadas para mover o objeto ao executar manipulações próximas. Definir isso como false fará com que o objeto se sinta mais diretamente conectado à mão dos usuários. Definir isso como true respeitará a massa e a inércia do objeto, mas poderá parecer que o objeto está conectado por meio de uma mola. O padrão é false.

Suavização

Suavizando longe

Se a suavização independente de taxa de quadros está habilitada para interações distantes. A suavização distante está habilitada por padrão.

Suavizando perto

Se a suavização independente de taxa de quadros está habilitada para interações próximas. A suavização próxima é desabilitada por padrão porque o efeito pode ser percebido como sendo "desconectado" da mão.

Suavização ativa

Obsoleto e será removido em uma versão futura. Os aplicativos devem usar SmoothingFar, SmoothingNear ou uma combinação dos dois.

Mover tempo de lerp

Quantidade de suavização a ser aplicada ao movimento. Suavização de 0 significa que não há suavização. Valor máximo significa que nenhuma alteração no valor.

Girar o tempo de lerp

Quantidade de suavização a ser aplicada à rotação. Suavização de 0 significa que não há suavização. Valor máximo significa que nenhuma alteração no valor.

Tempo de leitura de escala

Quantidade de suavização a ser aplicada à escala. Suavização de 0 significa que não há suavização. Valor máximo significa nenhuma alteração no valor.

Eventos de manipulação

O manipulador 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 passa o mouse sobre o manipulável, próximo ou distante.
  • OnHoverEnded: é acionado quando uma mão/controlador passa o mouse 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, você ainda obterá eventos de foco com a seguinte ordem de incêndio:

OnHoverStarted ->OnHoverEnded

Física e colisões

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

  • Colisões entre um objeto manipulado e um colisor estático (ou seja, um objeto com um colisor, mas sem corpo rígido) não funcionam, o objeto manipulado passa diretamente 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 corpo rígido tenha uma resposta de colisão, mas a resposta é saltitante e não natural. Também não há resposta de colisão no objeto manipulado.

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

Sem corpo rígido

Sem corpo rígido

Com corpo rígido

Corpo Rígido

Elásticos (experimental)

Os elásticos podem ser usados ao manipular objetos por meio do manipulador de objetos. Observe que o sistema elástico ainda está em estado experimental. Para habilitar elásticos, vincule um componente existente do gerenciador de elásticos ou crie e vincule um novo gerenciador de elásticos por meio do Add Elastics Manager botão.

Elásticos de controle de limites

Confira também