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