Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaurice Raybaud <mauriceraybaud@hotmail.fr>2010-12-16 15:36:17 +0300
committerMaurice Raybaud <mauriceraybaud@hotmail.fr>2010-12-16 15:36:17 +0300
commit93517f2fd1b2e04e30edec685c162ffa0bf87c8d (patch)
tree3200f1c7bfd63ac9bff6edff213dea5da8612a1e /render_povray
parent02ae5c624b89d2dd2154fc11a54bb0f493427648 (diff)
Adding arguments to Specular map related functions
Diffstat (limited to 'render_povray')
-rw-r--r--render_povray/render.py91
1 files changed, 51 insertions, 40 deletions
diff --git a/render_povray/render.py b/render_povray/render.py
index 4ec888a5..28b591eb 100644
--- a/render_povray/render.py
+++ b/render_povray/render.py
@@ -122,26 +122,34 @@ def path_image(image):
##############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
-
-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'
+ 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'
##############end safety string name material
##############################EndSF###########################
@@ -223,13 +231,16 @@ def write_pov(filename, scene=None, info_callback=None):
##################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 @@ def write_pov(filename, scene=None, info_callback=None):
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 @@ def write_pov(filename, scene=None, info_callback=None):
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 @@ def write_pov(filename, scene=None, info_callback=None):
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 @@ def write_pov(filename, scene=None, info_callback=None):
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 @@ def write_pov(filename, scene=None, info_callback=None):
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 @@ def write_pov(filename, scene=None, info_callback=None):
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 @@ def write_pov(filename, scene=None, info_callback=None):
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)))