|
From: Gerardo H. <ma...@si...> - 2009-12-02 00:38:31
|
Yo creo que lo primero que hay que resolver dentro del proyecto de Mundo Java es cómo le vamos a hacer para producir todos los assets necesarios. Por assets me refiero a: * Modelos 3D * Texturas * Animaciones * Artwork 2D * Sonidos * Música En particular, yo creo que la parte más compleja es la de Modelos 3D + Texturas + Animaciones. Mi preferencia para hacer el modelado en 3D es que usemos Blender ya que es software libre y funciona en los principales sistemas operativos. Además existe un plugin para Blender, llamado 'hottbj', que permite exportar los modelos a unos archivos XML que jMonkeyEngine puede leer. Ya hice unas cuantas pruebas. Es posible crear un modelo en Blender, texturizarlo (UV mapping/painting), crear su armature (esqueleto) y animarlo para después exportar todo eso con hottbj y leerlo desde jMonkeyEngine. Funciona (hay que tener un poco de cuidado sobre como se define todo en Blender, pero si se siguen ciertas reglas funciona sin problemas). Esos archivos XML que exporta el hottbj los quiero emplear únicamente como un paso intermedio. Para la distribución de la aplicación yo creo que los modelos deberían estar almacenados en el formato binario de jMonkeyEngine (extensión .jme) . Así serán son más compactos y se pueden leer más rápido. Para hacer esto, quiero tener dentro de nuestro proceso de build de la aplicación un paso donde se leen estos archivos XML y se generan los .jme. Pasar de XML a .jme no es la única razón para tener este paso dentro del build, hay varias más: * Existen muchos atributos posibles para los nodos de un scene graph de jMonkeyEngine que no se pueden definir desde Blender (parámetros para la aplicación de las texturas, manejo de transparencia, etc.) * Un scene graph de jMonkeyEngine puede tener Controllers. Lo controllers permiten tener animaciones sencillas predeterminadas que se ejecutan automáticamente de manera continua (por ejemplo, que estén girando las aspas de un molino). Y estos controllers también se pueden almacenar dentro de un archivo .jme * Probablemente vamos a modelar cada componente del mundo por separado y queramos tener un sólo archivo .jme de donde leemos el scene graph de una localidad completa con cada objeto ya colocado en su ubicación correspondiente. Yo creo que lo ideal es tener scripts, escritos en algún DSL (Domain Specific Language), en donde podamos definir para cada .jme que hay que generar: * Los archivos XML que tiene que leer * Parámetros extra que se le tengan que agregar/modificar a cada nodo * Controllers que se tengan que agregar * Como armar un sólo árbol de toda la localidad con todos esos XML Creo que es muy importante que todos estos pasos se hagan dentro de un script para poder garantizar que los podemos repetir automáticamente cada vez que sea necesario. Así cuando un artista modifique algún modelo en Blender, basta con que vuelva a exportar el XML y automáticamente podemos volver a armar el .jme al que pertenece. -- Gerardo Horvilleur ma...@si... 5282-3314 044 55 2709-0509 |