2010-07-14 93 views
1

使用Blender 2.49的Python API我正在創建一個網格。 我有一個頂點列表和一個臉部索引列表。如何將UV設置爲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消失。

任何人都可以解釋如何使用Blender 2.49 Python API設置UV?

感謝

回答

2

嘗試只需更換這行:

o = ob.getData(mesh=True) 

o = ob.getData() 

由於攪拌機的Python API的歷史發展,blender_object.getData一個普通的電話給你對象的網格數據的副本,雖然可以修改,但不會在顯示的對象上「生效」。 (實際上它甚至是一個「NMesh」 - 與生活的「Mesh」類不同)。

使用傳遞給getData方法的可選參數「mesh = True」,可以取回對象的活動網格,並且其中的更改會產生效果(可以在Blender.Redraw()後強制更新時看到) )。

但是,我從來沒有嘗試UV的東西,所以可能會有更多的事情,但我相信這是你的問題。

+0

我不知道(mesh = True)。可能是正確的軌道。現在我得到這個錯誤: 'ValueError:臉部沒有紋理值' 我已經手動應用紋理,並再次嘗試,但我得到相同的錯誤。任何提示? – 2010-07-14 13:23:40

+0

完成!在修改uvs時不能處於編輯模式。謝謝@ jsbueno – 2010-07-15 09:50:23

相關問題