是否可以为Blender编写一个导出器,该导出器在每个顶点水平上导出网格UV纹理坐标,这些坐标位于面上的标准UV上?
我不是一个真正的python人,并且只使用了两天,但我已经设法为Android编写了一个简单的网格导出器...我能够将顶点和索引导出到数组,但是我无法以相同的方式导出UV ...我只能将它们与面顶点相关联,而这些顶点并没有太大帮助....
由于格式化,我不确定如何发布python代码,但是这里是抓取所有信息并将其放入数组的部分:
obverts = bpy.context.active_object.data.vertices
obfaces = bpy.context.active_object.data.faces
verts = []
indices = []
tex = []
for vertex in obverts:
verts.append(vertex.co.x)
verts.append(vertex.co.y)
verts.append(vertex.co.z)
for face in obfaces:
indices.append(face.vertices[0])
indices.append(face.vertices[1])
indices.append(face.vertices[2])
face_index = face.index
for u,v in bpy.context.active_object.data.uv_textures.active.data[ face_index ].uv:
tex.append(u)
tex.append(v)
现在一切正常,除了获得UV坐标的最后四行......这是从面部获取UV的地方......但是如何获得与data.vertices相关的UV?我读了一些关于“粘性uv坐标”的内容,但我在我的Blender版本上找不到该选项。 我正在使用Blender 2.57并且花了一整天时间试图找到答案,所以如果有人可以提供帮助;我会非常感激。
答案 0 :(得分:2)
我能够将顶点和索引导出到数组,但是我无法以相同的方式导出UV ...我只能将它们与面顶点相关联,这对它们没有太大的帮助。 ...
UV必须与面相关,因为每个顶点对于它所属的每个多边形可能有不同的uv。
例如,想想每个面上具有不同纹理的立方体。顶点将位于一个面的左上角,而右侧的顶面位于其旁边。