Do meu primeiro post sobre Captura de Movimento até
minha primeira experiência real com esse tipo de recurso passou-se pelo menos 4 anos.
Foi a primeira vez que vi um estúdio com 12 câmeras estéreo, dispostas em círculo, conectadas em rede à um sistema rodando em Linux computando a posição no espaço de 37 leds infravermelho acoplados à roupa de uma dançarina.
Denso, né? O
sistema de captura grava uns arquivos nada inteligíveis do tipo .RPD, que a posteriori são 'streamados' para um aplicativo que grava arquivos um pouquinho menos ininteligíveis do tipo
.C3D
É nesse ponto que o processo passa a ser mais transparente, pois com Python e Blender esses arquivos .c3d deixam de ser as informações da superfície do corpo da dançarina para se tornar as juntas do esqueleto resultante. Os pontos dos leds passam a ser representados por 'Empties', e novos Empties são criados para orientar a base e a terminação dos ossos.
Os Empties correspondentes aos leds vêm com quadros-chave de LocX, LocY e LocZ para todos os frames da animação. E essas sucessivas posições são copiadas pelos empties que serão a terminação dos ossos através de 2 ou mais Constraints do tipo
Copy Location. O primeiro Constraint com influência 1 copia exatamente a localização do primeiro Led, e o segundo Constraint, com fator .5 vai até a metade do caminho até o próximo Led.
O
Script , amplamente hakceado para este projeto em específico, gera uma 'Armature' caso a nomenclatura dos marcadores correspondam a algum padrão válido. Os ossos do esqueleto são 'guiados' por um conjunto de Constraints dos tipos: 'Copy Location',
'IK_Solver',
'Track To' e
'Limit Rotation'.
Muitos ajustes manuais dos Constraints e das curvas IPO foram necessários. Várias razões justificaram essas intervenções manuais. Um exemplo são alguns 'Leds' que perderam a conexão com as câmeras e admitiram trajetórias errantes. Para muitos deles novos constraints do tipo 'Limit Distance' evitavam que os errantes se afastassem ou se aproximassem muito dos marcadores corretos. Assim que a postura e os movimentos do nosso esqueleto aparentavam naturais, aplicamos o Script
'Bake Constraints' no esqueleto e obtivemos a
'Action' desse passo de dança.
A Mentora do projeto coreografou diversas seqüências de Actions puras e/ou derivadas, que foram editadas constituindo um banco de movimentos.