Come posso impostare UV in una maglia in Python Blender?
Domanda
Utilizzando il Blender 2.49's Python API Sto creando una maglia. Ho un elenco di vertici e un elenco di indici viso.
E.G.
mesh = bpy.data.meshes.new('mesh')
mesh.verts.extend(mVerts)
mesh.faces.extend(mFaces)
.
Ho notato MTTORE Uvco proprietà e Mface UV proprietà, e aggiunto alcuni valori casuali, ma non riesco a vederlo cambiare quando renderò.
Per quanto riguarda UVCO, la documentazione menziona:
.Nota: questi non sono visti nell'editor UV e non sono parte di UV un UVlayer.
L'ho provato con la nuova maglia selezionata:
import Blender
from Blender import *
import random
scn = Scene.GetCurrent()
ob = scn.objects.active
o = ob.getData()
for v in o.verts:
v.uvco = (random.random(),random.random(),random.random())
print v.uvco
for f in o.faces:
r = (random.random(),random.random())
for i in range(0,4):
f.uv.append(r)
print f.uv
.
Posso vedere i valori cambiano nel terminale, ma non vedo alcun cambiamento quando renderò. Se riseletico l'oggetto, il precedente UV è andato via.
Qualcuno può spiegare come sono impostati UV usando il Blender 2.49 Python API?
Grazie
Soluzione
prova a sostituire semplicemente questa linea:
o = ob.getData()
.
con
o = ob.getData(mesh=True)
.
A causa dello sviluppo storico dell'API Python del Blender, una chiamata ordinaria a Blender_Object.getData offre una copia dei dati della mesh di un oggetto, che mentre è possibile modificare, non è "live" sull'oggetto visualizzato.(In realtà è anche una "Nmesh" - una classe che differisce dalla classe vivente "Mesh").
Con il parametro opzionale "MESH= TRUE" è passato al metodo GetData restituisci la rete vivente dell'oggetto e le modifiche in esso hanno effetto (che può essere visto su un aggiornamento forzato con dopo un frullatore.redraw ()).
Non ho mai provato le cose UV, tuttavia, quindi potrebbero esserci più cose, ma credo che questo sia il tuo problema.