Novedades del mes (y algo de texture baking)

Sí, sabemos que hemos estado un poco (¿muy?) ausentes en la blogosfera estas últimas semanas…¡pero eso es porque os traemos noticias! Para los que nos sigáis en las redes sociales no será técnicamente una novedad, pero hacer una recapitulación aquí me hace una persona algo más feliz, así a que los que estéis ya al tanto os dejo hacer scroll hasta la parte del tutorial ; )

Las novedades

  • En primer lugar…3 Headed Monkey Awards! Holy shit. No, aún no nos lo creemos. La verdad es que el hecho de haber ganado un premio a mejor videojuego mobile en el estadio en el que estamos no es ya un logro, sino algo que ni siquiera podíamos imaginar. Todos lo que salían al escenario a dar el discurso de agradecimiento decían que no se habían preparado nada. Nosotros ni siquiera sabíamos que se tendría que hacer un discurso, ¡así que imaginaos! Más allá de eso, fue una experiencia muy enriquecedora. No vamos a mentir y decir que el premio no fue una sorpresa agradable, pero el sentimiento de compañerismo que había en general fue la guinda del pastel. ¡Un placer haber estado allí! #3hma

  • Como podéis imaginar, el habernos presentado ya a un concurso significa que empezamos a tener algo jugable. Sin embargo, como en esto del desarrollo nada es totalmente predecible, en realidad daremos un paso "hacia atrás": dejaremos de trabajar en el prototipo (que es lo que se presentó en los 3HMA) y nos centraremos en lo que ya sería propiamente la beta, debido a cambios de base en la programación. Y decimos “hacia atrás” porque para poder avanzar a veces es necesario retroceder. Eso también significa que las pruebas beta (Apple tiene algo muy práctico llamado TestFlight que te deja testear con solamente un email del interesado) se posponen hasta después de verano. Aún así, animamos a los interesados en ser beta-testers a dejarnos ya sus datos de contacto 🙂

  • Además, el equipo está a punto de cerrar una capítulo más de esta primera etapa: este pasado martes fue nuestro último día en Yuzz Sant Feliu: un programa de formación para jóvenes en el ámbito de empresa y emprendimiento, y en el que nosotros entramos con 3 Happy Tigers / Cubzzle. Así que esta es otra razón por la que hemos estado algo out, ya que el requerimiento es presentar un plan de empresa. Que para no aburriros, solamente os diremos que tiene muuuuchas páginas. A finales del mes tenemos la defensa ante el jurado, así que ¡deseadnos suerte!

El (mini) tutorial: texture baking en Blender

Y ahora que hemos hecho ya el (obligado) repaso, hemos pensado que ya que el primer prototipo ya ha visto la luz podíamos aprovechar para dar algunos detalles más del desarrollo. Más concretamente, del texturizado.

¿Alguna vez habéis oído el término baking? No, no me refiero a los pasteles. Estáis perdonados si pensáis en comida cada vez que alguien lo mencione. Yo lo hago cada vez que abro la interficie de Blender y veo el dichoso botón. ¿Pero qué significa exactamente cuando nos referimos a 3D? A decir verdad, hasta hace unas pocas semanas si me hubieran dicho baking hubiera contestado muffin. Homer Simpson adora las rosquillas. Nosotros también, no vamos a negarlo Homer Simpson adora las rosquillas. Nosotros también, no vamos a negarlo

Por suerte, San Google siempre tiene la respuesta. Pues bien, se trata de transferir la información de un lugar a otro lugar. Como por ejemplo cálculos matemáticos que pueden cargar mucho el procesador y que se guardan previamente (como en el caso de las físicas). O texturas, que es de lo que hablaremos hoy.

¿Pero para que querría uno transferir texturas?

El principal motivo es mejora del rendimiento, (como básicamente cualquier tipo de baking). Cuando generamos el modelo en 3D, tenemos muchos materiales diferentes. Sin embargo, como podéis imaginar, una vez la fase de modelado ha terminado y sabemos que esos colores y diseños se van a quedar así, no es demasiado práctico. ¿La solución? Pasarlas todas a una sola imagen que se aplica como si fuera un envoltorio.

Esto es lo que es más o menos un mapa UV: la proyección de una imagen en 3D al 2D. Pensad en algo como un patrón de costura. Incluso su aspecto recuerda a eso. El patrón de costura es algo aparte de las telas que se usen: las telas pueden cambiar, pero si el patrón a partir de las cuales se recortaron sigue siendo correcto, encajarán para formar la pieza entera. Lo mismo pasa con el mapa UV y la textura. El mapa UV es una información que se guarda en el modelo mismo, por lo que cuando se vuelva a unir el modelo y textura en Unity uno encaja con otro. UV Maps y texturas en Blender

¿Y si le sumamos también la iluminación?

Lo más interesante del texture baking es que se guardan no solo los colores: todo el aspecto, incluida la iluminación, queda gravada en una sola imagen que es la textura (para ser más exactos, es algo que puedes escoger a la hora de renderizar, pero no entraremos en excesivos detalles). En nuestro caso eso nos interesaba porque nos permitiría evitar la iluminación en tiempo real: tener ya los puntos de sombra y luz “pintados” sobre los elementos en lugar de poner un punto de luz en el escenario para que genere sombras frame a frame. Texturas con la iluminación (Blender)

El resultado es que si importamos a Unity (el modelo en .fbx más la textura con la iluminación) esto es lo que vemos: Texturas importadas en Unity)

Esta pantalla no tiene puntos de luz aparte de una iluminación global, pero aún así la sensación de volumen está presente. ¿Es esta la solución ideal? No lo sabemos. Quizás haciendo pruebas de rendimiento nos demos cuenta que podemos permitirnos generar las sombras en tiempo real (algo que también le da cierto un dinamismo y realismo que de otro modo está ausente). Aún así, tener todos los colores en un solo archivo en forma de textura en lugar de mil materiales diferentes es ciertamente práctico.

Y ahora sí os dejamos el tutorial paso a paso más a bajo para los interesados. ¡Ánimos, y a seguir aprendiendo!

Paso a paso

1) En primer lugar, tenemos que abrir el elemento con el que queremos trabajar. Como se puede ver, la malla tiene diferentes materiales aplicados. Elemento con materiales en Blender

Para conseguir ese “patrón de costura” del que hablábamos tenemos que entrar en el modo editar (Tab), seleccionar todos los vértices y seleccionar uno de los modos de UV Unwrap (la proyección de 3D a 2D). Nosotros siempre hemos usado smart UV unwrap, que según el manual de Blender “rompe la malla en islas basadas en el umbral del ángulo”. No sabemos que significa eso exactamente, pero nos funciona. Smart UV unwrap en Blender

2) El siguiente paso sería situarlo en el escenario donde queremos que obtenga su aspecto final. En nuestro caso, significa ponerlo en el cubo con la iluminación global (por aquello de “falsear” luces y sombras), aunque se podría iluminar en el mismo archivo si es lo que queremos (y de hecho, lo que se ha hecho para las imágenes de más arriba del tutorial). Si trabajamos en otro archivo habrá que importarlo (File > Append); al hacerlo se importa el patrón que veis arriba, ya que es una información que ha pasado a ser parte del archivo.

3) Antes de poder hacer el bake, tenemos que decirle a Blender a donde tiene que guardar la información (en nuestro caso, texturas). Para ello entramos en el UV Map editor y creamos una nueva imagen. Nueva imagen en UV Map Editor

Luego, en el Node Editor creamos un nuevo nodo que haga referencia a dicha imagen, Texture > Image Texture, y lo seleccionamos. Esto hay que hacerlo para cada material. Nueva textura de imagen por cada material

4) El último paso es el baking en sí. Lo podemos encontrar en el menú lateral, en la primera pestaña en la zona inferior. Bake en el menú de Blender

5) Una vez generado el render, podremos encontrar las imágenes en el UV/Image Editor. Dicha imagen tiene que ser guardada, o perderemos el resultado. Guardar las texturas generadas

Y hasta aquí el post de hoy. ¡Un abrazo a todos! :*

One response

Leave a Reply

Your email address will not be published. Required fields are marked *