[Bf-extensions-cvs] [dbddb94] master: Added some more properties from Lanuhum commits, such as *photon map save and load *camera normal perturbation *Depth Of Field focal point by object (from Blender native dof_object property) *unchecked always sample from radiosity defaults *some other interface tweaks

Maurice Raybaud noreply at git.blender.org
Wed Feb 1 17:51:02 CET 2017


Commit: dbddb9496a97105fa6cdd6e0065ec599c49d2dce
Author: Maurice Raybaud
Date:   Wed Feb 1 17:50:49 2017 +0100
Branches: master
https://developer.blender.org/rBAdbddb9496a97105fa6cdd6e0065ec599c49d2dce

Added some more properties from Lanuhum commits, such as
*photon map save and load
*camera normal perturbation
*Depth Of Field focal point by object (from Blender native dof_object property)
*unchecked always sample from radiosity defaults
*some other interface tweaks

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

M	render_povray/__init__.py
M	render_povray/render.py
M	render_povray/ui.py

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

diff --git a/render_povray/__init__.py b/render_povray/__init__.py
index 7b23f6c..bd7142f 100644
--- a/render_povray/__init__.py
+++ b/render_povray/__init__.py
@@ -1,4 +1,4 @@
-# ##### BEGIN GPL LICENSE BLOCK #####
+# ##### BEGIN GPL LICENSE BLOCK #####
 #
 #  This program is free software; you can redistribute it and/or
 #  modify it under the terms of the GNU General Public License
@@ -339,6 +339,30 @@ class RenderPovSettingsScene(PropertyGroup):
     photon_gather_max = IntProperty(
             name="Gather Max", description="Maximum number of photons gathered for each point",
             min=1, max=256, default=100)
+ 
+    photon_map_file_save_load = EnumProperty(
+            name="Operation",
+            description="Load or Save photon map file",
+            items=(("NONE", "None", ""),
+                   ("save", "Save", ""),
+                   ("load", "Load", "")),
+            default="NONE")
+
+    photon_map_filename = StringProperty(
+            name="Filename",
+            description="",
+            maxlen=1024)
+
+    photon_map_dir = StringProperty(
+            name="Directory",
+            description="",
+            maxlen=1024, subtype="DIR_PATH")
+
+    photon_map_file = StringProperty(
+            name="File",
+            description="",
+            maxlen=1024, subtype="FILE_PATH")
+ 
 
     radio_adc_bailout = FloatProperty(
             name="ADC Bailout",
@@ -2065,6 +2089,24 @@ class RenderPovSettingsCamera(PropertyGroup):
                         "will lead to more samples, slower traces and better images",
             min=0.01, max=0.99, default=0.20)
 
+    normal_enable = BoolProperty(name="Perturbated Camera", default=False)
+    cam_normal = FloatProperty(name="Normal Strenght", min=0.0, max=1.0, default=0.0)
+    normal_patterns = EnumProperty(
+            name="Pattern",
+            description="",
+            items=(('agate', "Agate", ""), ('boxed', "Boxed", ""), ('bumps', "Bumps", ""), ('cells', "Cells", ""), 
+                   ('crackle', "Crackle", ""),('dents', "Dents", ""),
+                   ('granite', "Granite", ""),
+                   ('leopard', "Leopard", ""),
+                   ('marble', "Marble", ""), ('onion', "Onion", ""), ('pavement', "Pavement", ""), ('planar', "Planar", ""), 
+                   ('quilted', "Quilted", ""), ('ripples', "Ripples", ""),  ('radial', "Radial", ""),
+                   ('spherical', "Spherical", ""),('spiral1', "Spiral1", ""), ('spiral2', "Spiral2", ""), ('spotted', "Spotted", ""), 
+                   ('square', "Square", ""),('tiling', "Tiling", ""),
+                   ('waves', "Waves", ""), ('wood', "Wood", ""),('wrinkles', "Wrinkles", "")),
+            default='agate')
+    turbulence = FloatProperty(name="Turbulence", min=0.0, max=100.0, default=0.1)
+    scale = FloatProperty(name="Scale", min=0.0,default=1.0)
+    
     ##################################CustomPOV Code############################
     # Only DUMMIES below for now:
     replacement_text = StringProperty(
diff --git a/render_povray/render.py b/render_povray/render.py
index 8d247b8..1a98bdc 100644
--- a/render_povray/render.py
+++ b/render_povray/render.py
@@ -205,30 +205,27 @@ smokePath = os.path.join(preview_dir, "smoke.df3")
 def write_global_setting(scene,file):
     file.write("global_settings {\n")
     file.write("    assumed_gamma %.6f\n"%scene.pov.assumed_gamma)
-    if scene.pov.global_settings_default == False:
-        if scene.pov.adc_bailout_enable and scene.pov.radio_enable == False:
+    if scene.pov.global_settings_advanced:
+        if scene.pov.radio_enable == False:
             file.write("    adc_bailout %.6f\n"%scene.pov.adc_bailout)
-        if scene.pov.ambient_light_enable:
-            file.write("    ambient_light <%.6f,%.6f,%.6f>\n"%scene.pov.ambient_light[:])
-        if scene.pov.irid_wavelength_enable:
-            file.write("    irid_wavelength <%.6f,%.6f,%.6f>\n"%scene.pov.irid_wavelength[:])
-        if scene.pov.charset_enable:
-            file.write("    charset %s\n"%scene.pov.charset)
-        if scene.pov.max_trace_level_enable:
-            file.write("    max_trace_level %s\n"%scene.pov.max_trace_level)    
-        if scene.pov.max_intersections_enable:
-            file.write("    max_intersections %s\n"%scene.pov.max_intersections)
-        if scene.pov.number_of_waves_enable:
-            file.write("    number_of_waves %s\n"%scene.pov.number_of_waves)
-        if scene.pov.noise_generator_enable:
-            file.write("    noise_generator %s\n"%scene.pov.noise_generator) 
-    if scene.pov.sslt_enable:
-        file.write("    mm_per_unit %s\n"%scene.pov.mm_per_unit) 
-        file.write("    subsurface {\n")
-        file.write("        samples %s, %s\n"%(scene.pov.sslt_samples_max,scene.pov.sslt_samples_min))
-        if scene.pov.sslt_radiosity:
-            file.write("        radiosity on\n")
-        file.write("}\n")
+        file.write("    ambient_light <%.6f,%.6f,%.6f>\n"%scene.pov.ambient_light[:])
+        file.write("    irid_wavelength <%.6f,%.6f,%.6f>\n"%scene.pov.irid_wavelength[:])
+        file.write("    charset %s\n"%scene.pov.charset)
+        file.write("    max_trace_level %s\n"%scene.pov.max_trace_level)    
+        file.write("    max_intersections %s\n"%scene.pov.max_intersections)
+        file.write("    number_of_waves %s\n"%scene.pov.number_of_waves)
+        file.write("    noise_generator %s\n"%scene.pov.noise_generator) 
+
+    # below properties not added to __init__ yet to avoid conflicts with material sss scale 
+    # unless it would override then should be interfaced also in scene units property tab
+
+    # if scene.pov.sslt_enable:
+        # file.write("    mm_per_unit %s\n"%scene.pov.mm_per_unit) 
+        # file.write("    subsurface {\n")
+        # file.write("        samples %s, %s\n"%(scene.pov.sslt_samples_max,scene.pov.sslt_samples_min))
+        # if scene.pov.sslt_radiosity:
+            # file.write("        radiosity on\n")
+        # file.write("}\n")
 
     if scene.pov.radio_enable:
         file.write("    radiosity {\n")
@@ -271,12 +268,21 @@ def write_global_setting(scene,file):
             file.write("        adc_bailout %.6f\n"%scene.pov.photon_adc_bailout)
         if scene.pov.photon_media_enable:
             file.write("        media %s, %s\n"%(scene.pov.photon_media_steps,scene.pov.photon_media_factor))
-        if scene.pov.photon_savefile or scene.pov.photon_loadfile:
-            filePh = bpy.path.abspath(scene.pov.photon_map_file)
-            if scene.pov.photon_savefile:
-                file.write('save_file "%s"\n'%filePh)
-            if scene.pov.photon_loadfile and os.path.exists(filePh):
-                file.write('load_file "%s"\n'%filePh)
+        if scene.pov.photon_map_file_save_load in {'save'}:
+            filePhName = 'Photon_map_file.ph'
+            if scene.pov.photon_map_file != '':
+                filePhName = scene.pov.photon_map_file+'.ph'
+            filePhDir = tempfile.gettempdir()
+            path = bpy.path.abspath(scene.pov.photon_map_dir)
+            if os.path.exists(path):
+                filePhDir = path
+            fullFileName = os.path.join(filePhDir,filePhName)
+            file.write('        save_file "%s"\n'%fullFileName)
+            scene.pov.photon_map_file = fullFileName
+        if scene.pov.photon_map_file_save_load in {'load'}:
+            fullFileName = bpy.path.abspath(scene.pov.photon_map_file)
+            if os.path.exists(fullFileName):
+                file.write('        load_file "%s"\n'%fullFileName)
         file.write("}\n")
     file.write("}\n")
 
@@ -516,16 +522,27 @@ def write_pov(filename, scene=None, info_callback=None):
             tabWrite("rotate  <%.6f, %.6f, %.6f>\n" % \
                      tuple([degrees(e) for e in matrix.to_3x3().to_euler()]))
             tabWrite("translate <%.6f, %.6f, %.6f>\n" % matrix.translation[:])
-            if camera.data.pov.dof_enable and focal_point != 0:
+            if camera.data.pov.dof_enable and (focal_point != 0 or camera.data.dof_object):
                 tabWrite("aperture %.3g\n" % camera.data.pov.dof_aperture)
                 tabWrite("blur_samples %d %d\n" % \
                          (camera.data.pov.dof_samples_min, camera.data.pov.dof_samples_max))
                 tabWrite("variance 1/%d\n" % camera.data.pov.dof_variance)
                 tabWrite("confidence %.3g\n" % camera.data.pov.dof_confidence)
-                tabWrite("focal_point <0, 0, %f>\n" % focal_point)
+                if camera.data.dof_object:
+                    focalOb = scene.objects[camera.data.dof_object.name]
+                    matrixBlur = global_matrix * focalOb.matrix_world
+                    tabWrite("focal_point <%.4f,%.4f,%.4f>\n"% matrixBlur.translation[:])
+                else:
+                    tabWrite("focal_point <0, 0, %f>\n" % focal_point)
+        if camera.data.pov.normal_enable:
+            tabWrite("normal {%s %.4f turbulence %.4f scale %.4f}\n"%
+                    (camera.data.pov.normal_patterns,
+                    camera.data.pov.cam_normal,
+                    camera.data.pov.turbulence,
+                    camera.data.pov.scale))
         tabWrite("}\n")
-
         
+
         
     def exportLamps(lamps):
         # Incremented after each lamp export to declare its target
diff --git a/render_povray/ui.py b/render_povray/ui.py
index 21dcbd5..45649ea 100644
--- a/render_povray/ui.py
+++ b/render_povray/ui.py
@@ -395,11 +395,18 @@ del properties_data_lamp
 ###############################################################################
         
 class RENDER_PT_povray_export_settings(RenderButtonsPanel, bpy.types.Panel):
-    bl_label = "Export Settings"
+    bl_label = "INI Options"
+    bl_options = {'DEFAULT_CLOSED'}
     COMPAT_ENGINES = {'POVRAY_RENDER'}
 
+
     def draw_header(self, context):
-        self.layout.label(icon='CONSOLE')
+        scene = context.scene
+        if scene.pov.tempfiles_enable:
+            self.layout.prop(scene.pov, "tempfiles_enable", text="", icon='AUTO')
+        else:
+            self.layout.prop(scene.pov, "tempfiles_enable", text="", icon='CONSOLE')
+
     def

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list