.comment-link {margin-left:.6em;}

PROYECTO UTOPIA

lunes, marzo 13, 2006

EXPORTACIÓN DE MODELOS DESDE 3DMAX A CAL3D.

INTRODUCCIÓN

Dentro del proyecto Utopía, una de las librerías externas que usamos es CAL3D. Esta librería permite la presentación de modelos en 3D con varias animaciones, permitiendo que se realicen transiciones entre ellas. Además, el modelo permite incorporar materiales y texturas.

Antes de comenzar ha explicar el proceso de exportación de un modelo desde 3DMAX a CAL3D, voy a comentar que ficheros componen un modelo en CAL3D.

La base de un modelo en CAL3D la compone el esqueleto. Sin esqueleto no es posible trabajar con un modelo en CAL3D. Así, previamente, todo modelo en 3DMAX deberá tener realizado su rigging para poder exportarlo. En las imágenes se puede ver el esqueleto y la malla con las texturas aplicadas.

















El esqueleto para CAL3D esta identificado por los ficheros con extensión csf.

La malla que compone el modelo se puede exportar en uno o varios ficheros. Eso depende de cómo se haya modelado la figura en el 3DMAX. Por ejemplo, si un modelo se ha creado en tres partes, cabeza, tronco y piernas, se puede exportar con tres mallas. Esto es lo recomendable ya que se producen errores inesperados cuando se intenta exportar en una sola malla. En la figura se pueden observar las diferentes partes de la malla indicadas por los colores.










Las mallas en CAL3D están identificadas por los ficheros con extensión cmf.

Todo modelo puede tener varias animaciones. Y como ya he explicado en otro post es posible realizar transiciones entre ellas o aplicarlas en un momento dado. Las animaciones están identificadas por los ficheros con extensión caf.


Al hablar de materiales, debemos tener en cuenta varios factores. Si el modelo se ha dividido en varias mallas, deberá tener un material por malla. Un material indica de manera básica, como se aplicará la luz y las transparencias sobre el modelo.

CAL3D para un material usa los valores habituales para definir los colores y valor para el brillo:

ambientColor, diffuseColor, specularColor y shininess.

También, puede indicar que usa una o varias texturas. Los materiales están identificados por los ficheros con extensión crf.

No olvidemos que para facilitar la carga de un fichero se recomienda construir un fichero de texto donde indicamos cuales son todos los ficheros que forman el modelo.

Esto es, a grandes rasgos, los ficheros que forman la estructura de un modelo en CAL3D.

El contenido de un fichero cfg podría ser así:

################################################
#
# Marinero Futuro - Cal3d cfg File
#
################################################

scale=1.0

################# Skeleton #################
skeleton=marineroF-esqueleto.csf

################# Meshes #################
mesh=marineroF-malla.cmf

################# Animations #################
animation=marineroF-andando.caf

################# Materials #################

material=marineroF-cuerpo[0].crf
material=marineroF-cabeza[1].crf

EXPORTACION

Recordar que debemos tener los plugins de exportación del CAL3D instalados como indican las instrucciones en el 3DMAX. Comenzamos:

La exportación siempre se debe comenzar con el esqueleto de la figura. El esqueleto de la figura se usará para controlar las mallas y animaciones que se pueden asociar a ese esqueleto.

Para eso en el 3DMAX seleccionamos únicamente el biped. Si lo seleccionamos en modo ‘figure mode’ la figura se exportará con la posición que por defecto adopta el biped.

Al exportar el biped se pueden seleccionar los nodos que queremos exportar aunque mi experiencia me ha demostrado que CAL3D no acepta fácilmente que se quiten nodos de un esqueleto.


















Una vez que tenemos exportado el esqueleto podemos exportar en cualquier orden las mallas o las animaciones.

Si se elige exportar primero las mallas, se debe tener en cuenta que pueden surgir algunos problemas. Si el modelo esta compuesto por varias mallas es mejor exportar cada una de ellas aparte. Se pueden prevenir problemas en la exportación, provocados por el esqueleto o los materiales. En algunos casos, el exportador falla estrepitosamente al intentar exportar todo un modelo en una sola malla.

En el ejemplo se ve que este modelo esta compuesto de una sola malla.









Al exportar una malla se debe seleccionar el esqueleto que le corresponde. CAL3D no acepta que se exporte una malla de un modelo sobre el esqueleto exportado de otro modelo.










Podemos indicarle el número máximo de huesos que influyen sobre un vértice y el peso mínimo que tendrá un hueso para esa influencia. Los valores que aparecen por defecto, en general, no es necesario cambiarlos.



Al exportar un modelo se puede seleccionar que nos calcule el ‘LOD’ de la figura para luego usarlo a la hora de reducir el número de polígonos que se mostrarán.

Por ultimo, nos pregunta si queremos hacer uso de un sistema que esta en fase de pruebas para el tratamiento de telas.


Si vamos a exportar las animaciones, debemos tener la precaución de que el modelo no este ‘figure mode’. Si esta en este modo, no tendremos generada animación alguna en la exportación. Para exportar una o varias animaciones lo único que debemos hacer es indicar el esqueleto que se usará para el modelo. Se pueden activar o desactivar nodos. Con lo que se pueden dejar partes de un modelo sin animación o que se produzcan efectos no deseados.

Como se ve en la pantalla, es posible exportar partes de una animación o reducir el número de ‘frames’ que se usan en la animación.



Para exportar los materiales debemos de tener cada uno de los materiales del modelo en un slot en la ventana de materiales del 3DMAX.

Además, cada material deberá tener asignado en su nombre un número entre corchetes empezando con el cero. Así, si tenemos tres materiales, uno para la cabeza, otro para el tronco y el último para las piernas se llamarán:

Cabeza[0]

Tronco[1]

Piernas[2] ...

O algo similar pero respetando que deben llevar los números en el nombre.

El orden de exportación se debe respetar, exportando cada uno de los materiales en su orden numérico. Además, los nombres en los ficheros exportados, deberán llevar también el mismo número que se ha usado en el 3DMAX.

Dicho orden se debe respetar en el orden de carga de los materiales y la asignación de las mallas ya que si no se hace así, el material se cargará pero no CAL3D no lo aplicará correctamente.

En el caso en el que se modifique una malla o se cambie un material, se deberá exportar otra vez, tanto la malla como el material. Si no se hace así, el resultado seria incorrecto y partes de la malla se presentarían sin texturas como se puede ver:

Y eso es todo. Si nuestra exportación es correcta el resultado se podrá comprobar en los visores de modelos que incorpora el CAL3D o en el programa para analizar los modelos que forma parte de nuestro proyecto. El resultado será el siguiente:



Espero que este tutorial os sirva para poder trabajar mas comodamente con las exportaciones. En breve, subiremos este tutorial a nuestra web en formato pdf para su descarga.

Saludos a todos.

5 Comments:

  • ¿Para que quiero un tuto si ya tengo a Aris? :-P

    By Blogger Victor M., at 21 marzo, 2006 08:33  

  • Gamberro. Yo no me vendo barato...

    By Blogger Aristóteles, at 21 marzo, 2006 09:26  

  • Hola. Acabo de descubrir vuestro proyecto, y yo aqui, a miles de km de Espana, de mi familia y de mi ordenador. Nada, que me tendre que aguantar sin poder deciros ni siquiera que me ENCANTARIA participar en el proyecto. Si alguna vez necesitais a un tecnico de sonido, musico o disenador 3D de niveles, y hablo dentro de unos meses (no se cuantos, ufff!), aqui me tendreis. Me pondre en contacto con vosotros cuando vuelva a darme de alta en la vida.ENHORABUENA!

    Saludos.

    By Anonymous Anónimo, at 29 junio, 2006 13:26  

  • Hola gente, ¿que tal andais? Mi nombre es David y estoy haciendo un Proyecto fin de carrera que, la verdad, me habeis facilitado en parte con este tutorial. El problema viene a la hora de cargar las texturas(materiales), en el miniviewer sale todo perfecto, esqueleto, malla, animacion pero se ve en gris, no carga los materiales. Lo he hecho como decis pero no hay manera, no se si puede ser problema del miniviewer. A ver si me podeis contestar con algo. Igual al exportarlo despues a OSG se soluciona el problema, no se...
    Gracias por todo gente.

    By Anonymous Anónimo, at 11 septiembre, 2007 13:14  

  • Hola David. Si no recuerdo mal, el miniviewer no carga bien los materiales y las texturas.

    Lo que te recomiendo es que para tu proyecto, te prepares un visor de modelos, quizas modificando el miniviewer, ya que te adelantará mucho trabajo.

    By Blogger Aristóteles, at 11 septiembre, 2007 15:55  

Publicar un comentario

<< Home