Yeti Tutorial 11 - Caches & Simulation

Caches & Simulation

O Yeti possui dois sistemas na qual armazena um cache dos fios para que possa ser transferido para outras cenas ou usado em um modelo animado:

  • .grm: É um formato na qual todo o grafo do Yeti, assim como seus inputs de geometria, penas e sets, é armazenado em um arquivo estático.
  • .fur: Formato na qual cada frame é congelado e salvo sequencialmente, útil para salvar sequências de animações ou simulações.

Para usar um cache .grm é necessário uma licença ativa de Yeti, enquanto o .fur não necessita.

Texture Reference Object

Antes de exportar ou importar qualquer arquivo .grm, é necessário se ter um Texture Reference Object da malha que receberá este formato de cache. É uma cópia da malha original, porém esta ficará na pose original e nunca será movida ou deformada. Ela será uma referência de onde estavam as faces e vértices da malha antes da deformação, assim ela poderá indicar onde estas mesmas faces e vértices se encontram na malha deformada. Então, é obrigatório que ambas as malhas possuem o mesmo número e ordem de vértices, ou seja, sejam topologicamente idênticas. Desta maneira os fios acompanharão a animação da malha de maneira correta.

Para criar um Texture Reference Object vá em Rendering->Texturing->Create Texture Reference Object com sua malha sem deformações. Todas as conexões necessárias serão criadas automaticamente desta maneira.

Caso queira trocar um Texture Reference Object por outra malha:

  • Habilite o display de shapes;
  • Vá em Windows->General Editors->Connection Editor;
  • Selecione o shape da nova malha que irá se tornar o Texture Reference Object e clique em Reload Left;
  • Selecione o shape da malha original que será deformada e clique em Reload Right;
  • Vá no menu Left Display e Right Display e habilite a opção Show Hidden;
  • Selecione o atributo message do lado esquerdo e o atributo referenceObject do lado direito e depois clique em Close;
  • Agora é só esconder a malha do Texture Reference Object e trancar os seus parâmetros.

Cache do tipo .grm

Para exportar manualmente (sem utilizar comandos da Pipeline), selecione o node de Yeti que deseja exportar e vá no menu Yeti->Export Groom from Selected Yeti Node.

Referenciando arquivos .grm:

Para referenciar manualmente (sem utilizar comandos da Pipeline), selecione a malha que irá receber o .grm e crie um novo node de Yeti nele. Vá na aba I/O->Input do node do Yeti e escreva o caminho para o .grm que irá utilizar. Troque o Input Mode de None para Cache para ativar o .grm. Há duas maneiras de se utilizar este tipo de cache:

  • Com a opção Override Cache With Inputs desligada: neste caso será trazido o cache exatamente como foi gerado. Se houver animações ou deformações na malha, ele irá ignorar e permanecerá estático sempre.
  • Com a opção Override Cache With Inputs ligada: os inputs (objects e guide sets) serão atualizados com os encontrados no node atual que tenham o mesmo nome. Esta opção permite que os fios acompanhem as deformações da malha e fique animado. Porém, simulações e alterações na tree não são possíveis. Para que sejam possíveis, é necessário importar o .grm para a cena ao invés de referenciá-lo pelo I/O.

Caso ocorram erros na hora de usar o .grm, verificar:

  • Se todos os FaceSets existem na malha atual;
  • Se todos os Guide Sets existem na cena e estão adicionados no Input Guide Sets;
  • Se todas as Variáveis Globais Customizadas estão criadas no node do Yeti;
  • Se todas as geometrias utilizadas estão adicionadas no Input Objects (penas não precisar estar adicionadas neste caso, apenas quando se importa o .grm);

Importante: Até a versão atual deste tutorial existe um problema relacionado ao caminho do Input Cache File Name. Caso ele aponte um erro de que o caminho está incorreto e ele estiver relativo ao projeto, reescreva o caminho por extenso de maneira absoluta.

Importando arquivos .grm:

Para importar um arquivo .grm manualmente (sem utilizar comandos da Pipeline), realize o procedimento acima para referenciar o .grm pelo I/O com a opção Override Cache With Inputs ativada e o Input Mode como Cache. Vá no menu Yeti->Import Groom From Selected Yeti Node. Isto trará todos os Grooms que o .grm possuir.

Importe as penas e adicione-as no Input Objects do node do Yeti se precisar. Por fim, mude o Input Mode de volta para None para desbloquear a tree do Yeti e os Grooms importados.

Simulação e Caches do tipo .fur

Podemos realizar uma simulação sobre as guias do Groom. Como estão guias direcionam os fios pelo node de Comb, estes também acompanharão sua simulação.

Geralmente realizamos a simulação em uma cena separada específica para isso, que irá conter a malha animada ou por Rig ou por um Alembic. Então precisamos importar o cache .grm de cada node de Yeti para poder simulá-lo. Se a malha estiver animada, deve haver um Texture Reference Object.

Para iniciar uma simulação, ativar o botão Simulation no Groom. Podemos editar seus parâmetros, aumentar a resolução da simulação através do campo Iterations e adicionar objetos para colisão ou fields do Maya que irão interagir com a simulação.

É possível criar atributos específicos no Groom para controlar a simulação diretamente, sem precisar alterar nada no grafo. Um deles é o sim_simulate, que desliga a simulação quando seu valor é inferior a 0,5.

Os parâmetros podem ser controlados cada um por um atributo específico, no formato sim_nomeParametro. Um exemplo é controlar o stiffness geral pelo atributo sim_stiffness. Note que este atributo será multiplicado pelo valor que o parâmetro possuir, e não sobrescrevê-lo.

Podemos ajustar o penteado do Groom utilizando um Groom Corretivo. Para criá-lo, ir na aba Corrective Grooming do node superior do Yeti, selecionar em qual Groom será aplicado e clicar em Add Corrective Groom. Um novo Groom será criado exatamente igual ao original, e os ajustes poderão ser feitos nele. Para ativá-lo ou mesmo animar a sua influência, ir na aba Corrective Groom do Groom Corretivo, ativar a opção Corrective Groom e colocar seu valor de influência.

Após a simulação ser feita, é necessário salvar um cache no formato .fur para que possa ser renderizada corretamente. Para isso, ir na aba I/O do node superior do Yeti e colocar o caminho que este cache será salvo em Output Cache File Name.

Utilizar o símbolo % seguido de 04d para que cada frame seja salvo com a quantidade de casas especificadas, neste caso 4. Não esquecer de colocar a extensão do arquivo no final: .fur. Podemos desligar a opção Update Viewport para que seja mais rápido exportar este cache ou se estiver dando erros (crashes).

Arquivo de Exemplo: Simulação.ma

Arquivo de Exemplo: Simulation_Corrective_Groom.ma

Importante: Durante a simulação, podem ocorrer problemas na qual uma guia ou fio ou instância fica instável (flicks). Existem algum fatores que podem causar esse problema. Algumas coisas a serem verificadas neste caso:

  • Se o número de iterações da simulação é suficiente: em casos de movimentos muito rápidos ou com algumas colisões, é necessário subir este número consideravelmente.
  • Se o tamanho dos fios ou instâncias é menor do que das guias do Groom: caso for maior, o node de Clumping poderá ficar instável se a opção Conform estiver desligada. No caso de instâncias, a orientação poderá ser perdida fazendo o objeto rotacionar em alguns frames.
  • Se o Up Vector é o responsável pela instabilidade nos nodes que é usado: usar o vetor Tangent como Up Vector pode às vezes ocasionar este problema. Neste caso, trocar pelo vetor Normal ou por outro vetor customizado estável.
  • Se a geometria do personagem sofre deformações extremas ou uma face cruza outra (overlapping): neste caso, poderá ser feito um blendshape da geometria para suavizar esta deformação até não causar mais instabilidade.
  • Se alguma geometria usada para colisão atravessa a malha do personagem.

Anterior: 10. Feathers Próximo: 12. Study Case: Bachoco