Compartilhar via


Pegar, segurar e jogar com interacionáveis

Visão geral

Mesh Interactables é um sistema para configurar objetos com scripts do Unity que define a interação com um comportamento de objeto ou avatar em runtime. Os scripts definem as propriedades do objeto que pode ser interagido com o uso de interatores XRI. O kit de ferramentas mesh contém scripts de diferentes tipos de objeto que podem ser definidos. Quando um projeto é executado, ele configura todos os pré-fabricados e configurações necessários para que os objetos ou o avatar se comportem conforme definido. Se você quiser ver uma visualização aproximada da aparência dos objetos interacionáveis quando eles forem executados no aplicativo Mesh, certifique-se de configurar o Modo de Emulação de Malha. Observe que a funcionalidade de IK vista no aplicativo Mesh não está disponível no Modo de Emulação de Malha.

O componente De instalação interacionável de malha

Para tornar um objeto interacionável, você deve adicionar o componente Configuração Interacionável de Malha .

  1. Na Hierarquia, selecione o objeto .
  2. No Inspetor, clique no botão Adicionar Componente e selecione Configuração Interacionável de Malha.

Uma captura de tela da caixa de diálogo Adicionar Componente com o componente Configuração Interacionável de Malha selecione.

O componente é adicionado e com sua propriedade tipo de objeto padrão definida como Interacionável. (Os tipos de objeto serão explicados na próxima seção.)

Uma captura de tela do componente Instalação Interacionável de Malha com Tipo de Objeto definido como Interacionável.

As propriedades de um grupo de objetos que se comportam da mesma forma podem ser configuradas com um componente de Instalação Interacionável de Malha pai. As propriedades serão aplicadas a todas as crianças com rigidez no runtime adicionando automaticamente um componente Corpo Interativo de Malha a cada objeto filho. Talvez você queira adicionar o Corpo Interacionável de Malha manualmente para usar interacionáveis de malha com Script Visual, como com eventos de interação ou para modificar a transformação de destino manipuladora por meio do script visual.

Uma captura de tela do componente Corpo Interativo da Malha.

Observações:

  • O Corpo Interacionável de Malha permitirá que cada interacionável se comporte de forma independente.

  • Um corpo rígido deve ser adicionado a um objeto se você quiser que ele seja habilitado para física.

Tipos de objeto interacionáveis

Há quatro tipos de objeto:

  • Interativo
  • Manipuláveis
  • Equipável
  • Throwable

Para escolher um tipo de objeto:

  • No componente Configuração Interacionável de Malha , clique na lista suspensa Tipo de Objeto e selecione uma das quatro opções.

Uma captura de tela das opções de menu Tipo de Objeto no componente Corpo Interativo da Malha.

Interativo

Conforme mencionado acima, esse é o tipo padrão e o mais básico. Ele fornece acesso a retornos de chamada que podem ser invocados quando o usuário passa o mouse ou seleciona o objeto ao qual você pode fazer outros scripts reagirem. Por exemplo, se você tiver um botão que deseja usar para habilitar outro objeto, adicione esse tipo ao objeto com um retorno de chamada OnSelected para habilitar esse outro objeto. O botão será totalmente interacionável apenas adicionando esse tipo e um colisor; Você não terá que fazer mais nada.

Manipuláveis

Um objeto desse tipo pode ter sua transformação manipulada em runtime e se moverá pelo espaço no final de um raio interativo. Os controles de atalho estão disponíveis para girar ou traduzir o objeto. Para manipulação de objetos no aplicativo Mesh, você pode ativar as configurações de IK da mão avatar para seguir o objeto. Objetos manipuladores não exigem um corpo rígido, mas você deve adicionar um se quiser que os objetos tenham funcionalidades físicas.

Uma captura de tela de uma experiência de Malha com uma cafeteira sendo manipulada.

Equipável

Um objeto desse tipo será anexado à mão do avatar. Os controles do computador para equip estão clicando no objeto ou pressionando 'F' enquanto o objeto é selecionado. Os controles quest para equip estão pressionando o botão 'Grip' enquanto o objeto está selecionado. Objetos equipáveis contêm configurações para destinos de IK para a pose do braço do avatar enquanto o objeto está equipado. Os destinos de IK são um deslocamento do peito do avatar; isso determina para onde a mão vai enquanto o objeto é mantido ou ativado.

Throwable

Como o nome indica, você pode pegar e lançar um objeto desse tipo. Depois de pegar, você pode entrar no modo de mira pressionando e segurando o botão esquerdo do mouse. Isso permitirá que o braço do avatar siga o destino do mouse; para lançar o objeto, solte o botão esquerdo do mouse.

Uma captura de tela de um jogo de dardos com um dardo agarrado e lido para ser jogado.

Todos os componentes Interativos têm propriedades de interação e métodos disponíveis para o Visual Scripting para que você tenha uma quantidade ilimitada de maneiras de fazê-los trabalhar juntos.

Tornar objetos interacionáveis com o Visual Scripting

Se você quiser configurar reações às interações de um objeto com o Script Visual, poderá usar o componente Corpo Interativo da Malha dentro de um grafo de script com um nó para uma propriedade disponível, como OnHovered ou OnSelected, conectado a um nó OnStateChanged . Por exemplo, o grafo de script a seguir habilitará o cilindro enquanto o botão é pressionado e o desabilita quando o botão é liberado. O botão é totalmente interacionável apenas adicionando o script e um colisor; você não tem que fazer mais nada.

Uma captura de tela de um grafo de script com um corpo interacionável de malha é um nó selecionado.

Configurações

Configurações comuns a Manipuladores, Equippables e Throwables

Uma captura de tela de um componente de Instalação Interacionável de Malha com as propriedades comuns a todos os tipos de objeto realçadas.

Raio de proximidade de interação Distância mais distante que o avatar pode ser para interagir com este objeto

Configurações de IK de foco – configurações de IK a serem usadas ao passar o mouse sobre um objeto

  • Forma da Pose da Mão: a forma da pose da mão para colocar a mão do avatar ao passar o mouse sobre o objeto
  • Tamanho da Pose da Mão: tamanho da pose da mão de 0 a 1.
  • Habilitar o Rastreamento de IK: se o braço do avatar alcançará ou não o objeto ao passar o mouse usando o direcionamento de IK.
    • Restringir Esférico de IK: se verdadeiro, a IK do braço será feita em uma esfera. Isso fará com que o braço do avatar não se atenha diretamente.

Realçar Configurações

  • Focalizado/Selecionado: se deseja ou não realçar o objeto se ele estiver realçado ou selecionado.

  • Mecanismo de Realce

    • Item de menu 1: Propriedades do sombreador

      • Realce Cor: a cor para definir as propriedades de cor do material quando o objeto é realçado.
      • Realçar Duração da Transição: a quantidade de tempo para esmaecer o realce de entrada/saída durante a transição.
      • Realçar Propriedades do Valor: as propriedades do material para definir a quantidade de realce quando realçado. Esse é um valor float.
      • Realçar Propriedades de Cor: as propriedades do material para definir a cor do realce quando realçado. Esse é um valor de cor.
    • Item de menu 2: Estrutura de Tópicos de Malha: adiciona uma estrutura de tópicos automática da cor/largura especificada aos objetos.

      • Realce Cor: a cor da estrutura de tópicos.
      • Realçar a Duração da Transição: a quantidade de tempo para esmaecer a estrutura de tópicos durante a transição.
      • Realçar Largura da Estrutura de Tópicos: quão grossa (em metros) deve ser a estrutura de tópicos. Substitui o "Valor de Extrusão" no material de Ferramentas Gráficas/Standard.
      • Material de Estrutura de Tópicos Personalizado: o material usado para renderizar a estrutura de tópicos.
      • Material de gravação de estêncil personalizado: o material usado grava um valor no buffer de estêncil
      • Modo de Exclusão de Estrutura de Tópicos: opção para filtrar renderizadores que você não deseja incluir na estrutura de tópicos.
    • Item de menu 3: Brilho Interno: aplica um realce com um efeito de brilho usando as propriedades fornecidas.

      • Realce Cor: a cor do brilho interno.
      • Realçar a Duração da Transição: a quantidade de tempo para esmaecer o brilho interno ao fazer a transição
      • Material de realce personalizado: substitua a opção específica a esse objeto para definir o material usado para o brilho. Se isso não estiver definido, o material padrão do ativo de configurações será usado.
      • Cadeia de caracteres de exclusão: Se isso estiver definido, qualquer Objeto de Jogo com um nome que contenha a cadeia de caracteres de exclusão será excluído do realce.

Configurações exclusivas para Manipuladores

Uma captura de tela do componente Configuração Interacionável de Malha com as configurações manipuladas exibidas.

  • Modo de Força: O modo a ser usado para forçar o objeto por meio do espaço
    • Padrão: Comportamento padrão do MRTK que move o objeto usando seu centro.
    • Point Spring: Comportamento alternativo que move o objeto aplicando força em um ponto de captura (funciona apenas para rigidcorpos)
  • Rotação (disponível somente para o modo Padrão)
    • Habilitado: se o objeto pode ou não ser girado durante a manipulação. Cada eixo pode ser definido individualmente.
    • Lógica de rotação de manipulação
      • Padrão: ao manipular um objeto, ele girará ao redor da câmera e permanecerá na mesma orientação em relação à câmera (os valores reais de transformação girarão).
      • Restritivo: ao manipular um objeto, ele não girará sua transformação e não permanecerá na mesma orientação em relação à câmera.
  • Tradução (disponível somente para o modo Padrão) =Habilitado: se o objeto pode ou não ser traduzido durante a manipulação. Cada eixo pode ser definido individualmente.
  • Point Spring (disponível apenas para o modo Point Spring)
    • Força da primavera: A força da mola que puxa o objeto. Quanto maior o valor, mais rápido ele atingirá o ponto de destino.
    • Fator de amorteceção: Quanta umidade é aplicada para evitar oscilação ao redor do ponto de captura.
  • Modificar Transformação de Destino: Dá ao usuário a opção de substituir a transformação padrão e definir a posição e a rotação desejadas do objeto em relação à câmera/avatar enquanto o objeto está selecionado. Quando isso é definido como Habilitado, você obtém as três propriedades a seguir:
    • Espaço de Destino:
      • Espaço local da câmera: Se é necessário especificar a posição e a rotação no espaço local da câmera.
      • Espaço Local do Avatar: Se é necessário especificar a posição e a rotação no espaço local do avatar.
    • Nova posição de destino: Nova posição de destino (o componente z é a direção para onde a câmera/avatar está voltada)
    • Nova rotação de destino: Nova rotação de destino
  • Avatar IK
    • Forma da Pose da Mão: a forma da pose da mão para colocar a mão do avatar ao manipular o objeto
    • Tamanho da pose da mão: tamanho da pose da mão de 0 a 1.
    • Habilitar Acompanhamento de IK: se o braço do avatar alcançará ou não o objeto durante a manipulação usando o direcionamento de IK.
      • Restringir Esférico de IK: se for verdadeiro, o arm IK será feito em uma esfera. Isso fará com que o braço do avatar não fique de fora.

Configurações compartilhadas por Equippables e Throwables

Uma captura de tela do componente Configuração Interacionável de Malha com as configurações comuns a Equippables e Throwables realçadas.

  • Deslocamento de interação: O deslocamento de posição e rotação em relação à mão do avatar para colocar o objeto.
  • Pose de Destino de Equip
    • Posição: a distância do peito do avatar para colocar a mão quando um item está equipado.
    • Rotação: a quantidade para girar o pulso quando um item está equipado.
  • Pose da Mão Segura:
    • Forma da Pose da Mão: Este é um menu suspenso que fornece uma variedade de formas de pose de mão para colocar a mão do avatar quando equipado. Você também pode escolher nenhum.
    • Tamanho da pose da mão: Tamanho da pose da mão de 0 a 1.

Configurações exclusivas para Equippables

Uma captura de tela do componente Configuração Interacionável de Malha com as configurações equipáveis exibidas.

  • Ativar Configuração
    • Tipo de ativação: Quando definir o item como ativo. Objetos que podem ser lançados não podem ser ativados e sempre terão o tipo ativado definido como nenhum.
      • Nenhum: este item não pode ser ativado.
      • Alternar: Este item alterna entre ativo/não ativo sempre que o controle de ativação é clicado.
      • Único: Esse item é ativado quando o controle de ativação é clicado e desativado automaticamente quando atinge sua última pose de destino.
    • Ativar poses de destino: Uma lista de poses de destino usadas para colocar a mão do avatar quando um item é ativado. Cada pose consiste em quatro propriedades: Posição, Rotação, Tempo de Interpolação e Curva de Animação. Os deslocamentos de posição e rotação são relativos ao peito do avatar. O avatar interpolará usando a curva de animação da pose anterior para a atual sequencialmente abaixo da lista pela quantidade de tempo definida no tempo de interpolação, permanecendo na pose final até ser desativada. Quando desativada, a pose da mão do avatar se moverá para trás na lista.

Configurações exclusivas de Throwables

Uma captura de tela do componente Configuração Interacionável de Malha com as configurações de Throwable exibidas.

Configuração de destino:

  • Extensão arm no objetivo – o valor para estender o braço quando estiver no modo de mira.
  • Pose da Mão de Mira:
    • Forma da Pose da Mão: A forma da pose da mão para colocar a mão do avatar ao mirar.
    • Tamanho da pose da mão: Tamanho da pose da mão de 0 a 1.
  • Rotação da Mão de Mira: A rotação da mão ao mirar
  • Gerar Pose de Mão:
    • Forma da Pose da Mão: A forma da pose da mão para colocar a mão do avatar quando o lançamento é liberado
    • Tamanho da pose da mão: Tamanho da pose da mão de 0 a 1.
  • Vr Min Throw Velocity: A velocidade mínima a ser aplicada a um objeto quando lançada na Solicitação.
  • Velocidade máxima de lançamento de VR: A velocidade máxima a ser aplicada a um objeto quando gerada na Solicitação. Esse é o valor de velocidade usado no computador. Em Solicitação, a velocidade será dimensionada com base no movimento físico do braço do usuário.

Na Solicitação, a velocidade aplicada quando um objeto é lançado será dimensionada entre os valores mínimo e máximo usando a velocidade real do movimento do braço do usuário.

  • Configurações 2D
    • Velocidade de lançamento 2D: a velocidade a ser aplicada a um objeto quando ele é lançado no computador.
    • Deslocamento de Direção de Lançamento: um deslocamento direcional a ser aplicado a um objeto quando ele é lançado no computador.
  • Gerar poses de destino: Uma lista de poses de destino usadas para colocar a mão do avatar quando um item é lançado. Os deslocamentos de posição e rotação são relativos à posição da mão do avatar quando o lançamento foi iniciado. O avatar interpolará usando a curva de animação da pose anterior para a atual sequencialmente abaixo da lista pela quantidade de tempo definida no tempo de interpolação. O objeto será liberado e a pose da mão de lançamento será usada no segundo ao último destino.

Script visual

Para todos os corpos interacionáveis:

  • Propriedades
    • IsHovered (somente leitura) – se o avatar local está focalizando ou não o objeto.
    • IsSelected (somente leitura) – se algum avatar está ou não selecionando o objeto. Ao executar no MeshBrowser, isso será em rede.
    • IsSelectedLocally – se o avatar local está ou não selecionando o objeto.
    • IsMine (somente leitura) – True para o último avatar selecionar ou equipar o objeto.

Para Equippables:

  • Propriedades
    • EquippedAt (somente leitura) – onde este objeto está equipado – None, DefaultHand, RightHand, LeftHand. Ao executar no MeshBrowser, isso será em rede.
    • EquipTime (somente leitura) – que horas este objeto foi equipado. Ao executar no MeshBrowser, isso será em rede.
    • IsActivated (somente leitura) – se esse objeto estiver no estado ativado. Válido somente para objetos que não podem ser lançados. Ao executar no MeshBrowser, isso será em rede.
    • IsAiming (somente leitura) – se o avatar local estiver no estado de mira enquanto mantém esse objeto. Válido somente para throwables.
    • IsThrowing (somente leitura) – se o avatar local estiver lançando ativamente o objeto. Válido somente para throwables.
    • IsEquipped (somente leitura) (somente leitura) – se este objeto estiver equipado atualmente por um avatar. Ao executar no MeshBrowser, isso será em rede.
    • IsThrowable – se esse objeto for throwable.
    • ThrowVelocity – a velocidade para lançar o objeto quando ele é liberado.

Para manipuladores para modificar a Posição de Destino:

  • Posição de destino (somente leitura): posição de destino do corpo ao usar o Modo de Força Padrão em Propriedades Interacionáveis da Malha
  • Rotação de destino (somente leitura): rotação de destino do corpo ao usar o Modo de Força Padrão em Propriedades Interacionáveis da Malha
  • Ray Hit Position (somente leitura): posição do hit de conversão de raios do interator no corpo
  • Ray Hit Rotation (somente leitura): a rotação do interagente em torno da direção do raio
  • Posição de destino modificada (leitura e gravação): usada para definir a nova posição de destino pelo script visual. Isso substituirá a posição de destino padrão. A melhor prática é substituir essa propriedade:
    • Usando o Estado Ativado alterado da posição de destino. Nesse caso, o script visual disparará um fluxo somente quando o interagente e a nova posição tiver sido alterada.
    • Usando a atualização em atraso. Se você precisar alterar a transformação de destino em cada quadro, faça-a em atualização tardia para que a nova transformação de destino esteja disponível imediatamente no próximo quadro.
  • Rotação de destino modificada (leitura e gravação): usada para definir a nova rotação de destino pelo script visual. Isso substituirá a posição de destino padrão.

Configurações

Modificar com o Script Visual: Habilite isso para modificar a transformação de destino para corpos manipuladores usando script visual. Modify-with-visual-script

Próximas etapas