如何在Blender Python中将UV设置为网格?

如何在Blender Python中将UV设置为网格?,python,blender,bpython,bpy,uvw,Python,Blender,Bpython,Bpy,Uvw,我正在使用Blender2.49的Python API创建网格。 我有一个顶点列表和一个面索引列表 e、 g 我注意到了MVert和MFace的属性 属性,并添加了一些随机值,但我看不到任何值 渲染时更改 关于uvco,文件中提到: 注意:这些在UV编辑器中看不到,并且它们不是UV图层的一部分 我在选择新网格时尝试了此操作: import Blender from Blender import * import random scn = Scene.GetCurrent() ob = scn.

我正在使用Blender2.49的Python API创建网格。 我有一个顶点列表和一个面索引列表

e、 g

我注意到了MVert和MFace的属性 属性,并添加了一些随机值,但我看不到任何值 渲染时更改

关于uvco,文件中提到:

注意:这些在UV编辑器中看不到,并且它们不是UV图层的一部分

我在选择新网格时尝试了此操作:

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
我可以在Terminal中看到值的更改,但在渲染时看不到任何更改。 如果重新选择对象,则前面的面UV将消失

有人能解释一下如何使用Blender 2.49 Python API设置UV吗


谢谢

试着简单地替换这一行:

o = ob.getData()

由于Blender Python API的历史性发展,对Blender_object.getData的普通调用会为您提供对象网格数据的副本,该数据虽然可以修改,但在显示的对象上不是“活动”的。(实际上,它甚至是一个“NMesh”——一个不同于活生生的“网格”类的类)

通过将可选参数“mesh=True”传递给getData方法,可以获取对象的活动网格,其中的更改会产生影响(这可以在Blender.Redraw()之后强制更新时看到)


但是,我从来没有尝试过UV,所以可能会有更多的东西,但我相信这是你的问题。

我不知道(mesh=True)。可能是正确的方向。现在我得到了这个错误:“ValueError:face没有纹理值”我已经手动应用了一个纹理并重试了,但是我得到了相同的错误。有什么提示吗?好了!修改UV时不得处于编辑模式。谢谢@jsbueno
o = ob.getData()
o = ob.getData(mesh=True)