Manipulador de objetos — MRTK2
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.
Propriedades e campos do inspetor
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.
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
Com 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.