Mapear materiales con BAKE
por Kaito


Es conocida la cantidad y tipos de materiales utilizados por Blender. Estos materiales (metal, madera, etc... ) pueden ser utilizados en los 'game engines' (es decir, Motores de Juego) utilizando la función BAKE (volcado del render de cada cara del modelo en 3D en la imagen que contiene sus coordenadas UV) de Blender, facilitando el proceso de texturizar y mapear de la malla.

A continuación, explico los procesos que he utilizado.

Primero voy a crear una textura “en blanco” de 512x512. Voy a utilizar el formato TARGA (.tga) 32 bits, reconocida por la mayoría de motores de juego, desde PAINT.NET (por ejemplo). Sera necesaria posteriormente para realizar el BAKE.









Desde Blender, tenemos un modelo 3D al que se le han aplicado 3 materiales diferentes.




Debemos configurar correctamente la iluminación del escenario, para que en el BAKE no aparezcan zonas oscuras o en sombra completamente. Para el ejercicio he aplicado 4 lamps (es decir, lamparas) y una del tipo 'Spot' (de 'Spotlight', es decir, Foco). También he ajustado la posición de la cámara para ver el modelo 3D completamente. Dejo capturas del formulario 'Transform Propesties' de los diferentes objetos de iluminación.




Comprobamos el efecto y las sombras producidas por los objetos de iluminación, realizando un RENDER.




Establecemos una de las ventanas al tipo 'UV/Image Editor'.




Con el modelo 3D seleccionado cambiamos a 'Modo Edición' (en inglés 'Edit Mode'), y seleccionamos todo (debería estar seleccionado todo ya, pulsa 'A' si es necesario para seleccionar todo), a continuación pulsamos 'U' o menú 'Mesh-->UV Unwrap' para que aparezca el menú de opciones de mapeado, donde seleccionamos la opción 'Unwrap (smart projections)' (es decir, pequeñas proyecciones).



Seguidamente aparece un formulario, pulsa 'OK' para terminar (puedes modificar la celda 'Island Margin', es decir, 'Margen de Isla' para separar la diferentes partes proyectadas de la malla y así poder modificar con mayor facilidad la textura desde el editor gráfico posteriormente. El valor 0 proyecta las partes de la malla pegadas).



Este sería el resultado del mapeado (unwrap) en la ventana del UV/Image Editor.




Ahora, abrimos desde la ventana del 'UV/Image Editor' la textura en blanco creada anteriormente, ejecutando la orden del menú 'Image-->Open'. (es decir, abrir). Es necesario hacer esto, debido a que la función BAKE de Blender necesita una textura sobre la que escribir o realizar el BAKE.



Ya podemos realizar el BAKE con el botón 'Full Render' activado para realizar el 'BAKE' con las sombras aplicadas sobre la textura. Si seleccionas el botón 'Textures' (situado un poco más abajo) el BAKE no recogera las sombras proyectadas sobre el modelo 3D. También puedes configurar un parámetro llamado 'Margin' (es decir, Margen) para que la textura creada por el BAKE sobresalga de las coordenadas del mapeado (unwrap).



Este sería el resultado desde la ventana 'UV/Image Editor'.




Naturalmente, ahora puedes modificar la textura(agregar texto, símbolos, etc...) desde el editor gráfico (en este caso, PAINT.NET). O puedes pintar la textura desde Blender, desde el modo 'Texture Paint' como se hizo en el ejercicio de creación Terrenos 3D para game engines (o motores de juego) personalizados.

Al modificar la textura, el menú 'Image' de la ventana 'UV/Image Editor' ha cambiado a 'Image*'. Debemos guardar la textura para mantener los cambios ejecutando la orden del menú 'Image*-->Save'.



Antes de exportar el modelo 3D a DirectX (.x) debemos activar el botón 'TexFace' de TODOS los materiales.



Ahora ya ejecutamos la orden desde el menú de la VENTANA 1 'File-->Export-->DirectX (.x)' IMPORTANTE: Guardar




IMPORTANTE: Guardar el archivo (.x) en la misma carpeta, junto a la textura.

MEJORANDO LO REALIZADO HASTA AHORA
Podemos modificar la textura para situar una imagen en la zona que comprende la coordenadas de mapeado (unwrap) de los ojos que están completamente oscuras. Para esto, he realizado lo siguiente.



Primero debemos guardar en un archivo imagen la proyección de la malla del mapeado, mediante el script de Blender 'Save UV Face Layout' (es decir, Guardar Colocación de Cara UV), desde el menú de la ventana 'UV/Image Editor' 'Uvs-->Scripts-->Save UV Face Layout'




A continuación guardamos un archivo imagen TARGA (.tga) con el nombre que queramos (he utilizado Rejilla.tga). El Script añade al nombre '_Cube'. Es decir, quedaría Rejilla_Cube.tga. Esto es debido a que esta activado el botón 'Object' que añade el nombre del objeto al archivo.



En el formulario del script podemos ver los botones 'Wrap' (es decir, Envolver, es conveniente dejarlo marcado ya que mueve ligeramente el mapeado centrandolo en la textura). El botón 'All Faces' activado guarda todas las caras en el archivo imagen. Este sería el resultado (imagen siguiente).






Pero sólo queremos modificar la zona de los ojos. Para esto selecciona en el Modo Edición, desde una de las vistas, las caras de dicha zona. En el modelo del ejercicio he utilizado la orden del menú 'View-->Set Clipping Border' (es decir, establecer borde de corte) para visualizar una determinada zona durante la selección, y la orden 'Border Select' pulsando 2 veces 'B' para seleccionar con la forma circular.




Este sería el resultado en la ventana del 'UV/Image Editor'.



Ahora guardamos con el script las caras seleccionadas, desactivando el botón 'All Faces'. También voy a desactivar el botón 'Object'.



Ahora, desde el editor gráfico (en este caso PAINT.NET), abrimos primero la textura principal, en este caso Hormiga.tga (para que luego se encuentre detrás de la capa que contiene Rejilla.tga) ejecutando la orden del menú 'Archivo-->Abrir' o el botón de acceso directo .

Finalmente, agregamos en una nueva capa el archivo imagen Rejilla.tga, ejecutando la orden del menú 'Capas-->Importar desde archivo'.




Con el selector de color (varita mágica) mientras mantenemos pulsada la tecla mayúsculas hacemos clik con el BIR sobre el fondo blanco de Rejilla.tga, para seleccionar todo el fondo blanco de la imagen. A continuación pulsa 'Suprimir' para eliminar y hacer transparente.



Este sería el resultado.



Las aristas o líneas son de color negro, y no se aprecian bien. Lo que sí se ven, son los vértices representados por puntos rojos.

Puedes invertir colores para hacer las aristas blancas.







Para modificar la textura principal (en este caso Hormiga.tga) y al mismo tiempo ver Rejilla.tga debemos tener seleccionada la capa de Hormiga.tga.



Ahora voy a crear un nuevo archivo imagen donde voy a dibujar el iris y pupila del ojo. Comienzo creando un archivo nuevo como se comentó al inicio del ejercicio, y dibujo primero un círculo verde y luego uno más pequeño negro. Utilizando la 'Selección en Elipse' o circular copio el área necesaria al archivo donde se encuentra la textura principal. Aquí dejo unas imágenes.




Al pegar la selección pulsando Ctrl+V sobre la textura principal debemos ajustar su tamaño seleccionando las agarraderas y arrastrando el ratón. Para mover de posición pincha por la zona central de la textura copiada.



Una vez situado en el primer ojo, realizo otro Copiar/ Pegar y muevo la copia al segundo ojo. Este sería el resultado.




Ya puedo eliminar la capa donde se encuentra la rejilla y guardar la textura principal.




Este sería el resultado después de ejecutar la orden desde 'UV/Image Editor' del menú 'Image-->Reload' (es decir, Recargar).





Las caras o superficies que han quedado por pintar, son trozos de mapeado aislados que es mejor retocar desde 'Texture Paint'. Pero en este caso, no consigo los resultados buscados.



Voy a seleccionar las caras que ocupa la zona coloreada del ojo y voy a escalar al máximo. Este sería el resultado.



También voy a escalar las coordenadas UV desde la ventana del 'UV/Image Editor' (Pulsa 'S' para escalar o 'G' para mover).



Finalmente.