sábado, 26 de mayo de 2007

PREVIO PRACTICA NO. 10

PREVIO NO. 10

Animación Esqueletal:
Un modelo 3d está compuesto por cientos o miles de polígonos de distintas formas y tamaños que unidos entre sí forman la figura deseada. El número de polígonos ha ido aumentando progresivamente de modo que ahora para formar el brazo de un determinado modelo se utilizan miles de polígonos... miles de polígonos que han de modificar su tamaño y forma con cada mínimo movimiento del modelo.
Calcular cada deformación de estos miles de polígonos y sus nuevas coordenadas en la escena, además de la aplicación sobre ellos de efectos luminosos, texturados, filtrados... El trabajo que supone para el sistema gráfico es tremendo. En eliminar esa inmensa carga se basa la tecnología del "esqueleto 3d". La "animación esqueletal" se basa en crear el modelo sobre una arquitectura o esqueleto y después recubrirlo de texturas (o piel). Con esta técnica, cada miembro del gorila del ejemplo se construiría recubriendo de polígonos un "hueso" (bone) del esqueleto. Las ventajas llegan cuando ese miembro se tiene que mover respecto al cuerpo. Cada hueso tendrá un movimiento limitado respecto al hueso con el que se une, exactamente del mismo modo que lo tiene el animal real. Cada parte móvil del modelo está formada a través de un hueso que tiene su propio recubrimiento de carne (polígonos) y su propia piel (texturas) y con la movilidad que el programador le quiera dar. De este modo, el gorila del ejemplo podría tener un hueso que le permita mover el brazo respecto al hombro, el antebrazo respecto al resto del brazo, la mano respecto al antebrazo, los dedos respecto a la mano... El movimiento es mucho más realista y, sobre todo, requiere muchos menos recursos del sistema al no tener que calcular la deformación de los polígonos que hasta ahora se utilizaban para representar las articulaciones.
El único problema que representa la creación de modelos 3d a partir del un esqueleto se encuentra en la unión de los distintos huesos. Entre un hueso y otro existe un espacio que, siguiendo el símil con el cuerpo de los vertebrados reales, llamaremos articulación. Esta articulación se contrae, se estira y de deforma de distintas formas dependiendo del movimiento que hagan los dos huesos que une por ejemplo:

La grieta que se crea entre ambos huesos es algo que no se puede mostrar en la imagen final. Para esconderla se utiliza la técnica "Skinning" que, como su nombre indica, se encarga de recubir de piel estas imperfecciones.

Mediante esta piel flexible, que une cada uno de los vértices de un hueso con el correspondiente en el otro, se da continuidad al objeto y se acerca mucho al movimiento totalmente natural que podemos observar en cualquier ser vivo. Un problema que genera esta "piel" radica en la textura que recubre esta piel.
El problema radica en cómo unir los distintos huesos de modo que la apariencia final sea realista. De eso se ocupa el Vertex Skinning. Esta técnica se basa en la aplicación lo más realista posible del cálculo de las funciones matemáticas que calculan la posición de cada vértice de un objeto en la escena. Explicado de una forma sencilla, se ocupa de rellenar de la forma más realista posible los espacios entre los distintos "huesos" de los que ya hemos hablado. La unión entre los citados huesos es más real cuanto más matrices se utilicen. Estas matrices son cálculos matemáticos destinados a unir entre sí cada vértice del objeto. Cuantas más veces se recalcule la unión (más matrices haya), más realista será el objeto final.

El brazo del modelo (en rojo) se une al torso (en azul). Cada color representa una de las matrices y, como vemos, la unión entre ambas es poco natural. Tarjetas como las ATi Radeon soportan hasta cuatro matrices por hardware, por lo que en ejemplos como este, añadiendo una tercera matriz se solucionaría el problema.

Entre las matrices roja y azul, se ha introducido una tercera matriz representada en verde. Esta matriz se introduce entre las otras dos actuando como una especie de colchón flexible que hace que la unión de las otras dos sea más natural. En caso de que el resultado no fuese el buscado, se podría introducir una cuarta matriz y perfeccionar aún más el resultado. Otra de las ventajas de contar con más matrices a la hora de representar un modelo, es que se puede definir el comportamiento de la textura (piel) que recubre cada matriz. Si se trata de representar la piel de un animal, la textura que recubre la matriz central se estirará mientras que la que recubre las otros dos matrices permanecerá igual. Del mismo modo, cada matriz puede verse afectada de forma diferente por la luz, ensombreciendo o aclarando la textura que la recubre.
La gran ventaja de las ATi Radeon es que calcula hasta cuatro de estas matrices por hardware. Calcular estas matrices por software sería imposible ya que el procesador principal quedaría completamente colapsado ante tal afluencia de operaciones de cálculo en tiempo real.
En el siguiente gráfico podemos ver un ejemplo real en un juego, el Dungeon Siege de Microsoft, en el que se pueden ver las cuatro matrices en distintos colores.

Cada color representa una matriz, sin embargo, la aplicación más efectiva de las distintas matrices, donde más efectiva se muestra es en las transiciones automáticas. Los conocidos "morphings".
Formatos:
.fbx
el formato FBX, desarrollado por Kaydara para el intercambio de información.
FBX es un formato binario que soporta toda clase de información 3D, 2D, video y audio, por lo que facilita enormemente la comunicación entre distintas aplicaciones (como Cinema4D, Lightwave, 3D Studio).
.fpx
Formato que admite múltiples resoluciones de una imagen. Con o sin compresión y de 8 a 24 bits de profundidad de color Desarrollado por Kodak en conjunto con Hewlett Packard
.x
Los ficheros .X estan compues de plantillas, que pueden ser definidas por el usuario. Una plantilla es una "definicion de como quiere el usuario que se almacene la informacion".
Para animar un fichero .X necesitas especificar una serie de animaciones con referencia a las matrices frame correspondientes. Abajo aparece un ejemplo de nuestro cuadrado texturizado y animado.
Un ejemplo de estos formatos "optimizados" para juegos son los utilizados por Id Software para su Quake. Es posible que escriba un tutorial sobre este formato mas adellante, pero por el momento vamos a empezar con uno mas sencillo: el formato .X que es el que usa por defecto DirectX.

Existe una herramienta que viene con el SDK de DirectX8 para transformar los ficheros del 3dStudio a formato .X en C:\mssdk\bin\DXUtils\XFiles\conv3ds.exe

Estos ficheros .X van a contener la informacion acerca de nuestros modelos 3D (personajes, naves, etc...) e incluso de nuestro mundo 3D (pistas, ciudades, mapas, etc...)

Los puntos claves cuando trabajamos con estos ficheros son:

- De que manera estan almacenados los objetos.

- De que forma se relacionan entre ellos.
MODELO:

No hay comentarios: