Introdução ao sistema Simulação de Tecido com Aprendizado de Máquina
O sistema "Simulação de tecido com aprendizado de máquina (ML)" proporciona uma simulação de tecido em tempo real, de alta fidelidade e com ótimo desempenho na Unreal Engine.
O sistema tem maior fidelidade do que modelos tradicionais baseados em física. Ele usa um conjunto de dados treinados que podem ser usados em tempo real para a geração de resultados que até então eram obtidos apenas com simulação off-line.
Benefícios do uso do aprendizado de máquina
No desenvolvimento de jogos tradicional, você simula a vestimenta de personagens usando um solucionador de física. No entanto, esse processo pode exigir muito do computador devido às demoradas atualizações de elasticidade e às complicadas interações entre o tecido e o corpo.
Um sistema com aprendizado de máquina auxilia os usuários no treinamento de um modelo usando dados de simulação de alta qualidade gerados com antecedência. Esse sistema consegue produzir malhas de vestimenta de qualidade semelhante a dados pré-simulados, com maior rapidez e eficiência no uso da memória.
Implementação técnica
Para cada quadro, o sistema Simulação de tecido com ML pega a pose esquelética do personagem como entrada e prevê uma pose de tecido final. Para isso, ele deforma uma malha de tecido base usando revestimento de mesclagem linear. A deformação tem dois componentes principais.
O primeiro componente é uma deformação de baixa frequência semelhante ao modelo de morfo neural.
Esse componente é modelado com uma rede perceptron multicamada (MPC), que prevê um conjunto de coeficientes de PCA usando a pose da malha do esqueleto como entrada. Os deltas de baixa frequência são calculados como:
low_frequency_deltas = mean_delta + coeffs * basisOs fundamentos podem ser aprendidos no momento do treinamento ou pré-calculados ao usar análise de componentes principais (PCA).
Para treinar esse componente, prepare um conjunto de dados com poses aleatórias e simule vestimentas para se ajustarem a cada pose. Para esse componente, recomendamos 5000 poses para um personagem humanoide.
O segundo componente é uma deformação de alta frequência computada usando uma pesquisa do vizinho mais próximo.
Esse componente pega os coeficientes do primeiro componente e aplica a uma pesquisa do vizinho mais próximo em um conjunto de dados de vizinho mais próximo, ou seja:
high_frequency_deltas = NearestNeighborSearch(coeffs)Para esse componente, prepare um conjunto pequeno de poses diversas e simule vestimentas para se ajustarem a cada pose. O ideal é que as poses sejam selecionadas de alguns quadros-chave das animações no jogo. Para o melhor resultado, recomenda-se de 50 a 100 poses para um personagem humanoide.
Com essa técnica, calcula-se o delta de vértice da seguinte maneira:
vertex_delta = low_frequency_deltas + high_frequency_deltasPara o conjunto de dados treinado, gere a posição final de tecido para cada pose usando a ferramenta Chaos Cloth Generator no Editor ML Deformer da Unreal Engine. Isso simulará o tecido e gerará um cache de geometria que pode ser usado em tempo real.
Você também pode usar solucionadores externos de simulação de tecido (como Vellum do Houdini). Para cada pose, simule o tecido até que fique ajustado e salve o tecido no cache de geometria. Importe o cache como um arquivo Alembic à Unreal Engine.
Siga o tutorial Geração de tecido com ML para aprender a gerar o cache de geometria na Unreal Engine.
Para obter os melhores resultados, selecione de forma manual as poses mais relevantes para o conjunto de dados. No entanto, é possível fazer uma seleção automática de poses com o KMeans Pose Generator. O gerador pega uma sequência de animação e executa o algoritmo KMeans para gerar uma lista de entradas para o conjunto de dados de vizinho mais próximo.
Limitações atuais
A implementação atual do sistema tem uma limitação principal: a vestimenta é considerada quase estática. Ou seja, o sistema prevê detalhes de formato, como vincos, mas não prevê movimento dinâmico como balanço ou drapeado.
No momento, esse sistema funciona melhor para vestimentas ajustadas, como calças e camisetas, mas não para vestimentas soltas, como vestidos ou capas.
Saiba como usar o sistema de tecido com ML seguindo o tutorial ML Deformer - Modelo de vizinho mais próximo na Comunidade de Desenvolvedores da Epic.