From 24cebd7bedd20af91427426f0d2e52606e732014 Mon Sep 17 00:00:00 2001
From: Campbell Barton <ideasman42@gmail.com>
Date: Mon, 12 Nov 2012 02:03:34 +0000
Subject: [PATCH] patch [#32914] wavefront (.obj) export from dan grauer
 (kromar)

With change use_map_color_emission (which is for volumetrics only) to use_map_emit.

also ignore generated face-images (which have no file path).
---
 io_scene_obj/export_obj.py | 42 ++++++++++++++++++++++++++++----------
 1 file changed, 31 insertions(+), 11 deletions(-)

diff --git a/io_scene_obj/export_obj.py b/io_scene_obj/export_obj.py
index a5b00e8e0..55d340695 100644
--- a/io_scene_obj/export_obj.py
+++ b/io_scene_obj/export_obj.py
@@ -61,7 +61,7 @@ def write_mtl(scene, filepath, path_mode, copy_set, mtl_dict):
         # Get the Blender data for the material and the image.
         # Having an image named None will make a bug, dont do it :)
 
-        fw('newmtl %s\n' % mtl_mat_name)  # Define a new material: matname_imgname
+        fw('\nnewmtl %s\n' % mtl_mat_name)  # Define a new material: matname_imgname
 
         if mat:
             # convert from blenders spec to 0 - 1000 range.
@@ -100,9 +100,16 @@ def write_mtl(scene, filepath, path_mode, copy_set, mtl_dict):
 
         # Write images!
         if face_img:  # We have an image on the face!
-            # write relative image path
-            rel = bpy_extras.io_utils.path_reference(face_img.filepath, source_dir, dest_dir, path_mode, "", copy_set, face_img.library)
-            fw('map_Kd %s\n' % rel)  # Diffuse mapping image
+            filepath = face_img.filepath
+            if filepath:  # may be '' for generated images
+                # write relative image path
+                filepath = bpy_extras.io_utils.path_reference(filepath, source_dir, dest_dir,
+                                                              path_mode, "", copy_set, face_img.library)
+                fw('map_Kd %s\n' % filepath)  # Diffuse mapping image
+                del filepath
+            else:
+                # so we write the materials image.
+                face_img = None
 
         if mat:  # No face image. if we havea material search for MTex image.
             image_map = {}
@@ -112,27 +119,40 @@ def write_mtl(scene, filepath, path_mode, copy_set, mtl_dict):
                     image = mtex.texture.image
                     if image:
                         # texface overrides others
-                        if mtex.use_map_color_diffuse and face_img is None:
+                        if      (mtex.use_map_color_diffuse and
+                                (face_img is None) and
+                                (mtex.use_map_warp is False) and
+                                (mtex.texture_coords != 'REFLECTION')):
                             image_map["map_Kd"] = image
                         if mtex.use_map_ambient:
                             image_map["map_Ka"] = image
+                        # this is the Spec intensity channel but Ks stands for specular Color
+                        '''
                         if mtex.use_map_specular:
                             image_map["map_Ks"] = image
+                        '''
+                        if mtex.use_map_color_spec:  # specular color
+                            image_map["map_Ks"] = image
+                        if mtex.use_map_hardness:  # specular hardness/glossiness
+                            image_map["map_Ns"] = image
                         if mtex.use_map_alpha:
                             image_map["map_d"] = image
                         if mtex.use_map_translucency:
                             image_map["map_Tr"] = image
-                        if mtex.use_map_normal:
+                        if mtex.use_map_normal and (texture.use_normal_map is True):
                             image_map["map_Bump"] = image
-                        if mtex.use_map_hardness:
-                            image_map["map_Ns"] = image
+                        if mtex.use_map_normal and (texture.use_normal_map is False):
+                            image_map["map_Disp"] = image                      
+                        if mtex.use_map_color_diffuse and (mtex.texture_coords == 'REFLECTION'):
+                            image_map["map_refl"] = image
+                        if mtex.use_map_emit:
+                            image_map["map_Ke"] = image
 
             for key, image in image_map.items():
-                filepath = bpy_extras.io_utils.path_reference(image.filepath, source_dir, dest_dir, path_mode, "", copy_set, image.library)
+                filepath = bpy_extras.io_utils.path_reference(image.filepath, source_dir, dest_dir,
+                                                              path_mode, "", copy_set, image.library)
                 fw('%s %s\n' % (key, repr(filepath)[1:-1]))
 
-        fw('\n\n')
-
     file.close()
 
 
-- 
GitLab