2010-07-14 3 views
1

Использование API-интерфейса Blender 2.49 в Python Я создаю сетку. У меня есть список вершин и список индексов лиц.Как установить UVs в Mesh в Blender Python?

например.

mesh = bpy.data.meshes.new('mesh') 
mesh.verts.extend(mVerts) 
mesh.faces.extend(mFaces) 

Я заметил MVert в uvco собственность и MFace в uv собственности, и добавлены некоторые случайные значения, но я не вижу каких-либо изменений , когда я вынести.

Что касается uvco, документация упоминает:

Note: These are not seen in the UV editor and they are not a part of UV a UVLayer.

Я попытался это с новой сеткой выбранной:

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 

Я могу увидеть значения изменяются в терминале, но я не вижу изменение при визуализации. Если я повторно выбираю объект, предыдущие uvs исчезнут.

Может ли кто-нибудь объяснить, как устанавливаются УФ-объекты с использованием API-интерфейса Blender 2.49 Python?

Благодаря

ответ

2

Попробуйте просто заменить эту строку:

o = ob.getData() 

с

o = ob.getData(mesh=True) 

Благодаря исторического развития Blender Python API, обычный вызов blender_object.getData дает вам копия данных сетки объекта, которая может быть изменена, не отображается в реальном времени на отображаемом объекте. (На самом деле это даже «NMesh» - класс, который отличается от класса «Mesh».

С необязательным параметром «mesh = True», переданным методу getData, вы возвращаете живую сетку объекта, и изменения в нем имеют эффект (который можно увидеть при обновлении, которое принудительно после Blender.Redraw()).

Я никогда не пробовал УФ-вещи, однако, возможно, в этом может быть больше вещей, но я считаю, что это ваша проблема.

+0

Я не знал о (mesh = True). Возможно правильный путь. Теперь я получаю эту ошибку: «ValueError: лицо не имеет значений текстуры» Я вручную применил текстуру и попытался снова, но я получаю ту же ошибку. Любые намеки? –

+0

сделано! не должен находиться в режиме редактирования при изменении uv. Спасибо @jsbueno –