def makeMaterial(me_ob, meshInfo): meshFullName = meshInfo.name textureFilepaths = meshInfo.textures materialData = bpy.data.materials.new(meshFullName) if xpsSettings.colorizeMesh: color = randomColorRanged() materialData.diffuse_color = color materialData.use_transparent_shadows = True me_ob.materials.append(materialData) renderType = xps_material.makeRenderType(meshFullName) rGroup = xps_material.RenderGroup(renderType) for texIndex, textureInfo in enumerate(textureFilepaths): textureFilename = textureInfo.file textureUvLayer = textureInfo.uvLayer try: textureBasename = os.path.basename(textureFilename) # load image imageFilepath = makeImageFilepath(textureBasename) imgTex = makeTexture(imageFilepath) textureSlot = newTextureSlot(materialData) textureSlot.texture = imgTex textureSlot.use = False if (me_ob.uv_layers): textureSlot.uv_layer = me_ob.uv_layers[textureUvLayer].name xps_material.textureSlot(rGroup, texIndex, materialData) print("Texture: " + textureSlot.name) except Exception as inst: print("Error loading " + textureBasename) print(traceback.format_exc()) exc_type, exc_obj, exc_tb = sys.exc_info() fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1] print(exc_type, fname, exc_tb.tb_lineno) print(type(inst)) # the exception instance print(inst.args) # arguments stored in .args print(inst) # If error loading texture, turn transparency off materialData.alpha = 1.0 materialData.use_transparency = True
def makeNamesFromMesh(mesh): meshFullName = mesh.name renderType = xps_material.makeRenderType(meshFullName) meshName = renderType.meshName separatedMeshNames = [] separatedMeshNames.append(meshFullName) materialsCount = len(mesh.data.materials) for mat_idx in range(1, materialsCount): partName = meshName + ".part." + "{0:03d}".format(mat_idx) renderType.meshName = partName fullName = xps_material.makeRenderTypeName(renderType) separatedMeshNames.append(fullName) return separatedMeshNames