Manipulador de objetos

Object manipulator

O ObjectManipulator é o novo componente para o comportamento de manipulação, encontrado anteriormente em ManipulationHandler. O manipulador de objetos faz uma série de 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 giravel usando uma ou duas mãos. O manipulador de objeto 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, HoloLens 2 raios de mão, HoloLens 1 olhar e gestos e entrada imersiva do controlador de movimento do headset.

Como usar o manipulador de objetos

Para usar o manipulador de objeto, primeiro adicione o componente de ObjectManipulator script a um GameObject. Certifique-se de também adicionar um colisor ao objeto, correspondendo aos seus limites agarráveis.

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

O comportamento físico pode ser habilitado para o manipulador de objeto adicionando um componente de corpo rígido 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.

Using the Manipulation Handler in the Unity editor

Propriedades e campos do inspetor

Object Manipulator Structure

Propriedades gerais

Transformação do host

A transformação do 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 de 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: Girar o objeto com a mão sobre o ponto de captura entre o dedo indicador e o polegar. Ele deve sentir como se o objeto estivesse 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: girar o objeto usando a rotação da mão, mas sobre o ponto central do objeto. Útil para inspecionar a uma distância sem que o centro de objetos se mova à medida que o objeto gira.
  • Girar sobre o ponto de captura: girar o objeto usando a rotação da mão, mas sobre o ponto de ocorrência do raio de ponteiro. Útil para inspeção.

Propriedades de manipulação de duas mãos

Tipo de manipulação de 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: Mover é permitido se selecionado.
  • Escala: o dimensionamento é permitido se selecionado.
  • Girar: a rotação é permitida se selecionada.

Manipulation Handler

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 gerentes de restrição 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 gerentes de restrição 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

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 versã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 Velocity: quando o objeto for liberado, se essa opção for selecionada, ele manterá sua velocidade angular.

Usar forças para quase manipulação

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 honrará a massa e a inércia do objeto, mas pode parecer que o objeto está conectado por meio de uma mola. O padrão é false.

Suavização

Suavizando muito

Se a suavização independente da 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 da 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.

Suavizando ativo

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

Mover a hora do lerp

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

Girar a hora do lerp

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

Tempo de lerp de escala

Quantidade de suavização a ser aplicada à escala. Suavização de 0 significa sem 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 focaliza o manipulável, próximo ou distante.
  • OnHoverEnded: é acionado quando uma mão/controlador passa o mouse no manipulável, próximo ou distante.

A ordem de fogo do evento para manipulação é:

OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded

Se não houver manipulação, você ainda obterá eventos de focalização 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 de 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 nenhum 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 é precipitada 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 rigidbody

No Rigid Body

Com rigidbody

Rigid Body

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 do gerenciador de elásticos existente ou crie e vincule um novo gerenciador de elásticos por meio do Add Elastics Manager botão.

Bounds Control Elastics

Confira também