[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1489] trunk/py/scripts/addons/ render_povray: Optimized export to OS Tempfiles.

Constantin Rahn conz at vrchannel.de
Mon Jan 24 12:44:02 CET 2011


Revision: 1489
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1489
Author:   conz
Date:     2011-01-24 11:44:01 +0000 (Mon, 24 Jan 2011)
Log Message:
-----------
Optimized export to OS Tempfiles.
The output to Tempfiles no longer exports comments, indentations or LFs (in lists).
New option in Export settings to deactivate LF (line brakes) in lists.
Fixed a material export for normal maps. Was exported two times.
Paths to images are now realpaths, no /../ in absolut paths.

Modified Paths:
--------------
    trunk/py/scripts/addons/render_povray/__init__.py
    trunk/py/scripts/addons/render_povray/render.py
    trunk/py/scripts/addons/render_povray/ui.py

Modified: trunk/py/scripts/addons/render_povray/__init__.py
===================================================================
--- trunk/py/scripts/addons/render_povray/__init__.py	2011-01-24 08:22:49 UTC (rev 1488)
+++ trunk/py/scripts/addons/render_povray/__init__.py	2011-01-24 11:44:01 UTC (rev 1489)
@@ -70,6 +70,10 @@
             name="Rendered image path",
             description="Full path to directory where the rendered image is saved.",
             default="", maxlen=1024, subtype="DIR_PATH")
+    Scene.pov_list_lf_enable = BoolProperty(
+            name="LF in lists",
+            description="Enable line brakes in lists (vectors and indices). Disabled: lists are exported in one line.",
+            default=True)
 
     # Not a real pov option, just to know if we should write
     Scene.pov_radio_enable = BoolProperty(
@@ -318,6 +322,7 @@
     del Scene.pov_deletefiles_enable  # CR
     del Scene.pov_scene_path  # CR
     del Scene.pov_renderimage_path  # CR
+    del Scene.pov_list_lf_enable  # CR
     del Scene.pov_radio_enable
     del Scene.pov_radio_display_advanced
     del Scene.pov_radio_adc_bailout

Modified: trunk/py/scripts/addons/render_povray/render.py
===================================================================
--- trunk/py/scripts/addons/render_povray/render.py	2011-01-24 08:22:49 UTC (rev 1488)
+++ trunk/py/scripts/addons/render_povray/render.py	2011-01-24 11:44:01 UTC (rev 1489)
@@ -157,6 +157,7 @@
     fn_strip = os.path.basename(fn)
     if not os.path.isfile(fn):
         fn = findInSubDir(splitFile(fn), splitPath(bpy.data.filepath))
+    fn = os.path.realpath(fn)
     return fn
 
 ##############end find image texture
@@ -224,18 +225,21 @@
     tab = setTab(scene.pov_indentation_character, scene.pov_indentation_spaces)
 
     def tabWrite(str_o):
-        global tabLevel
-        brackets = str_o.count("{") - str_o.count("}") + str_o.count("[") - str_o.count("]")
-        if brackets < 0:
-            tabLevel = tabLevel + brackets
-        if tabLevel < 0:
-            print("Indentation Warning: tabLevel = %s" % tabLevel)
-            tabLevel = 0
-        if tabLevel >= 1:
-            file.write("%s" % tab * tabLevel)
-        file.write(str_o)
-        if brackets > 0:
-            tabLevel = tabLevel + brackets
+        if not scene.pov_tempfiles_enable:
+            global tabLevel
+            brackets = str_o.count("{") - str_o.count("}") + str_o.count("[") - str_o.count("]")
+            if brackets < 0:
+                tabLevel = tabLevel + brackets
+            if tabLevel < 0:
+                print("Indentation Warning: tabLevel = %s" % tabLevel)
+                tabLevel = 0
+            if tabLevel >= 1:
+                file.write("%s" % tab * tabLevel)
+            file.write(str_o)
+            if brackets > 0:
+                tabLevel = tabLevel + brackets
+        else:
+            file.write(str_o)
 
     def uniqueName(name, nameSeq):
 
@@ -332,19 +336,19 @@
         def povHasnoSpecularMaps(Level):
             if Level == 1:
                 tabWrite("#declare %s = finish {" % safety(name, Level=1))
-                if comments:
+                if not scene.pov_tempfiles_enable and comments:
                     file.write("  //No specular nor Mirror reflection\n")
                 else:
                     tabWrite("\n")
             elif Level == 2:
                 tabWrite("#declare %s = finish {" % safety(name, Level=2))
-                if comments:
+                if not scene.pov_tempfiles_enable and 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 comments:
+                if not scene.pov_tempfiles_enable and comments:
                     file.write("  //Maximum Spec and Mirror\n")
                 else:
                     tabWrite("\n")
@@ -638,7 +642,7 @@
 
         # TODO - blenders 'motherball' naming is not supported.
 
-        if scene.pov_comments_enable and len(metas) >= 1:
+        if not scene.pov_tempfiles_enable and scene.pov_comments_enable and len(metas) >= 1:
             file.write("//--Blob objects--\n\n")
 
         for ob in metas:
@@ -704,7 +708,7 @@
 
                 tabWrite("}\n")  # End of Metaball block
 
-                if scene.pov_comments_enable and len(metas) >= 1:
+                if not scene.pov_tempfiles_enable and scene.pov_comments_enable and len(metas) >= 1:
                     file.write("\n")
 
     objectNames = {}
@@ -774,8 +778,12 @@
 
             tabStr = tab * tabLevel
             for v in me.vertices:
-                file.write(",\n")
-                file.write(tabStr + "<%.6f, %.6f, %.6f>" % v.co[:])  # vert count
+                if not scene.pov_tempfiles_enable and scene.pov_list_lf_enable:
+                    file.write(",\n")
+                    file.write(tabStr + "<%.6f, %.6f, %.6f>" % v.co[:])  # vert count
+                else:
+                    file.write(", ")
+                    file.write("<%.6f, %.6f, %.6f>" % v.co[:])  # vert count
                 #tabWrite("<%.6f, %.6f, %.6f>" % v.co[:])  # vert count
             file.write("\n")
             tabWrite("}\n")
@@ -798,8 +806,12 @@
             idx = 0
             tabStr = tab * tabLevel
             for no, index in uniqueNormals.items():
-                file.write(",\n")
-                file.write(tabStr + "<%.6f, %.6f, %.6f>" % no)  # vert count
+                if not scene.pov_tempfiles_enable and scene.pov_list_lf_enable:
+                    file.write(",\n")
+                    file.write(tabStr + "<%.6f, %.6f, %.6f>" % no)  # vert count
+                else:
+                    file.write(", ")
+                    file.write("<%.6f, %.6f, %.6f>" % no)  # vert count
                 index[0] = idx
                 idx += 1
             file.write("\n")
@@ -828,8 +840,12 @@
                 idx = 0
                 tabStr = tab * tabLevel
                 for uv, index in uniqueUVs.items():
-                    file.write(",\n")
-                    file.write(tabStr + "<%.6f, %.6f>" % uv)
+                    if not scene.pov_tempfiles_enable and scene.pov_list_lf_enable:
+                        file.write(",\n")
+                        file.write(tabStr + "<%.6f, %.6f>" % uv)
+                    else:
+                        file.write(", ")
+                        file.write("<%.6f, %.6f>" % uv)
                     index[0] = idx
                     idx += 1
                 '''
@@ -976,7 +992,7 @@
                 #        continue # Some texture found
                 #if special_texture_found:
 
-                if texturesSpec != "" or texturesAlpha != "" or texturesNorm != "":
+                if texturesSpec != "" or texturesAlpha != "":
                     if texturesSpec != "":
                         # tabWrite("\n")
                         tabWrite("pigment_pattern {\n")
@@ -1156,8 +1172,12 @@
 
                 if not me_materials or me_materials[material_index] is None:  # No materials
                     for i1, i2, i3 in indices:
-                        file.write(",\n")
-                        file.write(tabStr + "<%d,%d,%d>" % (fv[i1], fv[i2], fv[i3]))  # vert count
+                        if not scene.pov_tempfiles_enable and scene.pov_list_lf_enable:
+                            file.write(",\n")
+                            file.write(tabStr + "<%d,%d,%d>" % (fv[i1], fv[i2], fv[i3]))  # vert count
+                        else:
+                            file.write(", ")
+                            file.write("<%d,%d,%d>" % (fv[i1], fv[i2], fv[i3]))  # vert count
                 else:
                     material = me_materials[material_index]
                     for i1, i2, i3 in indices:
@@ -1176,8 +1196,12 @@
                             diffuse_color = material.diffuse_color
                             ci1 = ci2 = ci3 = vertCols[diffuse_color[0], diffuse_color[1], diffuse_color[2], f.material_index][0]
 
-                        file.write(",\n")
-                        file.write(tabStr + "<%d,%d,%d>, %d,%d,%d" % (fv[i1], fv[i2], fv[i3], ci1, ci2, ci3))  # vert count
+                        if not scene.pov_tempfiles_enable and scene.pov_list_lf_enable:
+                            file.write(",\n")
+                            file.write(tabStr + "<%d,%d,%d>, %d,%d,%d" % (fv[i1], fv[i2], fv[i3], ci1, ci2, ci3))  # vert count
+                        else:
+                            file.write(", ")
+                            file.write("<%d,%d,%d>, %d,%d,%d" % (fv[i1], fv[i2], fv[i3], ci1, ci2, ci3))  # vert count
 
             file.write("\n")
             tabWrite("}\n")
@@ -1195,15 +1219,26 @@
 
                 for i1, i2, i3 in indices:
                     if me_faces[fi].use_smooth:
-                        file.write(",\n")
-                        file.write(tabStr + "<%d,%d,%d>" %\
-                        (uniqueNormals[verts_normals[fv[i1]]][0],\
-                         uniqueNormals[verts_normals[fv[i2]]][0],\
-                         uniqueNormals[verts_normals[fv[i3]]][0]))  # vert count
+                        if not scene.pov_tempfiles_enable and scene.pov_list_lf_enable:
+                            file.write(",\n")
+                            file.write(tabStr + "<%d,%d,%d>" %\
+                            (uniqueNormals[verts_normals[fv[i1]]][0],\
+                             uniqueNormals[verts_normals[fv[i2]]][0],\
+                             uniqueNormals[verts_normals[fv[i3]]][0]))  # vert count
+                        else:
+                            file.write(", ")
+                            file.write("<%d,%d,%d>" %\
+                            (uniqueNormals[verts_normals[fv[i1]]][0],\
+                             uniqueNormals[verts_normals[fv[i2]]][0],\
+                             uniqueNormals[verts_normals[fv[i3]]][0]))  # vert count
                     else:
                         idx = uniqueNormals[faces_normals[fi]][0]
-                        file.write(",\n")
-                        file.write(tabStr + "<%d,%d,%d>" % (idx, idx, idx))  # vert count
+                        if not scene.pov_tempfiles_enable and scene.pov_list_lf_enable:

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list