Digamos que tengo un marco con personajes que pueden correr y caminar y, por supuesto, quedarse quieto.
¿Estoy en lo cierto al pensar que la combinación de animaciones es el proceso de una transición suave entre estas al generar animaciones dinámicas en tiempo de ejecución?
Si es así, ¿cuál es la teoría básica de cómo funciona esto y cómo la implementaría?
Respuestas:
La combinación de animación de personajes es más general y se puede usar para:
La idea básica es que para dos esqueletos idénticos con diferentes clips de animación, para cada rotación conjunta, se calculan valores intermedios. Los clips de animación se representan con rotaciones. Entonces, la interpolación lineal no es lo que debe usar si desea resultados precisos (incluso si usa ángulos de Euler). Puede usar slerp, por ejemplo, pero existen soluciones más complejas.
Este es un problema complejo con soluciones complejas. Básicamente, si tienes dos animaciones clips A y B:
Si está interesado, le sugiero que comience leyendo este artículo para que pueda comprender mejor cuáles son las dificultades: http://graphics.cs.wisc.edu/Papers/2003/KG03/regCurves.pdf
No es el más actualizado, pero es fácil de leer.
Espero que esto ayude. Atentamente.
fuente
En primer lugar, supongo que está hablando de animación esquelética (especialmente gráficos en 3D), ya que la combinación de animación solo se aplica a la animación esquelética. Si está hablando de animaciones 2D basadas en sprites (no especificó en su pregunta), puede olvidarse de la combinación de animaciones.
Con eso fuera del camino ...
Eso es más o menos lo que significa el término, sí. Sin embargo, esa frase "generar animaciones dinámicas" es un poco engañosa; eso trae a la mente la animación de procedimientos y eso no es exactamente lo que estás haciendo.
La "combinación de animaciones" es cuando haces la transición entre dos clips de animación usando un poco de ambas animaciones con la ponderación de un clip subiendo mientras la ponderación del otro clip baja. Esto funciona mejor con la animación esquelética, de modo que la rotación de cada articulación se establece en un punto medio entre la animación de esa articulación en dos clips de animación diferentes, y la ponderación de cada clip cambia con el tiempo. Es decir, calcularía la rotación de cada articulación de la siguiente manera:
rotCombined = weightA*rotA + weightB*rotB
Ahora, si bien la combinación de animación funciona mejor con la animación esquelética, también puede hacerlo con la animación de vértices (por ejemplo, MD2). Esto es más una nota histórica porque pocos motores de juegos modernos usan animación de vértices, pero puedes establecer las posiciones de vértices de la misma manera, como una ponderación entre la posición de vértice en dos animaciones diferentes. Esto podría dar lugar a algunas interpolaciones de aspecto extraño (por ejemplo, partes de la malla que colapsan o se vuelven del revés) si las dos animaciones eran demasiado diferentes, mientras que la animación esquelética asegura que las diversas partes de la malla permanezcan completas.
fuente