Neste guia, você aprenderá a definir a simulação de carne do Chaos usando um ativo de estrela-do-mar fornecido.
Configuração do arquivo
Exemplo de arquivo de referência
As informações a seguir detalham onde baixar o arquivo de exemplo e onde colocá-lo em seu projeto.
Criar projeto em branco no inicializador
Para usar o arquivo fornecido, você precisa criar um projeto da UE em branco no inicializador.
Versão do editor
Certifique-se de estar usando a versão 5.5.0-37670630+++UE5+Release-5.5 ou mais recente.
Download de arquivo
Download Fleshtutorials-ExampleContent.7z.
O arquivo também contém uma pasta ".fbx" usada para a seção Projeções de raios vinculadas ao Rig deste guia.
Pasta "Exemplo de conteúdo"
Extraia o arquivo .zip "Fleshtutorials-ExampleContent.7z". Em seguida, mova manualmente a pasta ExampleContent extraída para o diretório Content.
Se você já tiver uma pasta ExampleContent possivelmente seguindo alguns exemplos de tecido anteriores, basta arrastar a pasta 5_5_ChaosFlesh do arquivo compactado para a pasta ExampleContent.
Carregar plugins
Primeiro, você precisará ativar o plugin Chaos Flesh.
Em seguida, carregue os plugins ML Deformer Framework e ML Deformer Neural Morph Model
Início da estrela-do-mar
Configuração rápida
O sistema de carne implementa uma simulação de elasticidade volumétrica usando uma estrutura de suporte tetraédrica. Os tetraedros são avaliados pelo solucionador e fornecem forças de apoio que tentam preservar o volume e evitar que a superfície do personagem fique sob o seu próprio peso. Este exemplo descreve como criar geometria tetraédrica a partir de uma malha estática fechada (um cubo simples) e, em seguida, simular o ativo na Unreal Engine.
Importar estrela-do-mar
A simulação de carne requer uma malha tetraédrica criada a partir da geometria da superfície. Este exemplo descreve como importar a geometria do arquivo FBX e criar uma malha tetraédrica da estrela-do-mar usando nós de fluxo de dados.
Restrições
Importar ativo de carne e cinemáticas simples
As restrições cinemáticas permitem que os artistas controlem os vértices por meio de animação. As cinemáticas são definidas nos vértices do tetraedro. Quando um vértice for definido como uma cinemática, as propriedades de massa para esse vértice serão definidas como massa infinita e não serão simuladas. Vértices cinemáticos podem ser usados como condições de limite para a dinâmica, onde os vértices livres conectados a eles serão conduzidos pelo movimento da cinemática. Este exemplo descreve como preencher e restringir cinematicamente a partícula para que ela permaneça fixa no espaço, em relação à posição do componente.
Transferência de atributos de vértice
A malha tetraédrica é suscetível a alterações, e o progresso da pintura nessa malha será inválido após qualquer alteração na topologia. Este exemplo mostra como pintar na malha esquelética e transferir atributos do vértice (atributo e cor pintada) para a malha tetraédrica.
Restrição do esqueleto cinemático
Transformações de esqueleto também podem ser usadas para definir cinemáticas. Um caso de uso típico envolve anexar um componente de carne a um esqueleto. Quando o componente de carne estiver colocalizado no espaço do local do esqueleto, os vértices no tetraedro que se cruzam com o esqueleto (segmentos de linha de pai-filho) serão restritos com cinemática. Este exemplo mostra como definir automaticamente vértices cinemáticos no ativo de estrela-do-mar com base em seu esqueleto colocalizado.
Restrição cinemática animada
Quando os vértices cinemáticos forem restritos a um esqueleto animado, a geometria do tetraedro será escravizada pelo movimento do esqueleto. Este exemplo mostra a configuração envolvida na direção de uma malha de carne a partir de uma hierarquia de transformação animada.
Restrições fracas
A posição de destino, ou restrições fracas, são outra maneira de restringir a geometria a uma posição de destino. A diferença entre restrições fracas e restrições cinemáticas é que uma restrição fraca tem uma rigidez que permite um pequeno deslizamento em relação ao destino real. Ao introduzir restrições fracas em um ambiente restrito, a simulação pode encontrar um estado razoável que pode permanecer suave e visivelmente aceitável. Este exemplo mostra como vincular o ativo de carne aos destinos de articulação cinemática usando restrições fracas.
Colisões
Colisão mundial
O solucionador tetraédrico é executado separadamente do solucionador de mundos primário. De maneira semelhante ao solucionador de tecidos do Chaos, qualquer colisão contra a geometria tetraédrica precisará ser adicionada durante a simulação. Esta demonstração ilustrará como adicionar corpos de colisão no início da simulação usando um gerenciador de colisão que está anexado ao solucionador de carne.
Como transmitir colisões
Colisões contra geometria de mundo são implementadas atualmente por meio de um sistema de transmissão. O solucionador tetraédrico pode responder a um conjunto limitado de tipos de colisão que deve ser carregado e liberado com base na proximidade da simulação tetraédrica. Colisões contra o solucionador tetraédrico são implementadas como colisões baseadas em vértices contra o volume do corpo rígido. Dessa forma, à medida que a resolução do tetraedro aumenta, o custo computacional da resposta à colisão também aumentará.
Atualmente, o solucionador oferece suporte para tipos convexos e alguns tipos analíticos (esfera, cubo, plano), e a colisão é apenas unidirecional, do corpo rígido ao tetraedro. Isso significa que o tetraedro não afetará o estado do corpo rígido, e o corpo rígido é efetivamente uma cinemática, massa infinita, interação. Normalmente, a posição e a velocidade do corpo rígido serão calculadas no solucionador de corpo rígido primário, e a carne só reagirá ao movimento do corpo rígido.
Ativos de Blueprint e deformador de malha
Ativos de carne podem deformar malhas esqueléticas embutidas. Use o nó "GenerateSurfaceBindings" no gráfico de fluxo de dados do ativo de carne para criar dados de correspondência entre as superfícies de renderização da malha esquelética e uma malha tetraédrica. Em seguida, use "DG_FleshDeformer" na malha esquelética para aplicar a deformação da malha tetraédrica na malha esquelética.
Se o deformador não estiver funcionando, verifique o log para obter mais informações. Um possível problema surge quando o ator tem vários componentes de carne, e o deformador precisa ser instruído sobre qual malha esquelética deve ser deformada por qual ativo de carne. A desambiguação é realizada definindo TransformSelection ou GeometryGroupGuids no nóGenerateSurfaceBindings. A outra coisa a verificar é se ativo de carne (coleção de repouso) tem vinculações com a malha esquelética direita usando GenerateSurfaceBindings. É claro que, se a topologia da superfície de renderização ou a malha de tetraedros mudar, a vinculação precisa ser regenerada. Os pontos de renderização que não tiverem vinculação serão revestidos. Se o deformador deixar pontos para trás, eles não terão vinculação ou terão sido mascarados (o que atualmente só é feito se não houver vinculação, mas haverá nós de fluxo de dados para mascaramento no futuro).
Por atributo de partícula
Muitas das propriedades de simulação usadas pelo solucionador tetraédrico são baseadas por partícula. Por exemplo, a massa pode ser variada na malha e será salva no vértice do tetraedro simulado. Isso pode permitir que malhas tetraédricas com uniformidade variável tenham uma distribuição uniforme de massa em todo o volume da malha. A massa é apenas um exemplo de uma propriedade por partícula e ilustra como cada propriedade armazenada na partícula pode ser configurada na configuração do ativo. Esta demonstração ilustrará o uso do campo padrão por propriedade de partículas no teraedro.
Geração e destruição no Blueprint
A carne ativa também pode ser gerada durante a operação de Blueprints. O ator de Blueprint funcionará de uma forma como se fosse o ator de malha esquelética, em que você cria um componente de carne e o associa a um ativo de carne. Os nós de Blueprint Spawn e Destroy Actor poderão ser usados para adicionar e remover dinamicamente atores de Blueprint da simulação.
Resultados da simulação de amostragem
Embora a exibição de renderização para o componente de carne mostre o resultado de toda a simulação tetraédrica, às vezes pode ser útil apenas amostrar um subconjunto das deformações da simulação. Por exemplo, a renderização do deslocamento da posição no mundo (WPO) da malha Nanite na demonstração de Electric Dreams foi implementada amostrando posições perto da superfície do pneu e mapeando isso em uma textura que deslocou a geometria do pneu na GPU. Esta demonstração ilustrará como interpolar um conjunto de amostras a partir do resultado de deformação que pode ser acessado durante a jogabilidade.
Armazenamento em cache
Armazenamento em cache de fluxo de dados e deformador de ML
A simulação de carne pode ser cara. Embora um ativo de baixa resolução possa ser executado dentro de um jogo, para obter o resultados na geometria de alta resolução, a simulação tetraédrica não poderá ser executada em tempo real. O sistema de armazenamento em cache permitirá ao artista gravar o resultado de uma simulação e reproduzi-lo novamente no gráfico de fluxo de dados. No cache, também podemos gerar o cache de geometria como dados de treinamento no deformador de ML. Este exemplo ilustra como armazenar em cache o resultado da simulação, gerar cache de geometria e treinar um deformador de ML.
Armazenamento em cache no editor
Também podemos armazenar em cache no editor e visualizar as reproduções em uma sequência de nível. Este exemplo descreve como armazenar em cache um ativo de carne simulado (ou Blueprints) e inspecionar o resultado da simulação em detalhes.
Propriedades de simulação
As propriedades de simulação estão definidas em vários lugares do sistema de carne do Chaos. O solucionador tetraédrico terá propriedades que afetam todo o sistema de simulação, por exemplo, permitindo que os usuários configurem propriedades de thread e intervalos de tempo, além de controles de colisão. Enquanto as propriedades no ator de carne permitem configurações específicas de uma instância individual de um ativo, as propriedades baseadas em fluxo de dados configuram o próprio ativo. Esta demonstração aborda algumas das propriedades mais importantes da simulação e fornece uma visão geral de onde você pode esperar encontrar tipos específicos de controles.
Projeções de raios vinculadas ao Rig
Consulte o arquivo ".fbx" fornecido em Download de arquivo para seguir esta seção do guia.
Projeções de raios vinculadas ao Rig permitem que certos tipos de objetos interajam com a geometria estática no ambiente. A abordagem de projeção de raios não é uma configuração de colisão ambiental geral, mas, em configurações específicas, ela permitirá que um corpo deformável responda à geometria da cena. Por exemplo, essa configuração foi usada na demonstração de Electric Dreams para permitir que os pneus reajam à geometria da cena.
Existem alguns requisitos que precisam ser atendidos para que essa abordagem seja utilizável. Os vértices da projeção de raios precisarão ser convexos sobre um local de transformação no modelo, o componente tetraédrico precisará estar contido em um Blueprint de malha esquelética, e o ativo precisará estar restrito cinematicamente a um esqueleto. Devido ao modo como a resposta à colisão é implementada, a origem da projeção de raios deve vir de um ponto interno do modelo, e a resposta à colisão transladará o vértice em direção à origem interna, contra a direção da projeção de raios.
Fluxo de trabalho avançado
Consulte Carne do Chaos para simulação de músculo para aprender a configurar uma simulação de músculo e gordura com a carne do Chaos.