Olá!

Neste tutorial vamos ver como usar a função export_layout no Blender 3.0 (Alpha) para exportar os mapas UV (ou: Layouts) de todos os objectos MESH disponíveis numa cena.

Este script pode ser útil se tiver necessidade de fornecer os mapas UV como imagens PNG, por exemplo, se desejar publicar a sua cena 3D em websites de stock 3D.

A função bpy.ops que vamos usar é muito simples, na verdade: requer dois parâmetros (o caminho do ficheiro da imagem a ser criada e o tamanho UV, em pixéis), mas temos de a usar para todos os objectos MESH disponíveis na cena, portanto, iremos usar uma declaração FOR nos objectos MESH.

Antes de mais, vamos abrir um ficheiro BLEND; também é possível iniciar um ficheiro novo em folha, mas terá de o guardar em qualquer lugar, pois iremos colocar os ficheiros PNG na mesma pasta do projecto.

BPY 3 UV export tutorial 1

Vamos fazer algumas importações básicas:

 import bpy

 from bpy import *

Como disse antes, a função export_layout requer dois parâmetros, por isso, vamos definir duas variáveis (podemos escrever os valores na própria função, mas eu prefiro defini-los aqui por uma questão de clareza):

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

 UVsize = (2048, 2048)

BPY 3 UV export tutorial 2

Como se pode ver, “bpy.path.abspath” irá produzir o caminho absoluto no disco do ficheiro BLEND; vamos adicionar um prefixo (“UV-LAYOUT---”) a todos os ficheiros de imagem, mas é possível alterar ou removê-lo.

O parâmetro Uvsize é um tuple de dois valores numéricos, que são as dimensões – em pixéis – das imagens a ser criadas; estou a escrever 2048, criando, desta forma, uma imagem 2k.

Para executar a função em todos os objectos MESH disponíveis numa cena, temos de criar uma declaração FOR, então, podemos escrever:

for o in bpy.data.objects:

depois, na declaração FOR (por isso: não esquecer de indentar o texto), podemos adicionar um “filtro” no tipo do objecto:

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

A condição é clara: o tipo do atual bpy.data.object deve ser MESH.

As seguintes declarações devem ser colocadas dentro do IF, portanto, – de novo – não esquecer de indentar o 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

A tarefa irá definir o objecto ACTIVO da cena, atribuindo o atual mesh ao context.view_layer.objects.active; temos de passar por este passo porque a seguinte OPS (Blender Python operation) irá ser executada no único objecto ACTIVO (lembrar: é possível seleccionar múltiplos objectos, mas só existe um objecto activo de cada vez).

A declaração OPS irá exportar o layout do objecto ACTIVO no caminho do ficheiro dado (feito pela variável UVpath, com o prefixo “UV-LAYOUT---”, mais o nome do objecto ACTIVO) e com o tamanho dado, em pixéis.

BPY 3 UV export tutorial 4

Antes de fechar este tutorial, vou dar uma tarefa: editar este script para exportar ambos os meshes 2k e 4k UV Layouts nas suas cenas, fornecendo as imagens com dois prefixos diferentes (“UV-2K---” e “UV-4k---”, por exemplo).

É tudo! Espero que tenha gostado deste tutorial!

Até breve!