A captura de movimentos (motion capture – MoCap) é uma técnica de aquisição de dados hierárquicos de movimentação 3D que podem ser utilizados em Computação Gráfica para modelagem e animação. A captura de movimento é realizada utilizando-se um conjunto de equipamentos:
- Uma roupa especial;
- Um conjunto distribuído pelo ambiente de câmeras infravermelho com holofotes infravermelhos;
- Marcadores em posições definidas, especialmente juntas do corpo, constituídos por refletores infravermelho;
- Software de tracking.
Contents
- 1 Atividade Prática da Turma: Visita aos Estúdios de Animação/Captura de Movimentos da UFSC
- 2 Como usar dados de MoCap para Modelagem de Seu Personagem
- 3 Cuidados ao Criar Personagens Animados usando Modelos Prontos da Internet
- 4 Exercício Simples em Sala: Animando o Steve com MoCap
- 5 Outro Exercício em Sala: Animando o Pokèmon Golduck
- 6 Mais um Exercício: Anime o Pokèmon Heracross usando MoCap
- 7 Exportando seu Modelo para Unity3D
- 8 Ferramentas Alternativas
- 9 Links Úteis
Atividade Prática da Turma: Visita aos Estúdios de Animação/Captura de Movimentos da UFSC
Todo semestre planejamos uma visita aos Estúdios do DesignLab da UFSC para a captura de dados de movimentação de alguns dos alunos da turma. Adiante algumas cenas de 2017.1:
A Aula de Motion Capture (MoCap) para a turma 2018.1 de INE 5420 – Computação Gráfica ganhou um post próprio. Dê uma olhada!
Como usar dados de MoCap para Modelagem de Seu Personagem
Dados de MoCap podem ser empregados diretamente em um modelador 3D para serem usados como o rigging de seu personagem. Para importar e usar dados de MoCap faça primeiro um experimento com os dados disponibilizados nesta página, carregando-os no Blender e visualizando a movimentação.
Dados de Captura de Movimento para seu Experimento (a partir de 2016.1)
- Arquivo de MoCap da Turma de INE 5420 de 2024.1 (Com o combate de espadas de membros do grupo de Artes Marciais Medievais ESCAM)
- Arquivo de MoCap da Turma de INE 5420 de 2023.2
- Arquivo de MoCap da Turma de INE 5420 de 2022.2
- Arquivo de MoCap da Turma de INE 5420 de 2019.1 – Aula de Motion Capture para a turma 2019.1 de INE 5420 – Computação Gráfica
- Arquivos de MoCap da Turma de INE 5420 de 2018.2 (Parte I, Parte II, Bicicleta) – Aula de Motion Capture com Bicicleta para a turma 2018.2 de INE 5420 – Computação Gráfica
- Arquivo de MoCap da Turma de INE 5420 de 2018.1 – Aula de Motion Capture (MoCap) para a turma 2018.1 de INE 5420 – Computação Gráfica
- Arquivo de MoCap da Turma de INE 5420 de 2017.2
- Arquivo de MoCap da Turma de INE 5420 de 2017.1
- Arquivo de MoCap da Turma de INE 5420 de 2016.1
MotionBuilder::Visualizando no MotionBuilder
Autodesk MotionBuilder agora oferece licenças gratuitas para estudantes para as plataformas Windows, MacOS e RedHat Linux. Veja no site do software.
Para saber como carregar capturas realizadas no TECMÍDIA para o MotionBuilder, observe o tutorial do Prof. Flávio Andaló, do Curso de Animação da UFSC:
Blender::Criando um Esqueleto a partir de um Arquivo de MoCap
Abra um novo projeto com File -> New e apague o cubo padrão para ele não incomodar. O mais fácil é você selecioná-lo na hierarquia à direita e deletar:
Vá para importação de arquivos XBF, com File -> Import -> XBF files:
Importante: Se a opção de importar arquivos XBF não aparecer, é porque você não habilitou o plugin de importação de XBF. Vá para File -> Preferences e, na janela que abrir, selecione o plugin de importação/exportação de XBF (ele vem pré-instalado por default no Blender, só que tem de ser ativado):
Em seguida carregue o arquivo .xbf desejado. Se você está usando o nosso dataset, sugerimos começar com o primeiro arquivo: Luca Acao 02.fbx.
Garanta que os ossos estarão na orientação correta e com a hierarquia certa: No Blender, antes de carregar um .fbx de MoCap, você tem de habilitar a opção de seleção automática de orientação de ossos, como mostra a figura: no file browser de importação de .xbf do Blender, selecione o painel Armatures, embaixo à direita, e depois selkecione a caixa Automatic Bone Orientation:
Vai levar um tempo para o Blender montar o esqueleto. Dê clique duplo no nome do arquivo e aguarde…..
Importante: o modo Automatic Bone Orientation não fica automaticamente selecionado. Toda vez que você carregar um .fbx novo, você tem de re-selecionar a caixinha.
Fazendo o Rigging andar
Depois que abrir, você pode dar zoom na figura e ativar a animação no botão de play no editor de linha do tempo que deve ter aberto na parte de baixo do Blender para fazê-la andar:
Observe que você pode inspecionar toda a hierarquia de ossos no painel da direita.
Agora é só achar um boneco legal para colocar esse esqueleto dentro. Vamos voltar ao nosso exercício de criação de um personagem Pokèmon?
Lembrete: Para animar em Blender, um painel importante é o Editor de Linha do Tempo:
Você pode selecioná-lo na lista de painéis, clicando no ícone do relógio. Olhe com atenção a página de manual do Timeline Editor antes de seguir adiante.
Cuidados ao Criar Personagens Animados usando Modelos Prontos da Internet
Se você quer poupar trabalho e vai usar um modleo pronto da Internet junto com dados importados de MoCap, você tem de tomar alguns cuidados além dos problemas de orientação explicados ni vídeo de Hugo Boehs acima. O principal é que modelos na Internet não necessariamente são pensados para animação e podem estar desconectados. Isso significa que o modelo é bontio d eolhar, mas nem todas as pertes são conexas: quando você for animar, ele vai se desmontar.
Problemas com Modelos Desconexos
Para ver o que contece ao se associar um esqueleto com um modelo desconexo, carrege o nosso Steve-padrão em seu Blender. Se você clicar com o botão direito do mouse em qualquer de suas partes em Object Mode, vai ver que é só um braço ou a cabeça que é selecionada. Isso parece fácil de resolver: é só selecionar todas as partes e juntá-las com [CTRL]+[J], não?
Não. Isso vai fazer com que todas as partes façam parte do mesmo objeto, mas não significa que as bordas dos sólidos que o compõem vão ficar conectadas e passar a ser consideradas como uma borda só. Ao deformar o objeto com o esqueleto, as bordas vão se separar.
Faça o experimento: depois que carregou o Steve-padrão, carregue um esqueleto de MoCap da nossa coleção, por exemplo Luca2 do Arquivo de MoCap da Turma de INE 5420 de 2017.1 e escalone e rotacione o Steve até estar adaptado ao esqueleto em Edit Mode:
Agora, em Object Mode, associe selecione ambos e esqueleto e boneco em Obect -> Parent e anime para ver o que acontece:
Você vai ver a animação toda desengonçada. É que cada braço e cada perna é uma peça que faz parte do boneco e está na sua hierarquia, mas suas bordas não estão conectadas. Então quando o boneco se mexe, as bordas se soltam umas das outras como mostra a figura acima.
Como conectar um Objeto Pronto para usar em Animação?
Se ao invés de construir um boneco, você baixou alguma coisa da Internet e quer usar para a animação mas, ao fazer um teste, comportou-se como o Steve acima, o que fazer?
Conecte-a!
Vamos mostrar o processo usando o Steve-padrão, mostrando, passo-apasso como conectar um braço. Inicie carregando o boneco, indo para modo de seleção de vértices e selecionando um vértice da parte do corpo que você quer conectar ao tronco:
Em seguida use a seleção de partes conectadas com [Ctrl]+[L] para selecionar toda a parte do corpo:
Empurre a parte selecionada para longe do corpo clicando no eixo de coordenadas (no nosso caso o eixo verde) e empurrando um pouco. Assim você vai ter aceso melhor ao corpo. Empurra pelo eixo de coordenadas vai facilitar depois empurrar de volta. Não coloque a peça em qualquer lugar, você vai passar trabalho para alinhar depois!
Agora vá para modo de seleção de superfícies, selecione a superfície (faceta ou facetas) que estáva sendo tocada pelo membro que você quer fundir (no nosso caso o braço) e sundivida-a para criar novas arestas internas com Mesh -> Edges -> Subdivide ou [Ctrl]+[E] -> Subdivide:
Agora foram criados novos vértices. Vamos transformá-los em arestas?
Crie as Arestas que faltam no Corpo para Conectar os Membros
Em seguida retorne ao modo de seleção de vértices, selecione os dois vértices criados com a subdivisão e conecte-os com Mesh -> Vertices -> Connect Vertices ou, simplesmente [Ctrl]+[V] -> Connect Vertices:
Isto vai criar uma nova aresta que pode ser usada como a nova parte de baixo do retângulo do braço, quando você conectá-lo. Empurre a aresta para cima clicando no vetor azul (Eixo Z) e empurrando com o mouse até estar alinhada à mesma altura com a parte de baixo do braço.
Agora empurre o braço de volta, selecionando algum vértice no braço e, em seguida, selecionando todos os vértices conectados com [Ctrl]+[L] como fizemos anteriormente, e aí empurrando o braço pelo eixo verde (Y):
A parte de baixo do braço deveria estar alinhada com a nova aresta que você criou. Se não estiver, vá para o modo de seleção de arestas, selecione-a e empurre-a para cima e para baixo até o alinhamento estar bom:
Funda Vértices para unir Partes em um único Mesh
Agora você vai fazer as duas arestas paralelas que se tocam transformarem-se em uma só. Você vai fazer isto aresta-a-aresta. Comece selecionando uma extremidade da aresta, indo para modo de seleção de vértices, selecionando um vértice e, usando [Shift]+[botão direito do mouse], selecione o segundo vértice também (basta clicar com o mouse perto):
Em seguida funda os vértices usando Mesh -> Vertices -> Merge ou [Ctrl]+[V] -> Merge ou então o atalho [Alt]+[M].
Vai aparecer o menu abaixo, para você escolher o ponto de referência da fusão. No exemplo abaixo estamos escolhendo At last (na posição do último vértice) para deixar o braço alinhado com a superfície onde selecionamos o ponto por último (no nosso caso o lado do corpo). Fica a seu gosto. Se tiver dúvidas, pegue o ponto médio entre os dois vértices (At center):
Como eu continuo?
Repita esse processo para todos os vértices correspondentes de cada parte do corpo do seu boneco que se toca. Assim você estará fundindo esta fronteira em um único meshe e vai ocorre uma deformação homogênea quando os ossos forem mover esta parte.
Exercício Simples em Sala: Animando o Steve com MoCap
Vamos animar o Steve do Minecraft? Preparamos um Steve sem os problemas do arquivo acima: ele é todo conexo e possui suficientes “dobras” para se comportar direito. O objetivo é aprender a ajustar um rigging obtido através de MoCap a um boneco. Comece então baixando o nosso Steve5. Depois de pronta, a animação deve ficar como abaixo:
Outro Exercício em Sala: Animando o Pokèmon Golduck
Carregue e ajuste o Golduck
Abra o nosso dataset de Pokèmon para Blender e encontre o Pokèmon chamado Golduck. Ele é representado de pé e de braços abertos, facilitando a integração dele ao esqueleto do arquivo inicial do dataset de MoCaps de 2017.1. Carregue-o e faça algumas pequenas modificações no arquivo de projeto dele:
- Ilumine-o: vários Pokèmons desse dataset vêm sem iluminação. Crie uma fonte de luz e posicione-a de forma a iluminar bem o Pokèmon. No exemplo abaixo criamos um Sol. Também mudamos a visualização para perspectiva.
- Crie mais painéis para facilitar a visualização: criamos um segundo painel com uma visão simpes em projeção paralela (vai ajudar a poscionar o esqueleto, depois) e uma visualzação da hierarquia de objetos.
- Junte tudo do Pokèmon em um único mesh hierárquico: vários Pokèmons desse dataset vêm divididos em meshes que não estão conectados. Se você deixar assim, na hora em que for conectar o esqueleto com o mesh, você só vai animar um dos meshes e a movimentação vai fazer o Pokèmon se dividir. O Golduck é um desses Pokèmons que vêm divididos em partes: há dois meshes, um para os olhos e outro para o corpo.Você têm de conectá-los da maneira que ensinamos para esqueletos no tutorial de animação do cilindro, de forma que o corpo seja o pai dos outros, como mostra o painel herárquico da figura abaixo:
Carregue o Esqueleto do MoCap
Agora você está pronto para importar o esqueleto a partir do arquivo XBF. Vá para importação de arquivos XBF, com File -> Import -> XBF files:
Carregue o arquivo inicial do dataset de MoCaps de 2017.1.Lembre de habilitar a opção de seleção automática de orientação de ossos, como mostra a figura: no file browser de importação de .xbf do Blender, selecione o painel Armatures, embaixo à direita, e depois selecione a caixa Automatic Bone Orientation, só então carregue o arquivo:
Ajuste o Esqueleto
Agora você tem de:
- Achar o esqueleto: descubra onde foi parar o esqueleto, indo para o modo de visualização de meshes com [Z] ou pelo menu de visualização como mostra a figura abaixo;
- Ajustar o esqueleto ao Pokèmon: Movê-lo com [G] e escaloná-lo com [S] [fator de escala] para que se ajuste dentro do boneco.
Assista o vídeo abaixo, feito para nós por Gustavo Boehs do Design Lab da UFSC, para ver detalhes do que você vai fazer a seguir:
A imagem abaixo mostra os resultados da carga e visualização:
Depois da carga e da mudança para visualização em modo de meshes, dê um [A] para selecionar tudo. Você vai enxergar o boneco (1) (em laranja na figura) e o esqueleto (2) (em amarelo na figura). Ficou claro que os dois possuem escalas diferentes e temos de ajustá-los um ao outro.
Selecione agora apenas o esqueleto, des-selecionando tudo novamente com [A] e selecione apenas o esqueleto com o botão direito do mouse:
Agora, mova e escalone o esqueleto para ocupar o “interior” do boneco. Primeiro mova para o centro do boneco. Dê um grab [G] e use a rotação de sua visão com o botão do meio do mouse (aperte a rodinha) tanto no painel de visualização da direita (em projeção paralela) quanto no painel da esquerrda (em perspectiva) para visualizar o posicionamento:
Depois, escalone com [S] [fator de escala] até ficar do tamanho certo. Sugerimos ir em passos pequenos, primeiro [S][2] e depois de [S] [1.2] em [S] [1.2]:
Se necessitar de mais algum ajuste, use grab [G] novamente até o ajuste fino ficar perfeito.
Cuidados a Tomar
Observe que o Golduck é um exemplo de um boneco pronto da Internet onde há partes inadequadamente conectadas. Se você animá-lo sem conectar tudo primeiro, a animação vai ficar assim:
Veja nossas instruções acima para saber como conectar.
Mais um Exercício: Anime o Pokèmon Heracross usando MoCap
Este exercício é um pouco mais difícil: Vais exigir de você adaptar mais do esuqeleto para que ele possa se encaixar ao Pokèmon. Veja o vídeo abaixo:
Quais dados usar?
O Heracross original da coleção Pokèmon tem alguns problemas de conexão. Use nosso Heracross2 que é bastante conectado.
Do que eu preciso cuidar aqui?
Observe que este Pokèmon, apesar de ser bípede e ter uma estrutura corporal que pode ser considerada humanóide, possui proporções corporais bem diferentes das de um humano. Para adaptar dados de MoCap de um humano a ele, você vai ter de editar o seu esqueleto de forma a deixá-lo adaptado às dimensões do Heracross. Para isso você pode:
- Em EditingMode, usar o comando Circle Select [C] do Blender para selecionar grupos de ossos e, depois de selecionados (não esqueça de terminar a seleção com um clique do botão direito do mouse):
- Deslocá-los ao longo dos eixos X, Y, e Z, mudando as relações de posição
- Escaloná-los ao longo dos eixos X, Y e Z de forma a modificar suas proporções
Divirta-se!
Exportando seu Modelo para Unity3D
É simples. Aqui há uma explicação do lado do Unity. Leia-a e você comprenderá: https://docs.unity3d.com/Manual/HOWTO-ImportObjectBlender.html.
Para facilitar a sua vida criamos uma página especial com um exemplo detalhado utilizando a animação do Pokèmon Heracross que você vai fazer em aula. Olhe aqui: Computação Gráfica::Exportando o seu Modelo para Unity3D.
Ferramentas Alternativas
Você pode usar também Autodesk Maya para carregar arquivos de MoCap. Na figura adiante um exemplo usando os mesmos dados das figuras acima:
Links Úteis
Dados
Dados de Captura de Movimento para seus Experimentos
- Arquivo de MoCap da Turma de INE 5420 de 2024.1 (Com o combate de espadas de membros do grupo de Artes Marciais Medievais ESCAM)
- Arquivo de MoCap da Turma de INE 5420 de 2023.2
- Arquivo de MoCap da Turma de INE 5420 de 2022.2
- Arquivo de MoCap da Turma de INE 5420 de 2019.1 – Aula de Motion Capture para a turma 2019.1 de INE 5420 – Computação Gráfica
- Arquivos de MoCap da Turma de INE 5420 de 2018.2 (Parte I, Parte II, Bicicleta) – Aula de Motion Capture com Bicicleta para a turma 2018.2 de INE 5420 – Computação Gráfica
- Arquivo de MoCap da Turma de INE 5420 de 2018.1 – Aula de Motion Capture (MoCap) para a turma 2018.1 de INE 5420 – Computação Gráfica
- Arquivo de MoCap da Turma de INE 5420 de 2017.2
- Arquivo de MoCap da Turma de INE 5420 de 2017.1
- Arquivo de MoCap da Turma de INE 5420 de 2016.1
Arquivos de Modelos em Blender
- Humano padrão (Masculino)
- Humano padrão (Feminino)
- Heracross conectado
- Steve conectado
- Pikachu Animado
Obs.: Se você for usar os humanos-padrão em seu trabalho, vista-os com roupas que você deve fazer ou buscar de uma fonte na Internet.
Enunciados e Resultados de Trabalhos de Animação e Games com Modelos Hierárquicos:
- Trabalho de Animação com Modelos Hierárquicos, Motion Capture e Game Engines::Jogo de Pokèmon em Unity ou UE4
- Trabalho de Animação com Modelos Hierárquicos, MoCap e Game Engine::Jogo de Pokèmon Ciclista em Unity ou UE4
Software
- Software de Modelagem de Humanos MakeHuman (não testamos!)
Páginas de Manual do Unity3D relacionadas ao Tema Animação
- Animação em Unity3D (com link para um tutorial)
- Como mover a animação de um caracter para outro? -> Retargeting of Humanoid animations
- Visão Geral do Sistema de Animação em Unity3D
- Usando Blender com Unity3D
- FAQ de Animação em Unity3D