[Bf-extensions-cvs] [7d71625] : OBJ import: follow up to previous commit: correct fix.

Bastien Montagne noreply at git.blender.org
Tue Jan 6 13:56:11 CET 2015


Commit: 7d71625de4f47aa08a37f35a6e3b66ac3b96e129
Author: Bastien Montagne
Date:   Sun Jan 4 11:19:28 2015 +0100
Branches: 
https://developer.blender.org/rBA7d71625de4f47aa08a37f35a6e3b66ac3b96e129

OBJ import: follow up to previous commit: correct fix.

Some .obj files use tabs instead of spaces, so refactored how
'line id' is checked.

Also fixed a stupid bug (empty/comment lines were not skipped as expected,
using 'pass' instead of 'continue').

Thanks to Campbell for the head-up.

===================================================================

M	io_scene_obj/import_obj.py

===================================================================

diff --git a/io_scene_obj/import_obj.py b/io_scene_obj/import_obj.py
index 4e14172..84a1fb0 100644
--- a/io_scene_obj/import_obj.py
+++ b/io_scene_obj/import_obj.py
@@ -204,38 +204,40 @@ def create_materials(filepath, relpath,
             for line in mtl:  # .readlines():
                 line = line.strip()
                 if not line or line.startswith(b'#'):
-                    pass
-                elif line.startswith(b'newmtl'):
-                    context_material_name = line_value(line.split())
+                    continue
+
+                line_split = line.split()
+                line_id = line_split[0].lower()
+
+                if line_id == b'newmtl':
+                    context_material_name = line_value(line_split)
                     context_material = unique_materials.get(context_material_name)
                     context_material_vars.clear()
 
                 elif context_material:
                     # we need to make a material to assign properties to it.
-                    line_split = line.split()
-                    line_lower = line.lower().lstrip()
-                    if line_lower.startswith(b'ka '):
+                    if line_id == b'ka':
                         context_material.mirror_color = float_func(line_split[1]), float_func(line_split[2]), float_func(line_split[3])
-                    elif line_lower.startswith(b'kd '):
+                    elif line_id == b'kd':
                         context_material.diffuse_color = float_func(line_split[1]), float_func(line_split[2]), float_func(line_split[3])
-                    elif line_lower.startswith(b'ks '):
+                    elif line_id == b'ks':
                         context_material.specular_color = float_func(line_split[1]), float_func(line_split[2]), float_func(line_split[3])
-                    elif line_lower.startswith(b'ns '):
+                    elif line_id == b'ns':
                         context_material.specular_hardness = int((float_func(line_split[1]) * 0.51))
-                    elif line_lower.startswith(b'ni '):  # Refraction index
+                    elif line_id == b'ni':  # Refraction index
                         context_material.raytrace_transparency.ior = max(1, min(float_func(line_split[1]), 3))  # between 1 and 3
                         context_material_vars.add("ior")
-                    elif line_lower.startswith(b'd '):  # dissolve (trancparency)
+                    elif line_id == b'd':  # dissolve (trancparency)
                         context_material.alpha = float_func(line_split[1])
                         context_material.use_transparency = True
                         context_material.transparency_method = 'Z_TRANSPARENCY'
                         context_material_vars.add("alpha")
-                    elif line_lower.startswith(b'tr '):  # trancelucency
+                    elif line_id == b'tr':  # trancelucency
                         context_material.translucency = float_func(line_split[1])
-                    elif line_lower.startswith(b'tf '):
+                    elif line_id == b'tf':
                         # rgb, filter color, blender has no support for this.
                         pass
-                    elif line_lower.startswith(b'illum '):
+                    elif line_id == b'illum':
                         illum = int(line_split[1])
 
                         do_ambient = True
@@ -336,33 +338,33 @@ def create_materials(filepath, relpath,
                         # written when raytracing wasnt default, annoying to disable for blender users.
                         context_material.use_raytrace = True
 
-                    elif line_lower.startswith(b'map_ka '):
+                    elif line_id == b'map_ka':
                         img_filepath = line_value(line.split())
                         if img_filepath:
                             load_material_image(context_material, context_material_name, img_filepath, 'Ka')
-                    elif line_lower.startswith(b'map_ks '):
+                    elif line_id == b'map_ks':
                         img_filepath = line_value(line.split())
                         if img_filepath:
                             load_material_image(context_material, context_material_name, img_filepath, 'Ks')
-                    elif line_lower.startswith(b'map_kd '):
+                    elif line_id == b'map_kd':
                         img_filepath = line_value(line.split())
                         if img_filepath:
                             load_material_image(context_material, context_material_name, img_filepath, 'Kd')
-                    elif line_lower.startswith((b'map_bump ', b'bump ')):  # 'bump' is incorrect but some files use it.
+                    elif line_id in {b'map_bump', b'bump'}:  # 'bump' is incorrect but some files use it.
                         img_filepath = line_value(line.split())
                         if img_filepath:
                             load_material_image(context_material, context_material_name, img_filepath, 'Bump')
-                    elif line_lower.startswith((b'map_d ', b'map_tr ')):  # Alpha map - Dissolve
+                    elif line_id in {b'map_d', b'map_tr'}:  # Alpha map - Dissolve
                         img_filepath = line_value(line.split())
                         if img_filepath:
                             load_material_image(context_material, context_material_name, img_filepath, 'D')
 
-                    elif line_lower.startswith((b'map_disp ', b'disp ')):  # displacementmap
+                    elif line_id in {b'map_disp', b'disp'}:  # displacementmap
                         img_filepath = line_value(line.split())
                         if img_filepath:
                             load_material_image(context_material, context_material_name, img_filepath, 'disp')
 
-                    elif line_lower.startswith((b'map_refl ', b'refl ')):  # reflectionmap
+                    elif line_id in {b'map_refl', b'refl'}:  # reflectionmap
                         img_filepath = line_value(line.split())
                         if img_filepath:
                             load_material_image(context_material, context_material_name, img_filepath, 'refl')



More information about the Bf-extensions-cvs mailing list