Tutorial para convertir personajes de Half-Life (formato .MDL) a personajes de Entidad 3D (formato .ACT)


¿ Qué necesitamos ?:


En cuanto a software:

- Programa MilkShape 3D (no incluido en Entidad 3D).

- Un programa de edición gráfica 2D tipo Gimp o Adobe Photoshop (no incluido en Entidad 3D).

- Programa Actor Studio de Genesis3D (incluido en Entidad 3D).

- Programa Actor Viewer de Genesis3D (incluido en Entidad 3D).


Otros ficheros:

- Fichero .MDL que contiene el personaje que queremos convertir (encontrarás muchos por Internet).

- Ficheros .SMD que contienen las animaciones que queremos aplicar al personaje (incluidos en este tutorial).

- Ficheros .MOT que nos servirán como nombres de animaciones (incluidos en este tutorial).



Preparando una carpeta de trabajo:


- Creamos una nueva carpeta donde realizaremos todo el trabajo de conversión, por ejemplo la creamos como 'C:\conv_personajes'.

- Dentro de esta carpeta creamos otra carpeta, por ejemplo llamada 'animaciones', con lo que tendremos 'C:\conv_personajes\animaciones'.

- Descargamos el fichero de animaciones de este tutorial (animaciones.zip)

- Descompactamos este .ZIP en 'C:\conv_personajes\animaciones'.

- Copiamos el fichero .MDL a convertir en 'C:\conv_personajes', para nuestro ejemplo utilizaremos el fichero 'salma.mdl'.



Descompactando el fichero .MDL:


Un fichero de personaje .MDL de Half-Life (formato por otro lado también utilizado por el juego Counter Strike), en realidad es un archivo empaquetado (no en formato ZIP) que contiene toda la geometría, esqueleto, texturas y animaciones de un personaje en concreto.

Este tipo de fichero no lo puede abrir directamente el programa MilkShape 3D, sino que necesitaremos descompactar todo el contenido del fichero .MDL antes de poder tratarlo.

Para descompactar 'salma.mdl':

- Abrimos el programa MilkShape 3D.

- Utilizamos la opción de la barra de menú 'Tools \ Half-Life \ Decompile Normal HL MDL File...':



- Seleccionamos el .MDL que queremos descompactar:



- El cuadro que nos aparece lo dejamos así:



Ahora tendremos en la carpeta 'C:\conv_personajes' un fichero .smd que en nuestro ejemplo será 'salma.smd', pero te puedes encontrar que el nombre de este fichero ni siquiera sea el mismo nombre que el del .MDL, el caso es que aparezca un .smd.

También, en la misma carpeta, nos habrán aparecido todas las texturas en formato .BMP que utiliza ese personaje.




Editando las texturas del personaje:


En nuestro ejemplo nos han aparecido dos texturas ('alpha.bmp' y 'salma2.bmp') que podremos modificar a nuestro gusto con nuestro programa preferido de edición 2D.

También en este punto es donde tendremos que adecuar las dimensiones de las texturas a las obligatorias para Entidad 3D, que son:

64 x 64

128 x 128

256 x 256


Así que si ves alguna textura que se sale de esas dimensiones (que es muy habitual) tendrás que redimensionarla.

Es posible que en ocasiones un personaje acepte una dimensión intermedia como podría ser 128x256, pero no es seguro que el personaje luego funcione en Entidad 3D.

También es obligatorio que todas las texturas tengan una paleta de sólo 256 colores por textura.



Cargando el personaje en MilkShape 3D:


Una vez arregladas las texturas ya estamos en disposición de cargar el personaje en MilkShape 3D.

- Para ello utilizamos la opción de la barra de menú 'File / Import / Half-Life SMD":



- Seleccionamos el fichero .SMD, en nuestro ejemplo 'salma.smd':



- El siguiente cuadro lo dejamos como está por defecto:



- Al validar el anterior cuadro aparecerá nuestro personaje en cuatro vistas:



A partir de aquí hay miles de cosas que se pueden hacer dentro de MilkShape 3D, pero como esto no es un tutorial de MilkShape 3D ... pues voy a ir directo a lo que nos interesa en este tutorial.



Exportando nuestro personaje al formato .BDY:


Ahora tenemos que salvar todo nuestro personaje (geometría, esqueleto y texturas) a un formato que pueda entender Actor Studio, que es el programa que que finalmente utilizaremos para montar todo nuestro fichero .act definitivo.

Para crear el .BDY:

- Utilizamos la opción de la barra del menú 'File / Export / Genesis3D BDY...':



- En el cuadro que nos solicita un nombre de fichero ponemos en nuestro caso 'salma':



Esto nos habrá creado el archivo 'salma.bdy'.:




Aplicando animaciones a nuestro personaje:


El fichero .BDY que acabamos de crear no contiene ningún tipo de información acerca de las animaciones disponibles para este personaje, a continuación procederemos a añadirle una serie de animaciones predefinidas.

La cantidad y el tipo de animación que queremos añadir a un personaje puede variar en función de la cantidad de animaciones que deseamos para ese personaje o de las necesidades que impone el 'software' donde evolucionará el personaje.

En el caso del uso de estos personajes en Entidad 3D son obligatorias las siguientes animaciones:


Idle para una posición estática del personaje.

Shoot el personaje disparando.

Walk el personaje andando.

Run el personaje corriendo.

Die el personaje muriendo.

Die_de_frente el personaje muriendo de otra forma.

Die_rodilla el personaje muriendo de otra forma.

Die_vueltas el personaje muriendo de otra forma.

Hit el personaje recibe un impacto.


La cantidad de animaciones que podremos añadirle a un personaje (y que funcionen bien) también depende de la cantidad de ficheros de animación .SMD que tengamos. ¿ Qué donde están esos ficheros ?. Pues son los que incluye el archivo 'animaciones.zip' y que hemos descompactado en la carpeta 'C:\conv_personajes\animaciones'.

En este caso este conjunto de ficheros .SMD nos proporcionarán 40 animaciones distintas (las obligatorias de Entidad 3D incluidas) que dotarán a nuestros personajes de diferentes acciones dentro del juego.

Yo personalmente siempre les aplico el máximo de animaciones que tenga disponibles, aunque luego no las utilice todas en un juego, para disponer de personajes con una cantidad de animaciones suficientemente variada para realizar numeras acciones en futuros proyectos.


A continuación vamos a ver como aplicar una de estas animaciones al personaje que ya tenemos cargado en MilkShape 3D. Este proceso lo deberás realizar de la misma forma para todas las animaciones que quieras añadir al personaje.


Vamos a añadir la animación de andar al personaje que tenemos cargado en MilkShape 3D:


1.- Volvemos a utilizar la opción de importación de Half-Life 'File / Import / Half-Life SMD' ...



... pero esta vez, al solicitarnos el fichero .smd, nos dirigimos a nuestra carpeta 'animaciones' y seleccionamos 'walk.smd' de entre todas las animaciones posibles:



2.- En la siguiente ventana que nos aparece simplemente pulsamos 'Si':



La animación ya se ha aplicado a nuestro personaje y lo que vamos a hacer ahora es exportar esta animación en concreto a un formato que entienda Actor Studio, que será un archivo .MOT por animación.


3.- Utilizamos la opción de la barra de menú 'File / Export / Genesis3D MOT...':



4.- En el cuadro que nos solicita un nombre de fichero, seleccionamos para el caso de esta animación, 'Walk.mot' de entre todos los ficheros .mot disponibles:



5.- Confirmar reemplazar este fichero:



6.- Finalmente borramos de la memoria esta animación:



Pues ya está creada esa animación para este personaje.

Para aplicarle otra animación tendríamos que volver a realizar lo mismo a partir del punto 1.- y variando el nombre de la animación .smd al importar y del .mot al exportar.



Montando el fichero .ACT:


Pues ahora sólo nos queda montar nuestro fichero .act a partir del fichero .BDY que hemos creado y del conjunto de ficheros .MOT que definirán las animaciones.


- Creamos otra carpeta dentro de 'C:\conv_personajes\' que la llamaremos como nuestro personaje, en nuestro ejemplo 'salma'.


- Abrimos el programa 'Actor Studio':



- Para crear un nuevo proyecto para nuestro personaje utilizamos la opción 'File / New':



- Pulsamos en el botón 'Browse' y nos dirigimos a la carpeta 'conv_personajes' donde seleccionaremos la carpeta que hemos creado anteriormente, en nuestro ejemplo 'salma':



- Una vez dentro de la carpeta de nuestro personaje, introducimos el nombre del personaje como nombre de fichero que nos solicita para el nuevo proyecto:



- Una vez pulsado en 'Guardar' en la ventana anterior, nos aparecerá la siguiente ventana donde deberemos desseleccionar 'Use Proyect Directory' y luego pulsar 'OK':



Una vez pulsado 'OK' tendremos acceso a una serie de pestañas.


- Para la pestaña 'Target' no realizaremos nada, si hemos seguido correctamente todos los pasos tendremos en la caja 'Output file' el nombre de nuestro personaje .act, que será en nombre de fichero final de nuestro personaje:



- Para la pestaña 'Body' utilizamos el botón 'Browse' para seleccionar el fichero .BDY que tenemos en la carpeta 'conv_personajes', en nuestro ejemplo 'salma.bdy':



- Para la pestaña 'Motions' pulsamos el botón 'Add' para añadir en nombre de la primera animación, para el ejemplo que nos ocupa añadiremos la animación de andar poniendo 'Walk' en la caja 'Enter motion name':





- Con la animación 'Walk' seleccionada pulsamos el botón 'Browse' y nos dirigimos a la carpeta 'animaciones' donde hemos salvado las animaciones .mot para este personaje y seleccionamos 'Walk.mot':



Pues ya tenemos una animación preparada, ya sabes lo que te toca para ir añadiendo todas las animaciones .mot que hayas salvado para este personaje. Tendrías que volver a pulsar 'Add' y volver a realizar el mismo proceso para cada animación.

Es muy importante que en nombre que entres en la caja 'Enter motion name' sea exactamente igual que el del fichero .mot al que va asociada esa animación.


- Una vez creadas todas las animaciones pulsamos en el botón 'Build' para que comience la creación del fichero .act:



- Si todo ha ido bien nos aparecerá este cuadro:


... y en la carpeta 'conv_personajes\salma' (en nuestro ejemplo) tendremos el fichero .act completamente creado y listo para utilizar en Entidad 3D.


- Si ha habido algún problema en la creación del .act en Actor Studio, nos aparecerá este cuadro:



- Si ha habido algún error nos lo mostrará en el terminal. Normalmente los errores son porque el programa no encuentra los ficheros .mot que no existen o los hemos asociado a carpetas incorrectas:



- Sólo nos queda una prueba final para comprobar que el personaje funciona correctamente, prueba que podremos realizar cargando el personaje con el programa 'Actor Viewer' y allí probando sus animaciones, rotándolo o examinando como han quedado aplicadas las texturas:



- Si al cargar el personaje con 'Actor viewer' te sale un mensaje como el siguiente, es que has utilizado unas texturas para este personaje con dimensiones que no son 64x64, 128x128 ni 256x256:



Si quieres conservar el proyecto creado sólo tienes que utilizar la opción 'File / Save'.



Pues eso es todo. No ha sido tan difícil ... ¿ no ? :)



*** F I N ***


Anexo al tutorial

Preferencias:

Antes de comenzar a trabajar con animaciones en MilkShape 3D es conveniente cambiar el valor de 'Animation FPS' en la ventana de preferencias del programa. Para entrar en esta ventana selecciona 'File/Preferences'. Ponemos este dato a 25.00


Si no ponemos este valor las animaciones que realicemos o las animaciones .SMD que importemos se mostrarán muy lentas o muy rápidas en Entidad 3D.



Animando otros tipos de modelos:

Este tutorial te ha mostrado como animar ciertos tipos de personajes de Half Life utilizando animaciones predefinidas en ficheros .SMD que tenemos creados previamente.

Este método resulta bastante efectivo en la mayoría de las animaciones de estos personajes, pero en ocasiones observarás que alguna animación se muestra un poco extraña o el personaje adopta formas raras. Esto es debido a que no utilizamos los ficheros de animación .SMD propios que incluye el mismo fichero .MDL que hemos descomprimido. Lo ideal es utilizar esos ficheros pero en algunos casos no contienen todas las animaciones que nos interesan, por lo que tendremos que combinar la utilización de los ficheros .SMD que ya tenemos con los que incluye el modelo.


En ocasiones te encontrarás que tienes un modelo 3D muy bonito y al aplicar sus animaciones observas que el personaje las realiza muy bien pero por debajo de lo que sería el suelo. Esto no nos sirve, ya que este personaje en Entidad 3D aparecería hundido en el suelo y también daría otros tipos de problemas. Yo personalmente no conozco una manera fácil y rápida de solucionar esto para todas las animaciones, por lo que yo siempre descarto estos modelos antes de perder demasiado tiempo en ellos.


Personaje hundido

Como te puedes imaginar MilkShape 3D no sólo sirve para crear y animar personajes del tipo que muestra este tutorial, sino de cualquier tipo (arañas, ratas, dinosaurios, patos, personajes de dibujos animados, etc...). El caso es que puedes crear y animar todo tipo de cosas, animales y personajes con esqueletos completamente distintos a los que utiliza este tutorial que es el esqueleto básico para personajes de Entidad 3D.

¿ Cómo se crean estos nuevos esqueletos ?, pues es algo que no se va a tratar en este tutorial, pero te lo comento por si te encuentras con modelos .MDL que sean animales, insectos o monstruos con esqueletos distintos al esqueleto básico, en este caso no debes utilizar los ficheros de animación .SMD que utilizamos en este tutorial. Para animar estos modelos es esencial utilizar los ficheros .SMD que contenga el modelo 3D y luego el truco está en exportarlos a ficheros .MOT con los nombres de animación que necesita Entidad 3D para que lo reconozca como personaje. Entidad 3D no tiene ningún problema en manejar cualquier tipo de esqueleto si se respetan al menos los 9 nombres de animación obligatorios (consultar la sección '3º- Ficheros 3D .act' del manual de Entidad 3D).


Por ejemplo. Tenemos un dinosaurio en formato .MDL que nos interesa convertir a .ACT como enemigo para Entidad 3D:

Primero lo que debemos hacer es ver este modelo .MDL y sus animaciones de una manera rápida que nos permita ver que animaciones contiene y si contiene las mínimas que necesita Entidad 3D. Esto lo podemos hacer utilizando el programa gratuito 'MDL Viewer':



En la pestaña 'Sequence' deberemos buscar las siguientes animaciones, no importa el nombre que tenga la animación ya que al exportarlas a .MOT les daremos los nombres que necesita Entidad 3D:

- El dinosaurio parado (la convertiremos como 'Idle').

- Al menos una muriendo (la convertiremos como 'Die' y si no hay más muriendo la misma animación también la convertiremos como 'Die_de_frente, 'Die_rodilla' y 'Die_vueltas').

- El dinosaurio atacando parado (la convertiremos como 'Shoot').

- El dinosaurio corriendo (la convertiremos como 'Run').

- El dinosaurio andando (la convertiremos como 'Walk').
br>
- El dinosaurio recibiendo algún tipo de daño (la convertiremos como 'Hit').


Si vemos que nos interesa ya podemos pasar a realizar los mismos pasos que indica el tutorial, pero esta vez descompactar el MDL marcando 'Sequences':



Después de descompactar observaremos que han aparecido los ficheros de siempre pero además todos los ficheros .SMD de animación de este modelo en particular. Uno o varios de estos ficheros será realmente el dinosaurio pero el resto serán las animaciones que hemos visto con el 'MDL Viewer'.

Estos ficheros .SMD serán los que utilizaremos en el proceso que indica el tutorial importando .SMD y exportando .MOT, borrando animaciones y otra vez importando .SMD y exportando .MOT. Este proceso es muy pesado y aburrido pero te aseguro que el resultado vale la pena.





Algunos consejos:

Si en el fichero .ACT resultante observas que las animaciones no acaban de quedar bien, yo sólo he encontrado una solución para este problema y es volver a crear todos los .MOT pero esta vez cerrando y volviendo a cargar MilkShape 3D para cada animación, es decir:

- 1.- Cargar MilkShape 3D.

- 2.- Importar el .SMD del dinosaurio.

- 3.- Importar el .SMD de la animación que toca.

- 4.- Exportar al .MOT de la animación correspondiente.

- 5.- Cerrar MilkShape 3D.

- 6.- Vuelta al paso 1.-


Si, ya se que es un palo, pero parece ser que MilkShape 3D, en ocasiones, no elimina del todo ciertos cuadros de animación aún utilizando 'Animate/Remove All Keyframes'.



Una cosa que podido observar es que en ocasiones una animación, por ejemplo al correr, produce no sólo la animación normal de las piernas y brazos sino que también produce el desplazamiento del personaje, cosa que no nos interesa para Entidad 3D:



Correcto


Incorrecto


Las animaciones que requiere Entidad 3D han de ser de los personajes parados en el origen X Y Z y en ese punto que se reproduzca toda la secuencia de animación que corresponda, ya que el desplazamiento del personaje lo realizará el mismo programa Entidad 3D.


Hay una manera de resolver esto, pero tendrás que editar el fichero .SMD que pertenezca a la animación que produce ese efecto.

En el caso de este dinosaurio me apareció este tipo de problema al intentar utilizar la animación 'Run', el dinosaurio no sólo se desplazaba sino que lo hacia marcha atrás, sin embargo la animación del resto de elementos del animal era la correcta.


El contenido de los ficheros .SMD está formado por diversos bloques de datos, pero para el caso que nos ocupa nos centraremos en los que están a continuación de las etiquetas 'time'. Encontrarás desde 'time 0', 'time 1', 'time 2', etc... hasta el último cuadro de animación que contenga ese fichero .SMD, finalmente encontrarás un 'end'. Dentro de cada grupo 'time' hay líneas que comienzan con un número que va de 0 a un número que puede variar en función de la cantidad de movimientos que tenga cada cuadro:



El bloque que nos interesa es el 'time 0' que resulta ser el primer cuadro de animación que normalmente es cuando el personaje aún no se ha desplazado. Dentro de este bloque nos interesa la línea numerada como 0 que indica los datos de desplazamiento del personaje. Pues bien, de lo que se trata es de copiar esa línea en el resto de bloques 'time' sustituyendo las líneas 0 de todos los bloques 'time' hasta la última:



Ya sólo queda probar importar el nuevo fichero .SMD, exportar el .MOT, crear el .ACT y ver como queda.

Aquí tienes el dinosaurio del ejemplo para ver el resultado.




Antes de importar cualquier fichero .SMD de animación, asegúrate que no quede nada de la anterior animación que hayas podido cargar. Utiliza 'Animate/Remove All Keyframes' antes de la importación y deja con valor 1 el cuadro final de animación en la barra de control de la animación, todo esto antes de la importación del .SMD:







(C) Noviembre / 2005 por Jordi Pérez