使用 Blender 2.49 的 Python API 我正在创建一个网格。 我有一个顶点列表和一个面索引列表。
例如
mesh = bpy.data.meshes.new('mesh')
mesh.verts.extend(mVerts)
mesh.faces.extend(mFaces)
我注意到 MVert 的 uvco属性(property)和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
我可以看到终端中的值发生变化,但渲染时没有看到任何变化。 如果我重新选择该对象,之前的面部 uv 就会消失。
谁能解释一下如何使用 Blender 2.49 Python API 设置 UV?
谢谢
最佳答案
尝试简单地替换这一行:
o = ob.getData()
与
o = ob.getData(mesh=True)
由于 Blender Python API 的历史性发展,对 Blender_object.getData 的普通调用将为您提供对象网格数据的副本,该副本虽然可以修改,但在显示的对象上并不“实时”。 (实际上它甚至是一个“NMesh” - 一个与现有的“Mesh”类不同的类)。
通过将可选参数“mesh=True”传递给 getData 方法,您可以取回对象的事件网格,并且其中的更改会生效(可以在 Blender.Redraw() 之后强制更新时看到) .
但是,我从未尝试过 UV 的东西,所以可能还有更多的东西,但我相信这是你的问题。
关于python - 如何在 Blender Python 中将 UV 设置为网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3246100/