[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1281] trunk/py/scripts/addons/ render_povray/render.py: Adding arguments to Specular map related functions

Maurice Raybaud mauriceraybaud at hotmail.fr
Thu Dec 16 13:36:18 CET 2010


Revision: 1281
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=1281
Author:   mauriceraybaud
Date:     2010-12-16 13:36:17 +0100 (Thu, 16 Dec 2010)

Log Message:
-----------
Adding arguments to Specular map related functions

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

Modified: trunk/py/scripts/addons/render_povray/render.py
===================================================================
--- trunk/py/scripts/addons/render_povray/render.py	2010-12-15 19:02:06 UTC (rev 1280)
+++ trunk/py/scripts/addons/render_povray/render.py	2010-12-16 12:36:17 UTC (rev 1281)
@@ -122,26 +122,34 @@
 
 
 ##############safety string name material
-def safety(name):
+def safety(name, Level):
+    # Level=1 is for texture with No specular nor Mirror reflection
+    # Level=2 is for texture with translation of spec and mir levels for when no map influences them
+    # Level=3 is for texture with Maximum Spec and Mirror 
     try:
         if int(name) > 0: prefix='shader'
     except: prefix=''
     prefix='shader_'
-    return prefix+name
+    if Level == 2:
+        return prefix+name
+    elif Level == 1:
+        return prefix+name+'0'#used for 0 of specular map
+    elif Level == 3:
+        return prefix+name+'1'#used for 1 of specular map
 
-def safety0(name): #used for 0 of specular map
-    try:
-        if int(name) > 0: prefix='shader'
-    except: prefix=''
-    prefix='shader_'
-    return prefix+name+'0'
-
-def safety1(name): #used for 1 of specular map
-    try:
-        if int(name) > 0: prefix='shader'
-    except: prefix=''
-    prefix='shader_'
-    return prefix+name+'1'
+##def safety0(name): #used for 0 of specular map
+##    try:
+##        if int(name) > 0: prefix='shader'
+##    except: prefix=''
+##    prefix='shader_'
+##    return prefix+name+'0'
+##
+##def safety1(name): #used for 1 of specular map
+##    try:
+##        if int(name) > 0: prefix='shader'
+##    except: prefix=''
+##    prefix='shader_'
+##    return prefix+name+'1'
 ##############end safety string name material
 ##############################EndSF###########################
 
@@ -223,13 +231,16 @@
 
 
         ##################Several versions of the finish: Level conditions are variations for specular/Mirror texture channel map with alternative finish of 0 specular and no mirror reflection
-        def povHasnoSpecularMaps():
+        # Level=1 Means No specular nor Mirror reflection
+        # Level=2 Means translation of spec and mir levels for when no map influences them
+        # Level=3 Means Maximum Spec and Mirror 
+        def povHasnoSpecularMaps(Level):
             if Level == 2:
-                file.write('#declare %s = finish {\n' % safety(name))
+                file.write('#declare %s = finish {\n' % safety(name, Level = 2))
             elif Level == 1:
-                file.write('#declare %s = finish {\n' % safety0(name))
+                file.write('#declare %s = finish {\n' % safety(name, Level = 1))
             elif Level == 3:
-                file.write('#declare %s = finish {\n' % safety1(name))
+                file.write('#declare %s = finish {\n' % safety(name, Level = 3))
 
 
             if material:
@@ -259,20 +270,21 @@
                 roughness += (1 / 511.0)
 
                 #####################################Diffuse Shader######################################
-                if material.diffuse_shader == 'OREN_NAYAR':
+                # Not used for Full spec level(3) of the shader
+                if material.diffuse_shader == 'OREN_NAYAR' and Level != 3:
                     file.write('\tbrilliance %.3g\n' % (0.9+material.roughness))#blender roughness is what is generally called oren nayar Sigma, and brilliance in povray
 
-                if material.diffuse_shader == 'TOON':
+                if material.diffuse_shader == 'TOON' and Level != 3:
                     file.write('\tbrilliance %.3g\n' % (0.01+material.diffuse_toon_smooth*0.25))
                     frontDiffuse*=0.5 #Lower diffuse and increase specular for toon effect seems to look better in povray
                 
-                if material.diffuse_shader == 'MINNAERT':
+                if material.diffuse_shader == 'MINNAERT' and Level != 3:
                     #file.write('\taoi %.3g\n' % material.darkness)
                     pass #let's keep things simple for now
-                if material.diffuse_shader == 'FRESNEL':
+                if material.diffuse_shader == 'FRESNEL' and Level != 3:
                     #file.write('\taoi %.3g\n' % material.diffuse_fresnel_factor)
                     pass #let's keep things simple for now
-                if material.diffuse_shader == 'LAMBERT':
+                if material.diffuse_shader == 'LAMBERT' and Level != 3:
                     file.write('\tbrilliance 1.8\n') #trying to best match lambert attenuation by that constant brilliance value
 
                 if Level == 2:   
@@ -304,7 +316,6 @@
                     file.write('\tspecular 0\n')
                 elif Level == 3:
                     file.write('\tspecular 1\n')
-                
                 file.write('\tdiffuse %.3g %.3g\n' % (frontDiffuse, backDiffuse))
 
 
@@ -358,14 +369,14 @@
 
             file.write('}\n')
 
-        Level=1
-        povHasnoSpecularMaps()
+        # Level=1 Means No specular nor Mirror reflection
+        povHasnoSpecularMaps(Level=1)
 
-        Level=2
-        povHasnoSpecularMaps()
+        # Level=2 Means translation of spec and mir levels for when no map influences them
+        povHasnoSpecularMaps(Level=2)
         
-        Level=3
-        povHasnoSpecularMaps()
+        # Level=3 Means Maximum Spec and Mirror
+        povHasnoSpecularMaps(Level=3)
 
     def exportCamera():
         camera = scene.camera
@@ -816,10 +827,10 @@
                         file.write('\n\t\t\t\tpigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>}' % (col[0], col[1], col[2], 1.0 - material.alpha, trans))
 
                     if texturesSpec !='':
-                        file.write('finish {%s}' % (safety0(material_finish)))
+                        file.write('finish {%s}' % (safety(material_finish, Level=1)))# Level 1 is no specular
                         
                     else:
-                        file.write('finish {%s}' % (safety(material_finish)))
+                        file.write('finish {%s}' % (safety(material_finish, Level=2)))# Level 2 is translated spec
 
                 else:
                     mappingDif = (" translate <%.4g-0.75,%.4g-0.75,%.4g-0.75> scale <%.4g,%.4g,%.4g>" % (t_dif.offset.x / 10 ,t_dif.offset.y / 10 ,t_dif.offset.z / 10, t_dif.scale.x / 2.25, t_dif.scale.y / 2.25, t_dif.scale.z / 2.25)) #strange that the translation factor for scale is not the same as for translate. ToDo: verify both matches with blender internal. 
@@ -835,10 +846,10 @@
                         file.write("\n\t\t\t\tpigment {uv_mapping image_map {%s \"%s\" %s}%s}" % (imageFormat(texturesDif),texturesDif,imgMap(t_dif),mappingDif))
 
                     if texturesSpec !='':
-                        file.write('finish {%s}' % (safety0(material_finish)))
+                        file.write('finish {%s}' % (safety(material_finish, Level=1)))# Level 1 is no specular
                             
                     else:
-                        file.write('finish {%s}' % (safety(material_finish)))
+                        file.write('finish {%s}' % (safety(material_finish, Level=2)))# Level 2 is translated specular
 
                     ## scale 1 rotate y*0
                     #imageMap = ("{image_map {%s \"%s\" %s }" % (imageFormat(textures),textures,imgMap(t_dif)))
@@ -868,10 +879,10 @@
                         file.write('\n\t\t\t\tpigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>}' % (col[0], col[1], col[2], 1.0 - material.alpha, trans))
 
                     if texturesSpec !='':
-                        file.write('finish {%s}' % (safety1(material_finish)))
+                        file.write('finish {%s}' % (safety(material_finish, Level=3)))# Level 3 is full specular
                         
                     else:
-                        file.write('finish {%s}' % (safety(material_finish)))
+                        file.write('finish {%s}' % (safety(material_finish, Level=2)))# Level 2 is translated specular
 
                 else:
                     mappingDif = (" translate <%.4g-0.75,%.4g-0.75,%.4g-0.75> scale <%.4g,%.4g,%.4g>" % (t_dif.offset.x / 10 ,t_dif.offset.y / 10 ,t_dif.offset.z / 10, t_dif.scale.x / 2.25, t_dif.scale.y / 2.25, t_dif.scale.z / 2.25)) #strange that the translation factor for scale is not the same as for translate. ToDo: verify both matches with blender internal. 
@@ -886,9 +897,9 @@
                     else:
                         file.write("\n\t\t\tpigment {uv_mapping image_map {%s \"%s\" %s}%s}" % (imageFormat(texturesDif),texturesDif,imgMap(t_dif),mappingDif))
                     if texturesSpec !='':
-                        file.write('finish {%s}' % (safety1(material_finish)))
+                        file.write('finish {%s}' % (safety(material_finish, Level=3)))# Level 3 is full specular
                     else:
-                        file.write('finish {%s}' % (safety(material_finish)))
+                        file.write('finish {%s}' % (safety(material_finish, Level=2)))# Level 2 is translated specular
 
                     ## scale 1 rotate y*0
                     #imageMap = ("{image_map {%s \"%s\" %s }" % (imageFormat(textures),textures,imgMap(t_dif)))




More information about the Bf-extensions-cvs mailing list