使用Python从Blender 2.8导出每面纹理索引

使用Python从Blender 2.8导出每面纹理索引,python,blender,Python,Blender,我正试图修复我的旧型号出口商从前2.8搅拌机为目前的一个。 我已不再阅读“uv_纹理”,因此我的旧功能不起作用: def e_texfaceindex(out,o): # texture index per face (quad/tri) if len(o.uv_textures) == 0: return n = len(o.uv_textures[0].data.values()) out.write("\ntexindexnum " + str(n)

我正试图修复我的旧型号出口商从前2.8搅拌机为目前的一个。 我已不再阅读“uv_纹理”,因此我的旧功能不起作用:

def e_texfaceindex(out,o):   # texture index per face (quad/tri)     
    if len(o.uv_textures) == 0: return
    n = len(o.uv_textures[0].data.values())
    out.write("\ntexindexnum " + str(n) + "\n")

    texarr = [] # textures' names
    for t in bpy.data.images:
        if t.type == 'IMAGE': 
            texarr.append(t.name)

    ni = 0
    for tf in o.uv_textures[0].data.values(): # find texture for every face  
        texindex = 0
        for n in texarr:
            # error, polygon has no texture
            if(tf.image == None): 
                out.write("0 ") #ok?
                break
            else:    
                if(tf.image.name == n):
                    out.write(str(texindex) + " ")
                    break
            texindex = texindex+1            
        ni=ni+1
        if ni==32 : # make new line for every 32 elem
            ni = 0
            out.write("\n")
    out.write("\n")
但我可以通过以下方法获得材料指数:

def e_materialndices(out,o): # per face mat indices
out.write("\nmaterialindexnum " + str(len(o.polygons)) + "\n")
c = 0
for face in o.polygons:  
    out.write(str(face.material_index) + " ")
    c=c+1
    if(c==32):
        out.write("\n")
out.write("\n")
然后这个剧本给了我一些希望:

import bpy
    ms = bpy.data.materials
    for m in ms:
        for n in m.node_tree.nodes:
            print(n.name)
打印出“材质输出”、“原则BSDF”、“图像纹理”。所以我也许可以用“图像纹理”节点找到材质的纹理名称,但我被困在这里了,我不知道如何得到它


也许有更简单的方法可以获取每一张脸的纹理信息,如果有任何帮助,我们将不胜感激。

此方法有效:[code]def e_texfaceindex(out,o):out.write(“\ntexindexnum”+str(len(o.polygons))+“\n”)c=0表示o.polygons中的面:mt=bpy.data.materials[face.material_index]#ze poly tn的材质=mt.node_tree.nodes.get('Image Texture')#magix texindex=bpy.data.images.find(tn.Image.name)#texindex如果texindex起作用,纹理索引:[code]def e_texfaceindex(out,o):out.write(“\ntexindexnum”+str(len(o.polygons))+“\n”)c=0表示o.polygons中的面:mt=bpy.data.materials[face.material#index]#ze poly的材质tn=mt.node#tree.nodes.get('Image Texture')#magix texindex=bpy.data.images.find(tn.Image.name)#纹理索引如果texindex