Blender能导出每个顶点的UV坐标吗?
有没有可能为Blender写一个导出工具,可以按每个顶点的级别导出网格的UV纹理坐标,而不是像现在这样从面上导出标准的UV?
我其实不是很懂Python,只用了两天,但我已经写了一个简单的Android网格导出工具...我能把顶点和索引导出到数组里,但就是无法以同样的方式导出UV坐标...我只能得到与面顶点相关的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,今天花了一整天在找答案,如果有人能帮忙,我会非常感激。
2 个回答
0
你可以为每个顶点导出UV坐标,前提是你把物体的所有面分开。
(是的,这样会导致一些顶点被多个面重复使用)
先进入编辑模式。
把所有的边标记为锐利的。
然后切换回物体模式。
给物体添加并应用“边缘分割”这个修改器。
现在所有的面都使用独特的顶点和边,
这样每个顶点都有自己独立的UV坐标。
2
我可以把顶点和索引导出到数组里,但我就是无法以同样的方式导出UV坐标……我只能得到与面顶点相关的UV,这样并不是很有用……
UV坐标必须与面相关,因为每个顶点在它所属的每个多边形中可能有不同的UV。
举个例子,想象一个每个面都有不同纹理的立方体。一个顶点在一个面上可能是左上角,而在旁边的面上可能是右上角。