Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Animaciones 3D

Iniciado por Sergen, 30 de Junio de 2009, 03:40:23 PM

« anterior - próximo »

Sergen

Una pregunta muy tonta. Yo no he realizado ninguna animación en 3D con OpenGL o librerías similares.

Cuando trabajas en 2D el tema es sencillo, creas un conjunto de sprites y vas alternando entre una animación y otra una serie de imágenes fijas para dar el aspecto de animación.

El tema es en 3D, por ejemplo si haces un dinosaurio y pretendes hacerlo caminar, ¿cómo lo haces?. ¿Haces una serie de capturas igual que en 2D con cada movimiento y luego interpolas las posiciones de la matriz de puntos de una posición a otra?, ¿lo haces con transformaciones geométricas, rotaciones, etc, hasta pasar de una posición a otra?, ¿cómo se hacen las animaciones?.

Mars Attacks

Pues depende. Grosso modo existen dos escuelas, la que guarda posiciones relativas de vértices de la malla para cada posición clave de la animación, y la que guarda transformaciones de un esqueleto (jerarquía de huesos) para cada posición clave y los pesos relativos de cada vértice de la malla con respecto a los huesos de dicho esqueleto.
Después, efectivamente, se interpola entre ambos valores.

Sergen

Interesante... saco en conclusión... guardando posiciones relativas de vértices para cada posición clave tenemos unos grados de libertad en los movimientos que nos vienen marcados por las posiciones que hayamos establecido de referencia, parece más sencillo de hacer e implementar a nivel de código, aunque la herramienta de animación por ejemplo nos permita animar por huesos, por ejemplo podemos coger sólo la captura de las posiciones. Animar por huesos en la herramienta de creación de la animación parece más inmediato pero luego a la hora de hacer la animación requerirá más recursos ¿?.

Luego tenemos la opción de utilizar (huesos) transformaciones geométricas giros, etc, que nos dan mayor grado de libertad en los movimientos del personaje pero que nos van a exigir una mayor complejidad en la implementación del motor de animación y que parece ser consumirán un mayor número de recursos.

A ver si miro un poco porque supongo que la interpolación entre los distintos puntos ya sea de la malla o de los movimientos de los huesos igual ya la proporciona el propio lenguaje ·3D, creo que si es de alto nivel como el VRML ya lo incorpora ¿?.

Mars Attacks

Que conste que no me he tenido que pegar con eso nunca, así que hablo de cómo supongo que funciona el asunto.

Como bien dices, con la primera variante (que es por ejemplo la que obtienes exportando en formato md2) tienes la ventaja de que el motor es más simple, y la desventaja de que el peso de la información exportada será mayor y además "estática". Con la segunda variante ganas en libertad (sólo necesitas un modelo con el exportado de los pesos por vértice y luego puedes tener tantas animaciones esqueletales en archivos separados como quieras, mientras mantengas la jerarquía de huesos intacta), pero el sistema se vuelve algo más complejo (quizá no tanto, dado que lo que tendrás que almacenar será las matrices de transformación que se le aplican a cada hueso en cada keyframe y aplicarlas a los vértices a los que afectan -que podría ser de más de un hueso y podrías tener que hacer cálculos adicionales-). Supongo que en esta variante podrías interpolar transformaciones o interpolar posiciones transformadas.

A ver si viene alguien más motorista y nos aporta luz.

Buffon

me tengo que ir y no puedo desarrollar esta respuesta, pero busca información de trabajar con esqueletos.

si luego tengo tiempo te subo un proyecto chorra utilizando QT para linux que trabajo con esqueletos con animaciones hechas en 3D Studio.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.