O que você está procurando?
Engine & platform

Simule robôs com mais realismo: O que há de novo em física para o Unity 2021.2 beta

ANTHONY YAKOVLEV / UNITY TECHNOLOGIESContributor
Aug 20, 2021|9 Min
Simule robôs com mais realismo: O que há de novo em física para o Unity 2021.2 beta
Esta página da Web foi automaticamente traduzida para sua conveniência. Não podemos garantir a precisão ou a confiabilidade do conteúdo traduzido. Se tiver dúvidas sobre a precisão do conteúdo traduzido, consulte a versão oficial em inglês da página da Web.

O Unity 2021.2 beta contém melhorias de usabilidade nos recursos de física que permitem novos casos de uso, ao mesmo tempo em que proporcionam criação mais fácil e depuração mais rápida no campo da robótica.

ArticulaçãoMelhorias corporais

O componente ArticulationBody está no centro da nossa simulação de robótica porque permite simular cadeias cinemáticas com alta precisão, o que é essencial para mãos robóticas, manipuladores, robótica móvel e muito mais. Ouvimos o feedback dos usuários e fizemos diversas alterações para melhorar o desempenho e a usabilidade.

As propriedades do componente ArticulationBody foram reorganizadas para melhor legibilidade. Agora, os parâmetros relacionados à massa estão em um bloco visual, seguidos pelos parâmetros relacionados às âncoras e, depois, aos acionamentos. Essas alterações foram retroportadas para o Unity 2021.1 e 2020.3.

Imagem mostrando a caixa de diálogo do corpo de articulação com fundo cinza e texto branco.

O editor ArticulationBody agora usa as mesmas ferramentas de articulação que as articulações iterativas regulares. Isso garante uma experiência consistente em todo o Editor. Além disso, também é possível editar visualmente os limites e âncoras de todas as juntas.

Gif do movimento Prismatic Joint mostrado com uma simulação de braço robótico prateado e azul

As ferramentas de junta oferecem suporte a todos os tipos de junta do ArticulationBody, porque foram estendidas para permitir a edição da junta prismática, o que não estava disponível antes. Veja este tópico do fórum para mais informações ou para fornecer feedback.

Gif do modo de detecção de colisão demonstrado com uma simulação de braço robótico azul e prata

ArticulationBody tem uma nova configuração que permite selecionar o modo de detecção de colisão. Todos os modos de detecção de colisão contínua são suportados, assim como no Rigidbody. Isso foi retroportado para 2021.1 e 2020.3, pois foi considerado essencial para certos casos de uso. Por exemplo, treinar um modelo de aprendizado de máquina para controlar um personagem humanoide para andar exigiu habilitar a detecção contínua de colisões nos pés, pois, de outra forma, nosso modelo foi capaz de aprender a usar o impulso de penetração vindo dos pés sobrepostos ao solo a seu favor: ele avançou muito mais rápido do que normalmente, e alguns padrões de voo também foram descobertos.

Variantes adicionais de ArticulationBody.AddForce foram adicionadas para corresponder àquelas em Rigidbody.AddForce. Aplique força, aceleração ou impulso diretamente. Isso facilita a migração de código pré-existente do Rigidbody para o ArticulationBody.

Melhoramos a clareza da documentação declarando explicitamente condições de contorno e casos especiais. Nesta versão, temos uma nova página para o componente ArticulationBody .

Com base no feedback do usuário, também incluímos unidades de medida para todas as propriedades voltadas para C# do componente ArticulationBody na documentação; veja mass, por exemplo.

Melhorias no editor

Continuamos investindo para tornar os pipelines gerais relacionados à física mais fáceis de usar e para fornecer mais flexibilidade para acomodar vários padrões de uso. Acreditamos que isso possibilita simulações mais sofisticadas, impulsionadas pelo fato de os criadores agora poderem usar a funcionalidade extra para entender melhor seu campo e, assim, configurar a simulação para obter resultados mais precisos.

Dito isso, o Physics Debugger agora oferece suporte adequado aos prefabs — tanto no Modo de Isolamento quanto no Modo de Contexto. Agora, ele permite usar o princípio de design de dividir para conquistar em maior extensão, observando as propriedades dos pré-fabricados isoladamente, enquanto o resto da cena não é mostrado.

Gif do sistema de detecção de colisões com simulação de objetos

Camadas físicas são uma ferramenta essencial na otimização do desempenho do sistema de detecção de colisões. Frequentemente, e especialmente em cenas grandes com muitas camadas, é melhor desabilitar todas as colisões primeiro e habilitar apenas as necessárias depois. Para habilitar esse padrão de uso, novos botões foram adicionados para alternar a detecção de colisão entre todas as camadas nas configurações de física. Isso é útil em projetos maiores, onde muitas camadas estão presentes, mas onde você pode reduzir as interações a um subconjunto menor de combinações de camadas para melhorar o desempenho.

Matriz das camadas de colisão que foram adicionadas ao profiler de física com fundo cinza e texto branco

Métricas adicionais foram adicionadas ao Physics Profiler. Agora, há mais gráficos disponíveis e o painel textual exibe mais dados sobre a simulação atual. Entre as novas adições estão o número total de consultas de física, o número de corpos de articulação e o número de transformações sincronizadas no último quadro.

Caixa de diálogo Módulos do Profiler que inclui métricas de um projeto específico

Um módulo de criação de perfil personalizado também pode ser criado para incluir apenas as métricas necessárias para um projeto específico.

Imagem da caixa de diálogo detalhada de Física que mostra a métrica de uso de memória

Por fim, o uso de memória agora também está disponível como uma métrica.

Consultas de física de cadeia fora do tópico principal

As consultas em lote de física são uma maneira de aumentar o desempenho das consultas de física (como Raycasts, por exemplo) executando-as em todos os núcleos disponíveis, em vez de normalmente executá-las todas no thread principal exclusivamente.

O ideal é que o código que depende dos resultados de uma consulta em lote seja um trabalho em C# para maximizar o aumento de desempenho. Entretanto, o principal problema que impediu que isso acontecesse foi o fato de que o impacto do colisor foi relatado como um Componente Unity (RaycastHit.collider). Nenhum dos componentes do Unity está disponível fora do thread principal, o que limita bastante a adoção de consultas em lote.

Para resolver isso, o ID da instância do Collider que foi atingido agora é exposto. IDs de instância podem ser usados livremente fora do thread principal, então não deve haver mais problemas em encadear os trabalhos de consulta.

Melhoria na fricção do remendo

O modo de atrito de patch é o modo de simulação de atrito padrão no Unity. Certamente é um compromisso em direção a um desempenho mais alto do que à precisão da simulação, mas ainda pode ser ajustado para obter resultados razoáveis dentro de um orçamento computacional apertado.

Um novo modo de atrito de patch aprimorado agora está disponível nas configurações de física. Ele aborda o problema de que quando mais de uma âncora de atrito é gerada em um par de contato, as forças de atrito podem ser até duas vezes mais fortes do que o previsto pelos modelos analíticos.

Por exemplo, no gráfico a seguir, cubos com atrito dinâmico diferente estão deslizando sobre um plano. Os cubos vermelhos mostram as posições finais esperadas, conforme previsto teoricamente. Os cubos azuis usam atrito regular e parecem percorrer cerca da metade do caminho até o objetivo. Os cubos verdes usam o novo e melhorado atrito de patch e se aproximam muito mais dos valores esperados.

Gif mostrando o modo de fricção de patch aprimorado com cubos vermelho, verde e azul
Modificação de contato

A nova API de modificação de contato já está disponível e estamos coletando feedback neste tópico do fórum. Ele permite a personalização da reação do mecanismo de física aos contatos. Para qualquer par de contato, é possível alterar os pontos de contato, limitar os impulsos aplicados pelo solucionador, ajustar as velocidades alvo e muito mais. Entre outros usos, ele permite fazer furos em qualquer colisor, criar contatos pegajosos e várias correias transportadoras movidas a física. No exemplo abaixo, a esfera cai através do plano porque ignora os pontos de contato com ele (pode ser sensível à área). À direita, um cubo está ricocheteando nos dois planos inclinados sem girar — porque a reação ao contato foi personalizada para excluir rotações.

Gif mostrando a API de modificação de contato com um círculo e um cubo
Dê vida às suas simulações

Essas melhorias garantem que os usuários gerem resultados mais realistas de suas simulações no Unity. Muitas dessas melhorias foram feitas com base em sugestões ou feedback da nossa comunidade e convidamos você a participar da conversa. Para começar a usar robótica no Unity, confira alguns dos nossos exemplos e demonstrações no Unity Robotics Hub.