Qual é o know-how necessário para escrever uma biblioteca de animação (IK & FK)? [fechadas]

9

Não consigo encontrar uma boa biblioteca de animação, as que encontrei são realmente antigas e descontinuadas, mas notei que as bibliotecas são relativamente pequenas, então estou pensando em codificar uma por conta própria: por onde devo começar ? Quais são os princípios básicos para isso? Existe um livro sobre isso?

Algumas notas adicionais sobre um bom formato de arquivo para animação também são muito apreciadas.

Eu estou usando C ++.

user827992
fonte

Respostas:

7

A cinemática direta é apenas um pré-requisito para a cinemática inversa, em geral.

Para cinemática direta, você deve ter algum conhecimento de cadeias de transformação (o que um gráfico de cena significa, por exemplo). Como exemplo, um bom ponto de partida é a convenção Denavit-Hartenberg. Para cinemática inversa, estude soluções de descida de coordenadas cíclicas (CCD), inversa jacobiana, transposição jacobiana e soluções pseudo-inversas . Esses conceitos e algoritmos oferecem uma visão decente sobre o que é a matemática e, em parte, a física desse campo. A biblioteca, a linguagem de programação ou os formatos de arquivo nunca são o elemento-chave se você também deseja entender o que acontece por trás da mágica.

Se você precisar de uma solução rápida ou de um componente para algum aplicativo em que está trabalhando, consulte algumas das bibliotecas fornecidas nas outras respostas aqui. Se você gosta de robótica, o OpenRAVE é um monstro que vale a pena mencionar. Além disso, existe uma Matlab Robotics Toolbox (desde que você goste desse tipo de lado da engenharia).

Todos os conceitos geram uma série de resultados relevantes no seu mecanismo de pesquisa favorito. Desculpe por não postar tantos links para bons materiais.

teodron
fonte
1

Artigo Original: O que eu preciso saber sobre Cinemática Inversa?

Você provavelmente já ouviu falar de cinemática inversa. O IK é uma ferramenta popular no Unity e na computação gráfica, mas se esta é a primeira vez que você tenta criar ou usar um sistema de cinemática inversa, talvez queira mais detalhes. Vou explicar o que é IK, definir o vocabulário e revisar os usos. Qual é o vocabulário necessário para entender IK?

Antes de entrar no coração da IK, precisamos definir algum vocabulário relacionado à IK. IK é um método que é aplicado a um corpo articulado. O que é um corpo articulado?

Corpo Articulado

Um corpo articulado pode representar a maioria dos corpos animados, como seres humanos e animais com esqueletos. Simplificando, um corpo articulado é uma árvore de correntes interligadas. As correntes ligadas são constituídas por juntas e elos, onde um elo é um cilindro rígido.

insira a descrição da imagem aqui

Tipos de juntas

Quanto às juntas, existem dois tipos. O primeiro tipo de junta é uma junta de revolução. Ele está conectado a um link que gira em torno dele.

Uma junta de revolução é muito parecida com o pino central de um relógio - com um ponteiro de relógio como um link.

insira a descrição da imagem aqui

Uma junção prismática é uma junção de forma que o link conectado se converta da junção para estender / encurtar o link.

insira a descrição da imagem aqui

Uma articulação prismática funciona como estender / retrair o comprimento da alça retrátil na sua bagagem. Se você olhar atentamente, uma alça de bagagem retrátil possui 4 juntas prismáticas. 2 juntas prismáticas até a metade da alça e outras 2 juntas prismáticas até a alça na parte superior da bagagem.

Se você está confuso com juntas prismáticas, não se preocupe. Eles não são usados ​​com frequência na cinemática inversa e, como você pode perceber, nenhum ser humano tem articulações prismáticas - apenas articulações revolutivas.

Estrutura hierárquica

Um corpo articulado tem uma articulação radicular. A articulação da raiz é a base da estrutura. A articulação da raiz de um humanóide é geralmente o centro dos quadris. O corpo articulado é formado a partir de uma árvore de articulações e elos, começando na articulação radicular. Uma nova junta e link é semelhante a um novo galho em uma árvore. Um link / junta interno é um link / junta que está mais próximo da junta raiz dentro da hierarquia da árvore do corpo articulado, no que se refere a determinada junta / link. Um link / junta externo é um link / junta mais distante da junta raiz dentro da hierarquia da árvore do corpo articulado.

Efeito Final

Um efetor final é uma posição na posição mais externa do link mais externo. É o fim livre da cadeia de juntas e elos alternados. O efetor final não é uma junta. O efetor final é apenas a posição no final de um corpo articulado. Um corpo articulado pode ter vários efetores finais, assim como uma árvore binária pode ter várias folhas.

insira a descrição da imagem aqui

O End Effector é descrito como um círculo verde aqui.

Articulações e Poses

Uma articulação é uma rotação / translação de uma junta que move um link conectado. Por outro lado, uma pose é um conjunto de articulações articulares que resulta no posicionamento do corpo articulado. Em outras palavras, a pose é um valor vetorial em vez de um valor escalar.

O que é cinemática direta?

Antes de podermos entender o que é a cinemática inversa, precisamos descobrir o que é a cinemática direta. A função / algoritmo Forward Kinematics faz uma pose como entrada e calcula a posição do efetor final como saída. A cinemática direta é a função inversa da cinemática inversa. Com a cinemática direta, é necessário definir toda a pose de um corpo articulado para fornecer à função / algoritmo a entrada da pose. Isso significa que você precisa definir a articulação de cada articulação no corpo articulado. Isso pode ser bom se você tiver um número baixo de articulações, mas com um número alto de articulações, isso tende a ser entediante.

O que é cinemática inversa?

Agora, imagine se você gostaria que o efetor final do seu corpo articulado atingisse uma determinada posição-alvo. Isso significa que você conhece a posição efetiva final que gostaria de atingir, mas não sabe qual é a pose do corpo articulado para que o efetivo final atinja essa posição alvo. É aqui que a cinemática inversa brilha!

insira a descrição da imagem aqui

Cinemática Inversa é a função / algoritmo inverso da Cinemática Avançada. A função / algoritmo Forward Kinematics assume uma posição de destino como entrada e calcula a pose necessária para que o efetor final alcance a posição de destino - a pose é a saída.

Como você pode ver, a entrada e a saída são alternadas entre FK e IK. Com a cinemática inversa, você não precisa definir toda a pose de um corpo articulado - isso é calculado pelo algoritmo IK. Com o IK, você só precisa definir uma posição como entrada.

A cinemática inversa faz todo o trabalho computacional desafiador de calcular qual é a pose. No Estado Antes, existe um corpo articulado com alguma pose conhecida. Ele define uma posição de destino para o efetor final tentar alcançar. Uma vez que o algoritmo IK é aplicado ao corpo articulado, chegamos ao estado posterior. O estado posterior mostra que uma nova pose foi calculada, de modo que o efetor final esteja agora na posição de destino.

Quais são os usos do IK?

Nesse ponto, sabemos que a IK é aplicada a um corpo articulado, sabemos do que é formado um corpo articulado e sabemos a diferença entre IK e FK. Até agora, temos uma boa visão geral do IK, mas vamos encerrá-lo com alguns bons casos de uso do IK. O IK pode ser usado para um braço humanóide alcançar um objeto / alvo, como vimos. O IK também pode ser usado para pisar nos pés, de modo que dizemos ao pé onde pisar e o IK descobre como configurar as articulações das pernas. O IK geralmente não é usado como uma animação em si (alcançando um objeto), mas mais como uma ferramenta de animação. Portanto, se você estiver implementando um ciclo de caminhada, poderá posicionar alguns dos quadros principais usando a ferramenta IK.

insira a descrição da imagem aqui

Outro ponto importante sobre a IK é que seu objetivo / objetivo não se limita apenas à posição - seu objetivo pode ser definido como uma rotação. Por exemplo, se seus pés precisarem girar com base em terrenos irregulares, sua meta de rotação IK poderá ser definida com base no normal do piso. Dessa forma, seus pés estão inclinados ao longo do chão, como quando você está subindo uma inclinação. Observe que você também pode usar o IK para fazer com que sua cabeça (ou até olhos) olhe em uma determinada direção. Se você deseja que sua cabeça siga um objeto, use IK para que ela siga o objeto.

Luis B
fonte