使用Blender 2.49的Python API我正在创建一个网格物体。 我有一个顶点列表和一个面部索引列表。
e.g。
mesh = bpy.data.meshes.new('mesh')
mesh.verts.extend(mVerts)
mesh.faces.extend(mFaces)
我注意到了MVert的uvco属性和MFace的uv 属性,并添加了一些随机值,但我看不到任何 我渲染时会改变。
关于uvco,文件提到:
注意:这些在UV编辑器中看不到,它们不是UV 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
我可以看到终端中的值发生了变化,但是渲染时我没有看到任何变化。 如果我重新选择了这个物体,那么以前的面部uv就会消失。
任何人都可以解释如何使用Blender 2.49 Python API设置UV吗?
由于
答案 0 :(得分:2)
尝试简单地替换此行:
o = ob.getData()
与
o = ob.getData(mesh=True)
由于Blender Python API的历史性发展,对blender_object.getData的普通调用为您提供了对象的网格数据的副本,虽然可以修改,但它不会在显示的对象上“生效”。 (实际上它甚至是一个“NMesh” - 一个与生活的“网格”类不同的类。)
通过传递给getData方法的可选参数“mesh = True”,您将获得对象的活动网格,并且其中的更改会产生效果(可以在Blender.Redraw()之后强制更新时看到)
然而,我从未尝试过紫外线,所以可能会有更多的东西,但我相信这是你的问题。