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:
authorConstantin Rahn <conz@vrchannel.de>2011-01-23 23:39:02 +0300
committerConstantin Rahn <conz@vrchannel.de>2011-01-23 23:39:02 +0300
commit3a02375d7bee535091943f508dbd46c5fde62a0f (patch)
treed66dd9ef3336ad2bf68b8f6d7c3e7098b3a4c4b5 /render_povray
parente069b00331a1cf3316053c61bca6b49e37155eef (diff)
Added file options for export.
Usage: Deactivate "OS Tempfile" to see the new options. Some UI and code cleanup.
Diffstat (limited to 'render_povray')
-rw-r--r--render_povray/__init__.py35
-rw-r--r--render_povray/render.py169
-rw-r--r--render_povray/ui.py299
3 files changed, 317 insertions, 186 deletions
diff --git a/render_povray/__init__.py b/render_povray/__init__.py
index 4c3f278f..234761b6 100644
--- a/render_povray/__init__.py
+++ b/render_povray/__init__.py
@@ -21,7 +21,7 @@
bl_info = {
"name": "POV-Ray 3.7",
"author": "Campbell Barton, Silvio Falcinelli, Maurice Raybaud, Constantin Rahn",
- "version": (0, 0, 6),
+ "version": (0, 0, 7),
"blender": (2, 5, 6),
"api": 34318,
"location": "Info Header (engine dropdown)",
@@ -33,7 +33,6 @@ bl_info = {
"func=detail&aid=23145",
"category": "Render"}
-
if "bpy" in locals():
import imp
imp.reload(ui)
@@ -49,6 +48,29 @@ else:
def register():
Scene = bpy.types.Scene
+ # File Options
+ Scene.pov_tempfiles_enable = BoolProperty(
+ name="Enable Tempfiles",
+ description="Enable the OS-Tempfiles. Otherwise set the path where to save the files.",
+ default=True)
+ Scene.pov_deletefiles_enable = BoolProperty(
+ name="Delete files",
+ description="Delete files after rendering. Doesn't work with the image.",
+ default=True)
+ Scene.pov_scene_name = StringProperty(
+ name="Scene Name",
+ description="Name of POV-Ray scene to create. Empty name will use the name of the blend file.",
+ default="", maxlen=1024)
+ Scene.pov_scene_path = StringProperty(
+ name="Export scene path",
+ # description="Path to directory where the exported scene (POV and INI) is created", # Bug in POV-Ray RC3
+ description="Path to directory where the files are created",
+ default="", maxlen=1024, subtype="DIR_PATH")
+ Scene.pov_renderimage_path = StringProperty(
+ name="Rendered image path",
+ description="Full path to directory where the rendered image is saved.",
+ default="", maxlen=1024, subtype="DIR_PATH")
+
# Not a real pov option, just to know if we should write
Scene.pov_radio_enable = BoolProperty(
name="Enable Radiosity",
@@ -78,11 +100,11 @@ def register():
items=(("0", "None", "No indentation"),
("1", "Tabs", "Indentation with tabs"),
("2", "Spaces", "Indentation with spaces")),
- default="1")
+ default="2")
Scene.pov_indentation_spaces = IntProperty(
name="Quantity of spaces",
description="The number of spaces for indentation",
- min=1, max=10, default=3)
+ min=1, max=10, default=4)
Scene.pov_comments_enable = BoolProperty(
name="Enable Comments",
@@ -291,6 +313,11 @@ def unregister():
Mat = bpy.types.Material # MR
Tex = bpy.types.Texture # MR
Obj = bpy.types.Object # MR
+ del Scene.pov_tempfiles_enable # CR
+ del Scene.pov_scene_name # CR
+ del Scene.pov_deletefiles_enable # CR
+ del Scene.pov_scene_path # CR
+ del Scene.pov_renderimage_path # CR
del Scene.pov_radio_enable
del Scene.pov_radio_display_advanced
del Scene.pov_radio_adc_bailout
diff --git a/render_povray/render.py b/render_povray/render.py
index 8785dd23..4c4b201f 100644
--- a/render_povray/render.py
+++ b/render_povray/render.py
@@ -35,6 +35,8 @@ else:
##############################SF###########################
##############find image texture
+
+
def splitExt(path):
dotidx = path.rfind(".")
if dotidx == -1:
@@ -42,7 +44,7 @@ def splitExt(path):
else:
return path[dotidx:].upper().replace(".", "")
-
+
def imageFormat(imgF):
ext = ""
ext_orig = splitExt(imgF)
@@ -69,7 +71,7 @@ def imageFormat(imgF):
print(imgF)
if not ext:
- print(" WARNING: texture image format not supported ") # % (imgF , "")) #(ext_orig)))
+ print(" WARNING: texture image format not supported ") # % (imgF , "")) #(ext_orig)))
return ext
@@ -199,7 +201,7 @@ TabLevel = 0
def write_pov(filename, scene=None, info_callback=None):
import mathutils
#file = filename
- file = open(filename.name, "w")
+ file = open(filename, "w")
# Only for testing
if not scene:
@@ -326,6 +328,7 @@ def write_pov(filename, scene=None, info_callback=None):
# 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 == 1:
tabWrite("#declare %s = finish {" % safety(name, Level=1))
@@ -359,7 +362,7 @@ def write_pov(filename, scene=None, info_callback=None):
elif frontDiffuse == backDiffuse:
frontDiffuse = backDiffuse = 0.5 # Try to respect the user's 'intention' by comparing the two values but bringing the total back to one
elif frontDiffuse > backDiffuse: # Let the highest value stay the highest value
- backDiffuse = min(backDiffuse, (1.0 - frontDiffuse)) # clamps the sum below 1
+ backDiffuse = min(backDiffuse, (1.0 - frontDiffuse)) # clamps the sum below 1
else:
frontDiffuse = min(frontDiffuse, (1.0 - backDiffuse))
@@ -1455,10 +1458,10 @@ def write_pov_ini(filename_ini, filename_pov, filename_image):
x = int(render.resolution_x * render.resolution_percentage * 0.01)
y = int(render.resolution_y * render.resolution_percentage * 0.01)
- file = open(filename_ini.name, "w")
+ file = open(filename_ini, "w")
file.write("Version=3.7\n")
- file.write("Input_File_Name='%s'\n" % filename_pov.name)
- file.write("Output_File_Name='%s'\n" % filename_image.name)
+ file.write("Input_File_Name='%s'\n" % filename_pov)
+ file.write("Output_File_Name='%s'\n" % filename_image)
file.write("Width=%d\n" % x)
file.write("Height=%d\n" % y)
@@ -1505,20 +1508,26 @@ class PovrayRender(bpy.types.RenderEngine):
bl_label = "POV-Ray 3.7"
DELAY = 0.5
- def _export(self, scene):
+ def _export(self, scene, povPath, renderImagePath):
import tempfile
+ import os
- # mktemp is Deprecated since version 2.3, replaced with NamedTemporaryFile() #CR
- self._temp_file_in = tempfile.NamedTemporaryFile(suffix=".pov", delete=False)
- self._temp_file_out = tempfile.NamedTemporaryFile(suffix=".png", delete=False) # PNG with POV 3.7, can show the background color with alpha. In the long run using the POV-Ray interactive preview like bishop 3D could solve the preview for all formats.
- #self._temp_file_out = tempfile.NamedTemporaryFile(suffix=".tga", delete=False)
- self._temp_file_ini = tempfile.NamedTemporaryFile(suffix=".ini", delete=False)
- '''
- self._temp_file_in = "/test.pov"
- self._temp_file_out = "/test.png" # PNG with POV-Ray 3.7, can show the background color with alpha. In the long run using the POV-Ray interactive preview like bishop 3D could solve the preview for all formats.
- #self._temp_file_out = "/test.tga"
- self._temp_file_ini = "/test.ini"
- '''
+ if scene.pov_tempfiles_enable:
+ self._temp_file_in = tempfile.NamedTemporaryFile(suffix=".pov", delete=False).name
+ self._temp_file_out = tempfile.NamedTemporaryFile(suffix=".png", delete=False).name # PNG with POV 3.7, can show the background color with alpha. In the long run using the POV-Ray interactive preview like bishop 3D could solve the preview for all formats.
+ #self._temp_file_out = tempfile.NamedTemporaryFile(suffix=".tga", delete=False).name
+ self._temp_file_ini = tempfile.NamedTemporaryFile(suffix=".ini", delete=False).name
+ else:
+ self._temp_file_in = povPath + ".pov"
+ self._temp_file_out = renderImagePath + ".png" # PNG with POV-Ray 3.7, can show the background color with alpha. In the long run using the POV-Ray interactive preview like bishop 3D could solve the preview for all formats.
+ #self._temp_file_out = renderImagePath + ".tga"
+ self._temp_file_ini = povPath + ".ini"
+ '''
+ self._temp_file_in = "/test.pov"
+ self._temp_file_out = "/test.png" # PNG with POV-Ray 3.7, can show the background color with alpha. In the long run using the POV-Ray interactive preview like bishop 3D could solve the preview for all formats.
+ #self._temp_file_out = "/test.tga"
+ self._temp_file_ini = "/test.ini"
+ '''
def info_callback(txt):
self.update_stats("", "POV-Ray 3.7: " + txt)
@@ -1528,7 +1537,7 @@ class PovrayRender(bpy.types.RenderEngine):
def _render(self, scene):
try:
- os.remove(self._temp_file_out.name) # so as not to load the old file
+ os.remove(self._temp_file_out) # so as not to load the old file
except OSError:
pass
@@ -1587,7 +1596,7 @@ class PovrayRender(bpy.types.RenderEngine):
if 1:
# TODO, when POV-Ray isn't found this gives a cryptic error, would be nice to be able to detect if it exists
try:
- self._process = subprocess.Popen([pov_binary, self._temp_file_ini.name] + extra_args) # stdout=subprocess.PIPE, stderr=subprocess.PIPE
+ self._process = subprocess.Popen([pov_binary, self._temp_file_ini] + extra_args) # stdout=subprocess.PIPE, stderr=subprocess.PIPE
except OSError:
# TODO, report api
print("POV-Ray 3.7: could not execute '%s', possibly POV-Ray isn't installed" % pov_binary)
@@ -1598,37 +1607,27 @@ class PovrayRender(bpy.types.RenderEngine):
else:
# This works too but means we have to wait until its done
- os.system("%s %s" % (pov_binary, self._temp_file_ini.name))
+ os.system("%s %s" % (pov_binary, self._temp_file_ini))
# print ("***-DONE-***")
return True
def _cleanup(self):
for f in (self._temp_file_in, self._temp_file_ini, self._temp_file_out):
- #print("Name: %s" % f.name)
- #print("File closed %s" % f.closed)
- f.close() # Why do I have to close them again? Without closeing the pov and ini files are not deletable. PNG is not closable!
try:
- os.unlink(f.name)
- #os.remove(f.name)
+ os.unlink(f)
except OSError: # was that the proper error type?
- #print("Couldn\'t remove/unlink TEMP file %s" % f.name)
+ #print("POV-Ray 3.7: could not remove/unlink TEMP file %s" % f.name)
pass
#print("")
self.update_stats("", "")
def render(self, scene):
+ import tempfile
- self.update_stats("", "POV-Ray 3.7: Exporting data from Blender")
- self._export(scene)
- self.update_stats("", "POV-Ray 3.7: Parsing File")
-
- if not self._render(scene):
- self.update_stats("", "POV-Ray 3.7: Not found")
- return
+ print("***INITIALIZING***")
- r = scene.render
##WIP output format
## if r.file_format == 'OPENEXR':
## fformat = 'EXR'
@@ -1638,12 +1637,99 @@ class PovrayRender(bpy.types.RenderEngine):
## r.file_format = 'TARGA'
## r.color_mode = 'RGBA'
+ blendSceneName = bpy.data.filepath.split(os.path.sep)[-1].split(".")[0]
+ povSceneName = ""
+ povPath = ""
+ renderImagePath = ""
+
+ if not scene.pov_tempfiles_enable:
+
+ # check paths
+ povPath = bpy.path.abspath(scene.pov_scene_path).replace('\\', '/')
+ if povPath == "":
+ if bpy.path.abspath("//") != "":
+ povPath = bpy.path.abspath("//")
+ else:
+ povPath = tempfile.gettempdir()
+ elif povPath.endswith("/"):
+ if povPath == "/":
+ povPath = bpy.path.abspath("//")
+ else:
+ povPath = bpy.path.abspath(scene.pov_scene_path)
+ if not os.path.exists(povPath):
+ print("POV-Ray 3.7: Cannot find scenes directory")
+ self.update_stats("", "POV-Ray 3.7: Cannot find scenes directory")
+ print("Path: " + povPath)
+ time.sleep(2.0)
+ return
+
+ '''
+ # Bug in POV-Ray RC3
+ renderImagePath = bpy.path.abspath(scene.pov_renderimage_path).replace('\\','/')
+ if renderImagePath == "":
+ if bpy.path.abspath("//") != "":
+ renderImagePath = bpy.path.abspath("//")
+ else:
+ renderImagePath = tempfile.gettempdir()
+ #print("Path: " + renderImagePath)
+ elif path.endswith("/"):
+ if renderImagePath == "/":
+ renderImagePath = bpy.path.abspath("//")
+ else:
+ renderImagePath = bpy.path.abspath(scene.pov_renderimage_path)
+ if not os.path.exists(path):
+ print("POV-Ray 3.7: Cannot find render image directory")
+ self.update_stats("", "POV-Ray 3.7: Cannot find render image directory")
+ time.sleep(2.0)
+ return
+ '''
+
+ # check name
+ if scene.pov_scene_name == "":
+ if blendSceneName != "":
+ povSceneName = blendSceneName
+ else:
+ povSceneName = "untitled"
+ else:
+ povSceneName = scene.pov_scene_name
+ if os.path.isfile(povSceneName):
+ povSceneName = os.path.basename(povSceneName)
+ povSceneName = povSceneName.split('/')[-1].split('\\')[-1]
+ if not povSceneName:
+ print("POV-Ray 3.7: Invalid scene name")
+ self.update_stats("", "POV-Ray 3.7: Invalid scene name")
+ time.sleep(2.0)
+ return
+ povSceneName = os.path.splitext(povSceneName)[0]
+
+ print("Scene name: " + povSceneName)
+ print("Export path: " + povPath)
+ povPath = povPath + "\\" + povSceneName
+ povPath = os.path.realpath(povPath)
+
+ # renderImagePath = renderImagePath + "\\" + povSceneName # for now this has to be the same like the pov output. Bug in POV-Ray RC3.
+ renderImagePath = povPath # Bugfix for POV-Ray RC3 bug
+ renderImagePath = os.path.realpath(renderImagePath)
+
+ #print("Export path: %s" % povPath)
+ #print("Render Image path: %s" % renderImagePath)
+
+ # start export
+ self.update_stats("", "POV-Ray 3.7: Exporting data from Blender")
+ self._export(scene, povPath, renderImagePath)
+ self.update_stats("", "POV-Ray 3.7: Parsing File")
+
+ if not self._render(scene):
+ self.update_stats("", "POV-Ray 3.7: Not found")
+ return
+
+ r = scene.render
# compute resolution
x = int(r.resolution_x * r.resolution_percentage * 0.01)
y = int(r.resolution_y * r.resolution_percentage * 0.01)
# Wait for the file to be created
- while not os.path.exists(self._temp_file_out.name):
+ while not os.path.exists(self._temp_file_out):
# print("***POV WAITING FOR FILE***")
if self.test_break():
try:
@@ -1661,7 +1747,7 @@ class PovrayRender(bpy.types.RenderEngine):
time.sleep(self.DELAY)
- if os.path.exists(self._temp_file_out.name):
+ if os.path.exists(self._temp_file_out):
# print("***POV FILE OK***")
self.update_stats("", "POV-Ray 3.7: Rendering")
@@ -1673,7 +1759,7 @@ class PovrayRender(bpy.types.RenderEngine):
lay = result.layers[0]
# possible the image wont load early on.
try:
- lay.load_from_file(self._temp_file_out.name)
+ lay.load_from_file(self._temp_file_out)
except SystemError:
pass
self.end_result(result)
@@ -1702,7 +1788,7 @@ class PovrayRender(bpy.types.RenderEngine):
# stdout_value, stderr_value = self._process.communicate() # locks
# check if the file updated
- new_size = os.path.getsize(self._temp_file_out.name)
+ new_size = os.path.getsize(self._temp_file_out)
if new_size != prev_size:
update_image()
@@ -1714,4 +1800,5 @@ class PovrayRender(bpy.types.RenderEngine):
print("***POV FINISHED***")
#time.sleep(self.DELAY)
- self._cleanup()
+ if scene.pov_deletefiles_enable:
+ self._cleanup()
diff --git a/render_povray/ui.py b/render_povray/ui.py
index 93a21e0c..678314f1 100644
--- a/render_povray/ui.py
+++ b/render_povray/ui.py
@@ -25,7 +25,7 @@ import properties_render
properties_render.RENDER_PT_render.COMPAT_ENGINES.add('POVRAY_RENDER')
properties_render.RENDER_PT_dimensions.COMPAT_ENGINES.add('POVRAY_RENDER')
# properties_render.RENDER_PT_antialiasing.COMPAT_ENGINES.add('POVRAY_RENDER')
-properties_render.RENDER_PT_shading.COMPAT_ENGINES.add('POVRAY_RENDER')
+properties_render.RENDER_PT_shading.COMPAT_ENGINES.add('POVRAY_RENDER') # We don't use it right now. Should be implemented later.
properties_render.RENDER_PT_output.COMPAT_ENGINES.add('POVRAY_RENDER')
del properties_render
@@ -134,143 +134,57 @@ class ObjectButtonsPanel():
rd = context.scene.render
return obj and (rd.use_game_engine == False) and (rd.engine in cls.COMPAT_ENGINES)
-########################################MR######################################
-
-class MATERIAL_PT_povray_mirrorIOR(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "IOR Mirror"
- COMPAT_ENGINES = {'POVRAY_RENDER'}
-
- def draw_header(self, context):
- scene = context.material
-
- self.layout.prop(scene, "pov_mirror_use_IOR", text="")
-
- def draw(self, context):
- layout = self.layout
-
- mat = context.material
- layout.active = mat.pov_mirror_use_IOR
-
- if mat.pov_mirror_use_IOR:
- split = layout.split()
- col = split.column()
- row = col.row()
- row.alignment = 'CENTER'
- row.label(text="The current Raytrace ")
- row = col.row()
- row.alignment = 'CENTER'
- row.label(text="Transparency IOR is: " + str(mat.raytrace_transparency.ior))
-
-
-class MATERIAL_PT_povray_metallic(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "metallic Mirror"
- COMPAT_ENGINES = {'POVRAY_RENDER'}
-
- def draw_header(self, context):
- scene = context.material
-
- self.layout.prop(scene, "pov_mirror_metallic", text="")
-
- def draw(self, context):
- layout = self.layout
-
- mat = context.material
- layout.active = mat.pov_mirror_metallic
-
-
-class MATERIAL_PT_povray_conserve_energy(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "conserve energy"
+class RENDER_PT_povray_export_settings(RenderButtonsPanel, bpy.types.Panel):
+ bl_label = "Export Settings"
COMPAT_ENGINES = {'POVRAY_RENDER'}
- def draw_header(self, context):
- mat = context.material
-
- self.layout.prop(mat, "pov_conserve_energy", text="")
-
def draw(self, context):
layout = self.layout
- mat = context.material
- layout.active = mat.pov_conserve_energy
-
-
-class MATERIAL_PT_povray_iridescence(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "iridescence"
- COMPAT_ENGINES = {'POVRAY_RENDER'}
-
- def draw_header(self, context):
- mat = context.material
-
- self.layout.prop(mat, "pov_irid_enable", text="")
+ scene = context.scene
+ rd = scene.render
- def draw(self, context):
- layout = self.layout
+ layout.active = scene.pov_max_trace_level
+ split = layout.split()
- mat = context.material
- layout.active = mat.pov_irid_enable
+ col = split.column()
+ col.label(text="Command line switches:")
+ col.prop(scene, "pov_command_line_switches", text="")
+ split = layout.split()
+ col = split.column()
+ col.prop(scene, "pov_tempfiles_enable", text="OS Tempfiles")
+ if not scene.pov_tempfiles_enable:
+ col = split.column()
+ col.prop(scene, "pov_deletefiles_enable", text="Delete files")
+ else:
+ col = split.column()
- if mat.pov_irid_enable:
+ split = layout.split()
+ if not scene.pov_tempfiles_enable:
+ col = split.column()
+ col.prop(scene, "pov_scene_name", text="Name")
split = layout.split()
-
col = split.column()
- col.prop(mat, "pov_irid_amount", slider=True)
- col.prop(mat, "pov_irid_thickness", slider=True)
- col.prop(mat, "pov_irid_turbulence", slider=True)
-
-
-class MATERIAL_PT_povray_caustics(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "Caustics"
- COMPAT_ENGINES = {'POVRAY_RENDER'}
-
- def draw_header(self, context):
- mat = context.material
-
- self.layout.prop(mat, "pov_caustics_enable", text="")
-
- def draw(self, context):
-
- layout = self.layout
-
- mat = context.material
- layout.active = mat.pov_caustics_enable
- Radio = 1
- if mat.pov_caustics_enable:
+ col.prop(scene, "pov_scene_path", text="Path to files")
+ #col.prop(scene, "pov_scene_path", text="Path to POV-file")
split = layout.split()
+ #col = split.column() # Bug in POV-Ray RC3
+ #col.prop(scene, "pov_renderimage_path", text="Path to image")
+ #split = layout.split()
col = split.column()
- col.prop(mat, "pov_refraction_type")
-## if mat.pov_refraction_type=="0":
-## mat.pov_fake_caustics = False
-## mat.pov_photons_refraction = False
-## mat.pov_photons_reflection = True
- if mat.pov_refraction_type == "1":
-## mat.pov_fake_caustics = True
-## mat.pov_photons_refraction = False
- col.prop(mat, "pov_fake_caustics_power", slider=True)
- elif mat.pov_refraction_type == "2":
-## mat.pov_fake_caustics = False
-## mat.pov_photons_refraction = True
- col.prop(mat, "pov_photons_dispersion", slider=True)
- col.prop(mat, "pov_photons_reflection")
-
-## col.prop(mat, "pov_fake_caustics")
-## if mat.pov_fake_caustics:
-## col.prop(mat, "pov_fake_caustics_power", slider=True)
-## mat.pov_photons_refraction=0
-## else:
-## col.prop(mat, "pov_photons_refraction")
-## if mat.pov_photons_refraction:
-## col.prop(mat, "pov_photons_dispersion", slider=True)
-## Radio = 0
-## mat.pov_fake_caustics=Radio
-## col.prop(mat, "pov_photons_reflection")
-####TODO : MAKE THIS A real RADIO BUTTON (using EnumProperty?)
-######################################EndMR#####################################
+ col.prop(scene, "pov_indentation_character", text="Indent")
+ col = split.column()
+ if scene.pov_indentation_character == "2":
+ col.prop(scene, "pov_indentation_spaces", text="Spaces")
+ split = layout.split()
+ col = split.column()
+ col.prop(scene, "pov_comments_enable", text="Comments")
-class RENDER_PT_povray_global_settings(RenderButtonsPanel, bpy.types.Panel):
- bl_label = "Global Settings"
+class RENDER_PT_povray_render_settings(RenderButtonsPanel, bpy.types.Panel):
+ bl_label = "Render Settings"
COMPAT_ENGINES = {'POVRAY_RENDER'}
def draw(self, context):
@@ -281,11 +195,6 @@ class RENDER_PT_povray_global_settings(RenderButtonsPanel, bpy.types.Panel):
layout.active = scene.pov_max_trace_level
split = layout.split()
-
- col = split.column()
- col.label(text="Command line switches:")
- col.prop(scene, "pov_command_line_switches", text="")
- split = layout.split()
col = split.column()
col.prop(scene, "pov_max_trace_level", text="Ray Depth")
col = split.column()
@@ -407,7 +316,6 @@ class RENDER_PT_povray_media(RenderButtonsPanel, bpy.types.Panel):
col = split.column()
col.prop(scene, "pov_media_color", text="Color")
-
##class RENDER_PT_povray_baking(RenderButtonsPanel, bpy.types.Panel):
## bl_label = "Baking"
## COMPAT_ENGINES = {'POVRAY_RENDER'}
@@ -426,26 +334,135 @@ class RENDER_PT_povray_media(RenderButtonsPanel, bpy.types.Panel):
## layout.active = scene.pov_baking_enable
-class RENDER_PT_povray_formatting(RenderButtonsPanel, bpy.types.Panel):
- bl_label = "Formatting POV-Ray file"
+class MATERIAL_PT_povray_mirrorIOR(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "IOR Mirror"
COMPAT_ENGINES = {'POVRAY_RENDER'}
+ def draw_header(self, context):
+ scene = context.material
+
+ self.layout.prop(scene, "pov_mirror_use_IOR", text="")
+
def draw(self, context):
layout = self.layout
- scene = context.scene
- rd = scene.render
+ mat = context.material
+ layout.active = mat.pov_mirror_use_IOR
- split = layout.split()
+ if mat.pov_mirror_use_IOR:
+ split = layout.split()
+ col = split.column()
+ row = col.row()
+ row.alignment = 'CENTER'
+ row.label(text="The current Raytrace ")
+ row = col.row()
+ row.alignment = 'CENTER'
+ row.label(text="Transparency IOR is: " + str(mat.raytrace_transparency.ior))
- col = split.column()
- col.prop(scene, "pov_indentation_character", text="Indent")
- col = split.column()
- if scene.pov_indentation_character == "2":
- col.prop(scene, "pov_indentation_spaces", text="Spaces")
- split = layout.split()
- col = split.column()
- col.prop(scene, "pov_comments_enable", text="Comments")
+
+class MATERIAL_PT_povray_metallic(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "metallic Mirror"
+ COMPAT_ENGINES = {'POVRAY_RENDER'}
+
+ def draw_header(self, context):
+ scene = context.material
+
+ self.layout.prop(scene, "pov_mirror_metallic", text="")
+
+ def draw(self, context):
+ layout = self.layout
+
+ mat = context.material
+ layout.active = mat.pov_mirror_metallic
+
+
+class MATERIAL_PT_povray_conserve_energy(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "conserve energy"
+ COMPAT_ENGINES = {'POVRAY_RENDER'}
+
+ def draw_header(self, context):
+ mat = context.material
+
+ self.layout.prop(mat, "pov_conserve_energy", text="")
+
+ def draw(self, context):
+ layout = self.layout
+
+ mat = context.material
+ layout.active = mat.pov_conserve_energy
+
+
+class MATERIAL_PT_povray_iridescence(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "iridescence"
+ COMPAT_ENGINES = {'POVRAY_RENDER'}
+
+ def draw_header(self, context):
+ mat = context.material
+
+ self.layout.prop(mat, "pov_irid_enable", text="")
+
+ def draw(self, context):
+ layout = self.layout
+
+ mat = context.material
+ layout.active = mat.pov_irid_enable
+
+ if mat.pov_irid_enable:
+ split = layout.split()
+
+ col = split.column()
+ col.prop(mat, "pov_irid_amount", slider=True)
+ col.prop(mat, "pov_irid_thickness", slider=True)
+ col.prop(mat, "pov_irid_turbulence", slider=True)
+
+
+class MATERIAL_PT_povray_caustics(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Caustics"
+ COMPAT_ENGINES = {'POVRAY_RENDER'}
+
+ def draw_header(self, context):
+ mat = context.material
+
+ self.layout.prop(mat, "pov_caustics_enable", text="")
+
+ def draw(self, context):
+
+ layout = self.layout
+
+ mat = context.material
+ layout.active = mat.pov_caustics_enable
+ Radio = 1
+ if mat.pov_caustics_enable:
+ split = layout.split()
+
+ col = split.column()
+ col.prop(mat, "pov_refraction_type")
+## if mat.pov_refraction_type=="0":
+## mat.pov_fake_caustics = False
+## mat.pov_photons_refraction = False
+## mat.pov_photons_reflection = True
+ if mat.pov_refraction_type == "1":
+## mat.pov_fake_caustics = True
+## mat.pov_photons_refraction = False
+ col.prop(mat, "pov_fake_caustics_power", slider=True)
+ elif mat.pov_refraction_type == "2":
+## mat.pov_fake_caustics = False
+## mat.pov_photons_refraction = True
+ col.prop(mat, "pov_photons_dispersion", slider=True)
+ col.prop(mat, "pov_photons_reflection")
+
+## col.prop(mat, "pov_fake_caustics")
+## if mat.pov_fake_caustics:
+## col.prop(mat, "pov_fake_caustics_power", slider=True)
+## mat.pov_photons_refraction=0
+## else:
+## col.prop(mat, "pov_photons_refraction")
+## if mat.pov_photons_refraction:
+## col.prop(mat, "pov_photons_dispersion", slider=True)
+## Radio = 0
+## mat.pov_fake_caustics=Radio
+## col.prop(mat, "pov_photons_reflection")
+####TODO : MAKE THIS A real RADIO BUTTON (using EnumProperty?)
class TEXTURE_PT_povray_tex_gamma(TextureButtonsPanel, bpy.types.Panel):