Manipulador de objetos – MRTK2
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.
Propriedades e campos do inspetor
![Estrutura do Manipulador de Objetos](../images/object-manipulator/mrtk_objectmanipulator_structure.png?view=mrtkunity-2022-05)
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.
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](../images/object-manipulator/mrtk_physicsmanipulation_norigidbody.gif?view=mrtkunity-2022-05)
Com um corpo rígido
![Corpo Rígido](../images/object-manipulator/mrtk_physicsmanipulation_rigidbody.gif?view=mrtkunity-2022-05)
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](../images/bounds-control/mrtk_boundscontrol_elastics.png?view=mrtkunity-2022-05)