[Bf-extensions-cvs] [2bfbbe4] master: Cleanups suggested by Campbell Barton: *reduced dictionary lookups for comments and linebreaks in lists *Better tabWrite function to speed up when using tempfiles

Maurice Raybaud noreply at git.blender.org
Mon Nov 18 20:21:59 CET 2013


Commit: 2bfbbe4182d7e5d5332d963054f298c9fddc5f09
Author: Maurice Raybaud
Date:   Sun Nov 17 20:48:23 2013 +0100
http://developer.blender.org/rBA2bfbbe4182d7e5d5332d963054f298c9fddc5f09

Cleanups suggested by Campbell Barton:
*reduced dictionary lookups for comments and linebreaks in lists
*Better tabWrite function to speed up when using tempfiles

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

M	render_povray/render.py

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

diff --git a/render_povray/render.py b/render_povray/render.py
index 0fbeb41..3108b4a 100644
--- a/render_povray/render.py
+++ b/render_povray/render.py
@@ -165,7 +165,8 @@ def write_pov(filename, scene=None, info_callback=None):
     render = scene.render
     world = scene.world
     global_matrix = mathutils.Matrix.Rotation(-pi / 2.0, 4, 'X')
-
+    comments = scene.pov.comments_enable and not scene.pov.tempfiles_enable
+    linebreaksinlists= scene.pov.list_lf_enable and not scene.pov.tempfiles_enable
     def setTab(tabtype, spaces):
         TabStr = ""
         if tabtype == 'NONE':
@@ -177,9 +178,8 @@ def write_pov(filename, scene=None, info_callback=None):
         return TabStr
 
     tab = setTab(scene.pov.indentation_character, scene.pov.indentation_spaces)
-
-    def tabWrite(str_o):
-        if not scene.pov.tempfiles_enable:
+    if not scene.pov.tempfiles_enable:
+        def tabWrite(str_o):
             global tabLevel
             brackets = str_o.count("{") - str_o.count("}") + str_o.count("[") - str_o.count("]")
             if brackets < 0:
@@ -192,7 +192,8 @@ def write_pov(filename, scene=None, info_callback=None):
             file.write(str_o)
             if brackets > 0:
                 tabLevel = tabLevel + brackets
-        else:
+    else:
+        def tabWrite(str_o):
             file.write(str_o)
 
     def uniqueName(name, nameSeq):
@@ -311,8 +312,6 @@ def write_pov(filename, scene=None, info_callback=None):
             name = name_orig = DEF_MAT_NAME
 
 
-        comments = scene.pov.comments_enable
-
         if material:
             # If saturation(.s) is not zero, then color is not grey, and has a tint
             colored_specular_found = (material.specular_color.s > 0.0)
@@ -327,20 +326,20 @@ def write_pov(filename, scene=None, info_callback=None):
         def povHasnoSpecularMaps(Level):
             if Level == 1:
                 tabWrite("#declare %s = finish {" % safety(name, Level=1))
-                if not scene.pov.tempfiles_enable and comments:
+                if comments:
                     file.write("  //No specular nor Mirror reflection\n")
                 else:
                     tabWrite("\n")
             elif Level == 2:
                 tabWrite("#declare %s = finish {" % safety(name, Level=2))
-                if not scene.pov.tempfiles_enable and comments:
+                if comments:
                     file.write("  //translation of spec and mir levels for when no map " \
                                "influences them\n")
                 else:
                     tabWrite("\n")
             elif Level == 3:
                 tabWrite("#declare %s = finish {" % safety(name, Level=3))
-                if not scene.pov.tempfiles_enable and comments:
+                if comments:
                     file.write("  //Maximum Spec and Mirror\n")
                 else:
                     tabWrite("\n")
@@ -661,7 +660,7 @@ def write_pov(filename, scene=None, info_callback=None):
 
         # TODO - blenders 'motherball' naming is not supported.
 
-        if not scene.pov.tempfiles_enable and scene.pov.comments_enable and len(metas) >= 1:
+        if comments and len(metas) >= 1:
             file.write("//--Blob objects--\n\n")
 
         for ob in metas:
@@ -735,7 +734,7 @@ def write_pov(filename, scene=None, info_callback=None):
 
                 tabWrite("}\n")  # End of Metaball block
 
-                if not scene.pov.tempfiles_enable and scene.pov.comments_enable and len(metas) >= 1:
+                if comments and len(metas) >= 1:
                     file.write("\n")
 
 #    objectNames = {}
@@ -1048,7 +1047,7 @@ def write_pov(filename, scene=None, info_callback=None):
 
             tabStr = tab * tabLevel
             for v in me.vertices:
-                if not scene.pov.tempfiles_enable and scene.pov.list_lf_enable:
+                if linebreaksinlists:
                     file.write(",\n")
                     file.write(tabStr + "<%.6f, %.6f, %.6f>" % v.co[:])  # vert count
                 else:
@@ -1076,7 +1075,7 @@ def write_pov(filename, scene=None, info_callback=None):
             idx = 0
             tabStr = tab * tabLevel
             for no, index in uniqueNormals.items():
-                if not scene.pov.tempfiles_enable and scene.pov.list_lf_enable:
+                if linebreaksinlists:
                     file.write(",\n")
                     file.write(tabStr + "<%.6f, %.6f, %.6f>" % no)  # vert count
                 else:
@@ -1110,7 +1109,7 @@ def write_pov(filename, scene=None, info_callback=None):
                 idx = 0
                 tabStr = tab * tabLevel
                 for uv, index in uniqueUVs.items():
-                    if not scene.pov.tempfiles_enable and scene.pov.list_lf_enable:
+                    if linebreaksinlists:
                         file.write(",\n")
                         file.write(tabStr + "<%.6f, %.6f>" % uv)
                     else:
@@ -1152,8 +1151,13 @@ def write_pov(filename, scene=None, info_callback=None):
                             key = col[0], col[1], col[2], material_index  # Material index!
                             VcolIdx+=1
                             vertCols[key] = [VcolIdx]
-                            tabWrite("texture {pigment{ color rgb <%6f,%6f,%6f> }}" % (col[0], col[1], col[2]))
-                            tabStr = tab * tabLevel
+                            if comments:
+                                file.write("\n  //Vertex colors: one simple pigment texture per vertex\n")
+                            if linebreaksinlists:
+                                tabWrite("texture {pigment{ color rgb <%6f,%6f,%6f> }}\n" % (col[0], col[1], col[2]))
+                            else:
+                                tabWrite("texture {pigment{ color rgb <%6f,%6f,%6f> }}" % (col[0], col[1], col[2]))
+                                tabStr = tab * tabLevel
                     else:
                         if material:
                             # Multiply diffuse with SSS Color
@@ -1192,7 +1196,7 @@ def write_pov(filename, scene=None, info_callback=None):
 
                     if not me_materials or me_materials[material_index] is None:  # No materials
                         for i1, i2, i3 in indices:
-                            if not scene.pov.tempfiles_enable and scene.pov.list_lf_enable:
+                            if linebreaksinlists:
                                 file.write(",\n")
                                 # vert count
                                 file.write(tabStr + "<%d,%d,%d>" % (fv[i1], fv[i2], fv[i3]))
@@ -1221,7 +1225,7 @@ def write_pov(filename, scene=None, info_callback=None):
                                 ci1 = ci2 = ci3 = vertCols[diffuse_color[0], diffuse_color[1], \
                                                   diffuse_color[2], f.material_index][0]
                                 # ci are zero based index so we'll subtract 1 from them
-                            if not scene.pov.tempfiles_enable and scene.pov.list_lf_enable:
+                            if linebreaksinlists:
                                 file.write(",\n")
                                 file.write(tabStr + "<%d,%d,%d>, %d,%d,%d" % \
                                            (fv[i1], fv[i2], fv[i3], ci1-1, ci2-1, ci3-1))  # vert count 
@@ -1246,7 +1250,7 @@ def write_pov(filename, scene=None, info_callback=None):
 
                     for i1, i2, i3 in indices:
                         if me_faces[fi].use_smooth:
-                            if not scene.pov.tempfiles_enable and scene.pov.list_lf_enable:
+                            if linebreaksinlists:
                                 file.write(",\n")
                                 file.write(tabStr + "<%d,%d,%d>" %\
                                 (uniqueNormals[verts_normals[fv[i1]]][0],\
@@ -1260,7 +1264,7 @@ def write_pov(filename, scene=None, info_callback=None):
                                  uniqueNormals[verts_normals[fv[i3]]][0]))  # vert count
                         else:
                             idx = uniqueNormals[faces_normals[fi]][0]
-                            if not scene.pov.tempfiles_enable and scene.pov.list_lf_enable:
+                            if linebreaksinlists:
                                 file.write(",\n")
                                 file.write(tabStr + "<%d,%d,%d>" % (idx, idx, idx))  # vert count
                             else:
@@ -1288,7 +1292,7 @@ def write_pov(filename, scene=None, info_callback=None):
                             uvs = uv.uv[0][:], uv.uv[1][:], uv.uv[2][:]
 
                         for i1, i2, i3 in indices:
-                            if not scene.pov.tempfiles_enable and scene.pov.list_lf_enable:
+                            if linebreaksinlists:
                                 file.write(",\n")
                                 file.write(tabStr + "<%d,%d,%d>" % (
                                          uniqueUVs[uvs[i1]][0],\
@@ -1728,7 +1732,7 @@ def write_pov(filename, scene=None, info_callback=None):
                                         special_texture_found = True
                                 
                                 if colored_specular_found and not special_texture_found:
-                                    if not scene.pov.tempfiles_enable and scene.pov.comments_enable:
+                                    if comments:
                                         file.write("  //Emulating colored highlights with a metallic layer\n")
                                     else:
                                         tabWrite("\n")
@@ -1805,7 +1809,7 @@ def write_pov(filename, scene=None, info_callback=None):
 
                     if not me_materials or me_materials[material_index] is None:  # No materials
                         for i1, i2, i3 in indices:
-                            if not scene.pov.tempfiles_enable and scene.pov.list_lf_enable:
+                            if linebreaksinlists:
                                 file.write(",\n")
                                 # vert count
                                 file.write(tabStr + "<%d,%d,%d>" % (fv[i1], fv[i2], fv[i3]))
@@ -18

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list