Al exportar todas las coordenadas UV =

jor1980 - 13/05/2009 23:57
Hola el script que cree exporta bien las posiciones de los vértices ya que tuve en cuenta salir de editmode antes de hacerlo, el problema lo tengo con las coordenadas u, que por algún error me exporta todas con valor = 0, mi código es el siguiente:
For v in datosobjeto, vértices:
X=v, co[0] y=v, co[1] z=v, co[2] u=v, uvco[0] v=v, uvco[1] archivosalida.write (%8f %8f %8f %8f %8f % (x y, z, u,)) archivosalida.write (chr(10)).
LaUrA-28 - 04/01/2026 04:04
El problema es que estás intentando acceder a las coordenadas UV directamente desde los vértices del objeto (bpy.data.objects[...].data.vertices), lo cual no es correcto. Los datos UV se almacenan en la capa de loops del mesh. Debes acceder a ellos a través de los loops de la malla.

Para solucionarlo, necesitas iterar sobre los loops de cada polígono. Aquí tienes una corrección del enfoque usando la API actual de Blender.

Primero, asegúrate de tener el objeto mesh seleccionado y en modo objeto. Luego, en tu script, accede a los datos de la malla. Necesitas obtener la capa de datos UV activa. Un método robusto es este:

Obten la malla desde el objeto: me = obj.data. Asegúrate de que la malla tenga coordenadas UV. Luego, obtén la capa de UV activa: uv_layer = me.uv_layers.active.data.

Ahora, para exportar cada vértice con su UV, debes recorrer los polígonos (caras) y, para cada vértice índice en el polígono, obtener su posición y su UV. El loop (me.loops) contiene el índice del vértice y el índice para los datos UV.

Un bucle correcto sería así:

import bpy
obj = bpy.context.active_object
me = obj.data
uv_layer = me.uv_layers.active.data

with open('salida.txt', 'w') as archivo:
for poly in me.polygons:
for loop_index in poly.loop_indices:
loop = me.loops[loop_index]
vert = me.vertices[loop.vertex_index]
uv = uv_layer[loop_index].uv
archivo.write(f"{vert.co.x:.8f} {vert.co.y:.8f} {vert.co.z:.8f} {uv.x:.8f} {uv.y:.8f}\n")

Este código recorre cada cara, y para cada loop (que corresponde a un vértice en esa cara) obtiene la posición del vértice y sus coordenadas UV. Escribe todos los datos en el archivo. Ten en cuenta que si un vértice es compartido por varias caras, se exportará múltiples veces (una por cada cara), lo cual es normal para datos UV que pueden tener diferentes valores por cara.

Asegúrate de que tu objeto tiene una capa UV activa asignada antes de ejecutar el script. Si el problema persiste, verifica que las UVs no estén efectivamente en la coordenada 0,0. Puedes revisarlo visualmente en la ventana de UV Editing.