搅拌机可以按顶点 UV 坐标导出吗?

Posted

技术标签:

【中文标题】搅拌机可以按顶点 UV 坐标导出吗?【英文标题】:can blender export per vertex UV coordinates? 【发布时间】:2011-12-09 00:04:53 【问题描述】:

是否可以为 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 并且花了一整天的时间试图找到答案,所以如果有人可以提供帮助;非常感谢。

【问题讨论】:

【参考方案1】:

我可以将顶点和索引导出到数组,但我无法以相同的方式导出 UV……我只能将它们与面顶点相关,这并不太有用。 ...

UV 必须与面相关,因为每个顶点可能对于它所属的每个多边形都有不同的 uv。

例如,想象一个立方体,每个面上都有不同的纹理。顶点将位于一个面上的左上角,以及旁边面的右上角。

【讨论】:

你说得对,我在入睡前考虑了一下,意识到我想做的事情可能看起来很方便,但它有点傻。感谢您指出。【参考方案2】:

如果您分离对象的所有面,您可以按顶点导出 UV。

(是的,这将复制两个或多个面使用的顶点)


进入编辑模式

将所有边缘标记为锐利


转到对象模式

分配并应用“边缘分割”修饰符


现在所有面都使用独特的顶点和边,

因此每个顶点都有自己的单个 UV 坐标

【讨论】:

以上是关于搅拌机可以按顶点 UV 坐标导出吗?的主要内容,如果未能解决你的问题,请参考以下文章

搅拌机;自定义导出“平面”三角形顶点

为啥 3D 模型具有不同 uv 坐标的重复顶点位置

OpenGL |在 UV 坐标处渲染顶点

搅拌机在 X-Y 平面上移动顶点

为啥maya绑定的模型导出fbx会丢失顶点法线信息?

将搅拌机顶点组动画导出为统一