0

我在学校有一个任务是在 Maya 中创建一个自定义的 .obj 和 .mtl 导出器,但是文档真的很难理解和使用。

找到一个看起来像这样的博客文章,代码有效,但我想更多地了解它的实际作用以及将来处理此类问题的技巧。

import pymel.core as pm

def material():
    file2 = open("C:/Users/MyName/Desktop/test.mtl", "wb")
    textureName=""
    object = pm.ls(sl=1)[0].split(':')[0]

    selection = pm.ls(sl=1)
    for each in selection:
        object=pm.PyNode(each)
        shadingGroups = object.shadingGroups()
        print("SG "+str(shadingGroups))

        for shadingGroup in shadingGroups:
            material=shadingGroup.listConnections(source=True, destination=False, type=nt.Lambert)[0]
            print("Mat "+str(material))
            texture = material.color.listConnections(type=nt.File)[0]
            textureName=texture.fileTextureName.get()
            print("Texture "+str(textureName))

            materialColor = material.getColor()  # for Kd
            materialAmbient = material.getAmbientColor()  # for Ka
            materialSpecular = material.getSpecularColor()  # for Ks
            refractiveIndex = material.getRefractiveIndex()  # for Ni

            file2.write("newmtl " + "test" + "\r\n")
            file2.write( "Ka " + str(materialAmbient[0]) + " " 
                   + str(materialAmbient[1]) + " " 
                   + str(materialAmbient[2]) + "\r\n" )
            file2.write("Kd " + str(materialColor[0]) + " " 
                   + str(materialColor[1]) + " " 
                   + str(materialColor[2]) + "\r\n")
            file2.write( "Ks " + str(materialSpecular[0]) + " " + str(materialSpecular[1]) + " " + str(materialSpecular[2]) + "\r\n")
            file2.write("d 1.0\r\n")
            file2.write("Illum 2\r\n")
            file2.write("map_Kd " + textureName + "\r\n")  # for map_Kd

    file2.close()
4

1 回答 1

1

由于它是一项家庭作业,我最好提供一些文档而不是代码,对吗?;) .. 这是来自 Maya 的自定义文件翻译器的文档。示例翻译器可以在这里找到一些更深入的示例

于 2017-05-25T00:07:15.007 回答