In this tutorial I will show you how to create a UV map.
I searched the web and the documentation briefly and I didn't find anything very concrete, but here I created a functional example.
The example contains a function that calculates dimensions, which are then processed and added to the UV Editing workspace.
This is what the source code added to the initial script tested looks like:
mesh.validate()
import math
def get_dimension(normal):
x_abs = math.fabs(normal[0])
y_abs = math.fabs(normal[1])
z_abs = math.fabs(normal[2])
if z_abs >= x_abs and z_abs >= y_abs:
return 2
elif x_abs >= y_abs:
return 0
else:
return 1
texture_scale = 1.0
bpy.ops.object.mode_set(mode="EDIT", toggle=True)
me = obj_branch.data
bm = bmesh.from_edit_mesh(me)
uv_layer = bm.loops.layers.uv.verify()
for f in bm.faces:
largest_index = get_dimension(f.normal)
for l in f.loops:
luv = l[uv_layer]
luv.uv = l.vert.co.yz * texture_scale
luv.uv = l.vert.co.xz * texture_scale
luv.uv = l.vert.co.xy * texture_scale
me.update()
Here is a screenshot of the result, you can see that it only shows the node, you can select for all nodes to see a final result.