Sistema elástico — MRTK2

Sistema elástico

O MRTK vem com um sistema de simulação elástico que inclui uma ampla variedade de subclasses extensíveis e flexíveis, oferecendo associações para molas quatérnios quadridimensionais, molas de volume tridimensionais e sistemas de mola linear simples.

Atualmente, os seguintes componentes do MRTK que dão suporte ao gerenciador de elásticos podem aproveitar a funcionalidade de elásticos:

Gerenciador de elásticos

Sistema Elástico2

Os processos passados pelo gerenciador de elásticos os transformam e os alimentam no sistema elástico.

A habilitação de elásticos para componentes personalizados pode ser obtida por duas etapas:

  1. Chamando o método Initialize no início da manipulação, atualizando o sistema com a transformação de host atual.
  2. Consultando ApplyHostTransform sempre que um cálculo elástico deve ser executado na transformação de destino atualizada.

Observe que os elásticos continuarão simulando quando a manipulação terminar (por meio do loop de atualização do gerenciador de elásticos). Para bloquear o comportamento, a atualização automática de elásticos EnableElasticsUpdate pode ser definida como false.

Por padrão, o componente do gerenciador de elásticos, quando adicionado a um objeto de jogo, não terá elásticos habilitados para qualquer tipo de transformação. O campo Manipulation types using elastic feedback precisa ser habilitado para tipos de transformação específicos para criar configuração de elásticos e extensões para o tipo selecionado.

Configurações de elásticos

Semelhante às configurações de controle de limites, o gerenciador elástico vem com um conjunto de objetos de configuração que podem ser armazenados como objetos scriptáveis e compartilhados entre instâncias ou pré-fabricados diferentes. As configurações podem ser compartilhadas e vinculadas como arquivos de ativos scriptáveis individuais ou ativos aninhados que podem ser scripts dentro de pré-fabricados. Outras configurações também podem ser definidas diretamente na instância sem vincular a um ativo scriptável externo ou aninhado.

O inspetor do gerenciador de elásticos indicará se uma configuração é compartilhada ou embutida como parte da instância atual mostrando uma mensagem no inspetor de propriedades. Além disso, as instâncias compartilhadas não poderão ser editadas diretamente na própria janela de propriedades do gerenciador de elásticos, mas, em vez disso, o ativo ao qual ele está vinculando precisa ser diretamente modfeito para evitar alterações acidentais nas configurações compartilhadas.

O Gerenciador de Elásticos oferece opções de objetos de configuração para os seguintes tipos de transformação, cada um deles representado por um objeto de configuração elástica:

  • Elástico de Tradução
  • Rotação elástica
  • Dimensionar Elástico

Objeto de configuração elástica

Uma configuração de elástico define propriedades para um sistema diferencial de oscilador harmônico úmido. As propriedades a seguir podem ser ajustadas, mas já vêm com um conjunto de padrões no MRTK:

  • Massa: massa do elemento oscilador simulado.
  • HandK: constante de mola manual.
  • EndK: constante de mola da tampa de fim.
  • SnapK: constante de mola do ponto de ajuste.
  • Arrastar: fator drag/damper, proporcional à velocidade.

Extensões elásticas

As configurações de extensões elásticas variam dependendo do tipo de manipulação. A tradução e a escala são representadas por extensões elásticas de volume e a rotação é representada por uma extensão elástica de quatérnio.

Extensão elástica do volume

As extensões de volume definem um espaço tridimensional no qual o oscilador harmônico úmido é livre para mover.

Limites de alongamento de volume elástico

  • StretchBounds: representa os limites inferiores do espaço elástico.
  • UseBounds: se os limites de alongamento devem ser respeitados pelo sistema. Se for true, quando a iteração atual da posição de destino estiver fora dos limites estendidos, a força final será aplicada.
  • SnapPoints: aponta dentro do espaço para o qual o sistema será ajustado.
  • RepeatSnapPoints: repete os pontos de ajuste para infinito. Os pontos de ajuste existentes servirão como um módulo em que os pontos de ajuste reais são mapeados para os múltiplos inteiros mais próximos de cada ponto de ajuste.
  • SnapRadius: distância na qual os pontos de ajuste começam a forçar a mola.

Grade de Ajuste de Volume Elástico

Extensão elástica quatérnio

As extensões quatérion definem um espaço de rotação quadridimensional no qual o oscilador harmônico úmido é livre para girar.

Exemplo de rotação elástica

  • SnapPoints: ângulos de euler aos quais o sistema será ajustado.
  • RepeatSnapPoints: repete os pontos de ajuste. Os pontos de ajuste existentes servirão como um módulo em que os pontos de ajuste reais são mapeados para os múltiplos inteiros mais próximos de cada ponto de ajuste.
  • SnapRadius: ângulo de arco no qual os pontos de ajuste começam a forçar a mola em graus euler.

Cena de exemplo de elásticos

Você pode encontrar exemplos de configurações de elásticos na ElasticSystemExample cena.

Cena de exemplo de elásticos