Ejercicio a modo de tutorial donde se comenta como aplicar varias texturas en diferentes zonas de una malla, utilizando Vertex Paint y nodos. Posteriormente se guarda la imagen resultante realizando un bake. descarga directa del tutorial.
Como ejemplo se ha utilizado un terreno, pero se puede aplicar el mismo proceso en diferentes tipos de malla 3d (personajes, edificios).
Saludos.
aplicación de diversas texturas en una malla.
En el ejercicio siguiente voy a utilizar como ejemplo un terreno, pero el método es igualmente aplicable a cualquier malla de un modelo 3d.
La malla del terreno será creada desde el editor de modelos del 3d game Studio (3dgs), llamado med, debido a que los terrenos creados con Blender utilizando la herramienta Sculpt Mode no pueden ser convertidos al formato.hmp que utiliza el 3dgs para los terrenos.
En el título de la ventana desde dónde generamos el terreno podemos observar las dimensiones del nuevo terreno. (en la edición gratuita lite-c free existe un límite de 256 por 256).
Una vez creado el terreno en pantalla procedemos a darle forma utilizando la herramienta magnet.
Al pie de la ventana encontraremos los controles que modifican el tamaño del pincel (range), repetición cada una cierta cantidad de mili-segundo (repeat (ms)), repetir la operación una cierta cantidad de veces (step), forma de la deformación del terreno (form), y asignar un valor mínimo.
O máximo a la altura (min z value / max z value):
Si pulsamos con el bir (botón izquierdo del ratón) situando el pincel sobre alguna parte de la malla, modificaremos la malla con la forma establecida (form).
Si pulsamos con el bdr (botón derecho del ratón) aplicaremos la forma inversa.
Una vez obtenido el terreno deseado lo guardamos en formato.hmp (para continuar con el mapeado posteriormente) y en formato (*.3ds) para continuar desde Blender.
Desde Blender importamos la malla del terreno anterior en formato.3ds.
La malla importada, en este caso, no incorpora ningún material. Procedemos a crear un nuevo material, activamos los botones vcolpaint y Shadeless, y añadimos las dos texturas iniciales (tipo imagen), imágenes relacionadas con el proceso:
Vcol Paint - Sustituye el color del material con el color de vértices Shadeless - Hace al material insensible a luces o sombras.
Posteriormente, lo que haremos será pintar los vértices de la malla, desde modo Vertex Paint, en blanco y negro, donde el color negro representa a la primera texturas y el blanco a la segunda. Inicialmente la malla se encuentra toda pintada de blanco en el modo Vertex Paint, por esta razón en primer lugar situaré a la textura utilizada para colorear las zonas rocosas o montañosas (color negro) y en segundo lugar las zonas verdes (color blanco).
Ya tenemos la primera textura base.
Para introducir una segunda textura tipo imagen pinchamos sobre una celda vacía de la pestaña texture y repetimos el proceso anterior.
ya tenemos la segunda textura base.
Cambiamos a modo Vertex Paint.
y cambiamos la ventana inferior al panel de edición editing.
Como vemos la malla tiene todos sus vértices pintados de color blanco.
Cambiamos el color del pincel a negro para colorear las zonas rocosas. Pinchamos con el bir la zona que muestra el color del pincel.
Se abre una nueva ventana que muestra la paleta de colores. Primero pinchamos el botón sample que mostrara el cursor del ratón con forma de pipeta. A continuación, seleccionamos el color negro que aparece en la paleta de colores base con el bir.
Manteniendo pulsado el bir vamos coloreando de negro la malla.
Cambiamos una de la ventanas de Blender al editor de nodos, y pulsamos el botón use nodes.
Aparecen dos tipos de nodos, de los cuales eliminamos el nodo material.
Para saber que nodo se encuentra seleccionado, nos fijamos en el título de la ventana de los distintos nodos, donde apreciamos que el color de texto es blanco en el nodo seleccionado y negro en el resto.
Deseleccionamos todo pulsando a, hasta que el color de texto de los título de ventana sea negro. Así evitamos conexiones entre el nuevo nodo creado y algún nodo existente.
Añadimos el primer nodo, del tipo texture, que incluirá la textura que representa a los vértices de color negro.
De-seleccionamos todo pulsando a, y añadimos otro nodo del mismo tipo para la segunda textura que representa a los vértices de color blanco.
en ocasiones, el nuevo nodo creado no aparece en pantalla y debemos realizar un zoom (girar rueda central del ratón) o desplazarnos por la ventana del editor de nodos (mantener pulsado el botón central del ratón mientras arrastramos).
Sitúa los nodos en la posición que permita realizar conexiones entre ellos fácilmente seleccionándolos con el bir y arrastrando manteniendo pulsado el mismo botón del ratón.
Para mezclar las diferentes texturas utilizamos el nodo mix. (deseleccionar todo primero).
Este tipo de nodo utiliza un tercer tipo de dato, el factor. Al inicio se encuentra establecido a 0.50, lo cual mezclaría las dos texturas al 50%. Para indicar que utilice el color de los vértices de la malla para mezclar las dos texturas utilizamos el nodo geometry.
Este sería el cuadro de conexiones de los diferentes nodos.
Podemos observar el resultado de la operación realizando un render.
Puedes rectificar el pintado de los vértices desde el modo Vertex Paint como hemos visto anteriormente y realizar tantos render como sean necesarios antes de guardar el resultado.
Para guardar el resultado en un archivo imagen debemos realizar un bake. Comenzamos desde modo edición.
Al tratarse de un terreno el mapeado es más simple. Establecemos vista superior top.
Con toda la malla seleccionada (pulsar a si es necesario para seleccionar todo) establecemos las coordenadas del mapeado pulsando u o menú Mesh->uv Unwrap y seleccionando la opción Project from view (Bound), es decir, trabajo desde vista (frontera o límites) que ajusta las coordenadas del mapeado al ancho y altura de la imagen del mapeado.
Para ver el resultado de este proceso debemos cambiar una de las ventanas de Blender al UV/Image Editor, donde encontraremos las coordenadas del mapeado sin ninguna imagen asignada.
Creamos una imagen en blanco para guardar el bake.
A continuación, realizamos el bake.
Este sería el resultado desde la ventana del UV/Image Editor.
Guardamos la imagen antes de continuar añadiendo más texturas a la malla.
Podemos establecer el formato de la imagen. En este caso, necesito aplicar el formato. Bmp para poder ser utilizada la imagen desde el 3dgs.
debemos asignar a la primera textura (color negro en el modo Vertex Paint) la nueva imagencreada. Primero, de-seleccionamos el botón use nodes desde la ventana del editor de nodos.
Volvemos al panel de texturas y establecemos la ruta de imagen_mapeado realizada con el bake a la primera textura.
A la segunda textura le asignamos la nueva imagen que deseamos añadir.
Volvemos a seleccionar el botón use nodes.
Desde el modo Vertex Paint o pintado de vértices, primero pintaré todos los vértices de la malla de negro. Aplicaré la opacidad máxima para realizar este proceso más rápido.
Voy a aplicar la nueva imagen con aspecto de tierra ligeramente sobre el terreno, utilizando una opacidad de 0.25 o inferior, y seleccionando el color blanco.
Realizamos un render para comprobar los cambios realizados.
Antes de guardar los cambios realizando un bake desactivar el botón clear de la pestaña bake para no borrar la primera textura.
Guardar la imagen creada con el bake desde la ventana del UV/Image Editor ejecutando la sentencia del menú image->save.
Realizando estas operación podemos seguir añadiendo más texturas o emplear texturas procedurales de Blender.
También podemos aplicar estas modificaciones sobre otros tipos de modelos 3d (personajes, enseres, edificios).
Seguimos desde el med del 3dgs para emplear la imagen de mapeado creada desde Blender. Abrimos el terreno en formato. Hmp creado inicialmente y ejecutamos la orden del menú edit->manage skins.
creamos un nuevo skin o piel/capa.
indicamos el tipo texture y le establece la ruta del archivo que contiene la imagen.
Cerramos la ventana anterior, y aplicamos los cambios seleccionando primero el skin con el bir y a continuación pulsando el botón set skin. Para finalizar, cerramos la ventana.
este sería el resultado.
![]()