Pues eso, si alguien sabe algo sobre el tema y me lo puede decir.
Hay algun thread por aqui en Programacion grafica 3D sobre el tema, asi q t hare un resumen muy por encima:
Tu tienes una malla con tus verteices, para animar es un curro d la ostia mover los vertices uno a uno, asi q t haces un esqueleto q consiste en una especie de "muñeco de palo", cada segmento es un hueso (bone).
Lo que haces luego es asignar vertices a cada hueso para que este los controle, asi que simplemente tienes q mover un hueso para que los vertices se muevan (lo que haces es aplicar la matriz d transformacion d un hueso a todos los vertices q controla). Imagina tu esqueleto, el femur controla todos los puntos (musculos, piel, materia, celulas) de tu muslo, no? pues esto lo mismo.
Eso en cuanto a animacion simple, luego hay animacion por huesos en la q asignas un peso a cada vertice, es decir q un vertice puede estar controlado por mas d un hueso (generalmente 2, puedes tener mas pero es un engorro para los calculos) en un porcentaje (sobre 1) indicado por el peso. Con lo cual la transformacion se aplica dependiendo de dos matrices (si tiene 2 huesos asignados ese vertice) en vez d una. De hecho la animacion q t he descrito al principio (la simple) seria con un peso de 1.0 y 1 solo hueso asignado por vertice.
Mirate esta guia,
Character Animation FAQ a mi me ayudo bastante, aunq tb lei por gamedev y flipcode q hay tutos e info wena sobre vertex blending (las encuaciones para transformar los vertices con mas d 1 hueso asignado).
De todos modos en stratos hay algun q otro thread sobre esto
Gracias tiutiu me ha servido de mucho.
para cada vertice interpolar dos matrices?! eso suena muy costoso, como se hace?
Bájate
este documento y ve al apartado 6 (
Basic Vertex Blending). Ahí te explica brevemente cómo se le aplica a los vértices los pesos.
Lo bueno es que en estos momentos puedes realizar todas esas transformaciones en la GPU a través de un vertex shader con la consiguiente ganancia de rendimiento.
Saludos.
Eso en tarjetas q lo soporten, algunos aun "jugamos" con voodoo. Desde luego la mayoria de juegos q merecen la pena funcionan en mi voodoo3. saludos
tamat, siempre se pueden aplicar "truquillos" xDD por ejemplo, hacerlo sobre papel y sacas la formula simplificada, aunq si eres un geek de la POO pues usas tu supero-dupero-class-matrix4 y multiplicas usando tu operator* xDD
En flipcode hay un articulo sobre vertex blending, ahora lo busco... buscando... buscando... ya ta es
este. El articulo explica el blending por shaders, pero como somos muy machos nos la suda y nos vamos al final del articulo dnd con unos gifs animados muy wapos nos explica las formulas q hay detras, asi q en vez d programar un shader pues programamos eso en el engine y ya tienes tu vertex blending por software.
y ya que estais hacedlo con quaterniones que molan más y se interpolan que da gusto :D
Luego a la hora de renderizar los conviertes a matrices y listo.
Para eso lo haces directamente con matrices, es tonteria usar cuaterniones si luego vas a pasarlo a matriz. No se, en mi opinion los cuaterniones no son necesarios si tienes bien hechas las funciones d matrices ;)
Eso si, cada uno como mejor le vaya