¡Hola!

En este tutorial, veremos cómo usar la función export_layout en Blender 3.0 (Alpha) para exportar los mapas UV (o: Layouts) de todos los objetos MESH disponibles en una escena.

Este script puede ser útil si tiene que proporcionar los mapas UV como imágenes PNG, por ejemplo, si desea publicar su escena 3D en algunos sitios web de stock 3D.

La función bpy.ops que vamos a usar es bastante simple, en realidad: requiere dos parámetros (la ruta de archivo de la imagen a crear y el tamaño UV, en píxeles), pero tenemos que usarla para todos los MESH objetos disponibles en la escena, por lo que usaremos una instrucción FOR en los objetos MESH.

En primer lugar, abramos un archivo BLEND; También puede comenzar con un archivo nuevo, pero tendrá que guardarlo en algún lugar, porque colocaremos los archivos PNG en la misma carpeta del proyecto.

BPY 3 UV export tutorial 1

Hagamos algunas importaciones básicas:

 import bpy

 from bpy import *

Como dije antes, la función export_layout requiere dos parámetros, así que definamos dos variables (podríamos escribir los valores en la función en sí, pero prefiero definirlos aquí para mayor claridad):

 UVpath = bpy.path.abspath(“//”) + “UV-LAYOUT---”

 UVsize = (2048, 2048)

BPY 3 UV export tutorial 2

Como puede ver, "bpy.path.abspath" producirá la ruta absoluta en el disco del archivo BLEND; vamos a agregar un prefijo ("UV-LAYOUT ---") a todos los archivos de imagen, pero puede cambiarlo o eliminarlo.

El parámetro UVsize es una tupla de dos valores numéricos, que son las dimensiones, en píxeles, de las imágenes que se crearán; Estoy escribiendo 2048, creando así una imagen de 2k.

Para ejecutar la función en todos los objetos MESH disponibles en una escena, tenemos que crear una instrucción FOR, para que podamos escribir:

for o in bpy.data.objects:

luego, en la instrucción FOR (así que no olvide sangrar el texto), podemos agregar un "filtro" en el tipo de objeto:

if(o.type==”MESH”):

La condición es clara: el tipo de bpy.data.object actual debe ser MESH.

Las siguientes declaraciones deben colocarse dentro del IF, así que, nuevamente, ¡no olvides sangrar el texto!

bpy.context.view_layer.objects.active = o

bpy.ops.uv.export_layout(filepath = UVpath + o.name, size = UVsize)

BPY 3 UV export tutorial 3

La asignación establecerá el objeto ACTIVE de la escena, asignando la malla actual a context.view_layer.objects.active; tenemos que hacer esto porque la siguiente OPS (operación de Blender Python) se realizará en el único objeto ACTIVO (recuerde: puede seleccionar varios objetos, pero solo hay un objeto activo a la vez).

La declaración OPS exportará el diseño del objeto ACTIVE en la ruta de archivo dada (hecha por la variable UVpath, con el prefijo "UV-LAYOUT ---", más el nombre del objeto ACTIVE) y con el tamaño dado, en píxeles.

BPY 3 UV export tutorial 4

Antes de cerrar este tutorial, te voy a dar una tarea: edita este script para exportar los diseños UV 2k y 4k de las mallas disponibles en tus escenas, proporcionando las imágenes con dos prefijos diferentes (“UV-2K- - ”y“ UV-4k --- ”, por ejemplo).

¡Eso es todo! ¡Espero que disfrutes este tutorial!

¡Nos vemos pronto!