[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