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:
authorJesse Kaukonen <jesse.kaukonen@gmail.com>2010-11-08 18:30:26 +0300
committerJesse Kaukonen <jesse.kaukonen@gmail.com>2010-11-08 18:30:26 +0300
commit0b522fdac510aa9ee99ba6f1732b8b0e8954a49c (patch)
treeeef969dd60626bf6333fa743e8e919f477607943 /render_renderfarmfi.py
parente8a00f90207772d8677158fb856934d33fb4bf3d (diff)
Added a new summary block to the Renderfarm.fi render engine page
Diffstat (limited to 'render_renderfarmfi.py')
-rw-r--r--render_renderfarmfi.py123
1 files changed, 109 insertions, 14 deletions
diff --git a/render_renderfarmfi.py b/render_renderfarmfi.py
index dbf563fe..81ad3d26 100644
--- a/render_renderfarmfi.py
+++ b/render_renderfarmfi.py
@@ -19,9 +19,9 @@
bl_addon_info = {
"name": "Renderfarm.fi",
"author": "Nathan Letwory <nathan@letworyinteractive.com>, Jesse Kaukonen <jesse.kaukonen@gmail.com>",
- "version": (3,),
- "blender": (2, 5, 3),
- "api": 31847,
+ "version": (4,),
+ "blender": (2, 5, 5),
+ "api": 32941,
"location": "Render > Engine > Renderfarm.fi",
"description": "Send .blend as session to http://www.renderfarm.fi to render",
"warning": "",
@@ -119,7 +119,7 @@ ORESettings.inlicense = EnumProperty(items=licenses, name='source license', desc
ORESettings.outlicense = EnumProperty(items=licenses, name='output license', description='license speficied for the output files', default='1')
ORESettings.sessions = CollectionProperty(type=ORESession, name='Sessions', description='Sessions on Renderfarm.fi')
-
+
# all panels, except render panel
# Example of wrapping every class 'as is'
import properties_scene
@@ -154,8 +154,98 @@ class RenderButtonsPanel():
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "render"
- # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
+ # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
+
+class SUMMARY_PT_RenderfarmFi(RenderButtonsPanel, bpy.types.Panel):
+ # Prints a summary to the panel before uploading. If scene settings differ from ore settings, then display a warning icon
+ bl_label = 'Summary'
+ COMPAT_ENGINES = set(['RENDERFARMFI_RENDER'])
+
+ @classmethod
+ def poll(cls, context):
+ rd = context.scene.render
+ return (rd.use_game_engine==False) and (rd.engine in cls.COMPAT_ENGINES)
+ def draw(self, context):
+ sce = context.scene
+ rd = context.scene.render
+ ore = context.scene.ore_render
+ layout = self.layout
+
+ # Check if correct resolution is set
+ if rd.resolution_x != ore.resox:
+ layout.label(text='Resolution X: ' + str(ore.resox), icon='ERROR')
+ else:
+ layout.label(text='Resolution X: ' + str(ore.resox), icon='FILE_TICK')
+ if rd.resolution_y != ore.resoy:
+ layout.label(text='Resolution Y: ' + str(ore.resoy), icon='ERROR')
+ else:
+ layout.label(text='Resolution Y: ' + str(ore.resoy), icon='FILE_TICK')
+
+ # Check if correct number of frames is specified
+ if (sce.frame_start != ore.start) and not ( (sce.frame_start == ore.start and sce.frame_end == ore.end) and sce.frame_start == sce.frame_end):
+ layout.label(text='Start frame: ' + str(ore.start), icon='ERROR')
+ layout.label(text='.blend Start frame is different to the one specified in the uploader script. Please verify!')
+ else:
+ layout.label(text='Start frame: ' + str(ore.start), icon='FILE_TICK')
+ if (sce.frame_end != ore.end) and not ( (sce.frame_start == ore.start and sce.frame_end == ore.end) and sce.frame_start == sce.frame_end):
+ layout.label(text='End frame: ' + str(ore.end), icon='ERROR')
+ layout.label(text='.blend End frame is different to the one specified in the uploader script. Please verify!')
+ else:
+ layout.label(text='End frame: ' + str(ore.end), icon='FILE_TICK')
+
+ # Check if more than 1 frame is specified
+ if (sce.frame_start == ore.start and sce.frame_end == ore.end) and (sce.frame_start == sce.frame_end):
+ layout.label(text='Only one frame specified to be rendered!')
+ layout.label(text='This is highly ineffective when using distributed rendering')
+
+ if rd.resolution_percentage != 100:
+ layout.label(text='Resolution percentage: ' + str(rd.resolution_percentage), icon='ERROR')
+ else:
+ layout.label(text='Resolution percentage: ' + str(rd.resolution_percentage), icon='FILE_TICK')
+
+ if rd.file_format != 'PNG':
+ layout.label(text='Output format: ' + rd.file_format, icon='ERROR')
+ layout.label(text='Output format must be set to PNG')
+ else:
+ layout.label(text='Output format: ' + rd.file_format, icon='FILE_TICK')
+
+ if ore.parts > 1 and rd.use_sss == True:
+ layout.label(text='Subsurface Scattering: ' + str(rd.use_sss), icon='ERROR')
+ layout.label(text='If you want to use SSS, parts must be set to 1')
+ else:
+ layout.label(text='Subsurface Scattering: ' + str(rd.use_sss), icon='FILE_TICK')
+
+ if rd.use_compositing == False:
+ layout.label(text='Composite nodes: ' + str(rd.use_compositing), icon='ERROR')
+ layout.label(text='Composite nodes are disabled.')
+ layout.label(text='The script automatically disables them if: ')
+ layout.label(text='- Filter type nodes are used and parts are more than 1')
+ layout.label(text='- There is an output node')
+ else:
+ layout.label(text='Composite nodes: ' + str(rd.use_compositing), icon='FILE_TICK')
+
+ if rd.use_save_buffers:
+ layout.label(text='Save buffers: ' + str(rd.use_save_buffers), icon='ERROR')
+ layout.label(text='Save buffers must be disabled')
+ layout.label(text='Can only disabled if Full Sample is turned off')
+ else:
+ layout.label(text='Save buffers: ' + str(rd.use_save_buffers), icon='FILE_TICK')
+
+ if rd.threads_mode != 'FIXED' or rd.threads > 1:
+ layout.label(text='Threads: ' + rd.threads_mode + ' ' + str(rd.threads), icon='ERROR')
+ layout.label(text='Threads must be set to Fixed, 1')
+ else:
+ layout.label(text='Threads: ' + rd.threads_mode + ' ' + str(rd.threads), icon='FILE_TICK')
+
+ if ore.prepared == False:
+ layout.label(text='The script reports "not ready".', icon='ERROR')
+ layout.label(text='Please review the settings above')
+ layout.label(text='If everything is in order, click Check Scene again')
+ layout.label(text='The script automatically changes settings, so make sure they are correct')
+ else:
+ layout.label(text='The script reports "Good to go!"', icon='FILE_TICK')
+ layout.label(text='To make sure that all works, please run a test render first')
class RENDERFARM_MT_Session(bpy.types.Menu):
bl_label = "Show Session"
@@ -244,23 +334,22 @@ class SESSIONS_PT_RenderfarmFi(RenderButtonsPanel, bpy.types.Panel):
class RENDER_PT_RenderfarmFi(RenderButtonsPanel, bpy.types.Panel):
bl_label = "Scene Settings"
COMPAT_ENGINES = set(['RENDERFARMFI_RENDER'])
-
+
@classmethod
def poll(cls, context):
rd = context.scene.render
return (rd.use_game_engine==False) and (rd.engine in cls.COMPAT_ENGINES)
-
+
def draw(self, context):
layout = self.layout
sce = context.scene
ore = sce.ore_render
-
+
if ore.prepared and ore.hash!='':
layout.prop(ore, 'memusage')
layout.separator()
row = layout.row()
- row.label(text='Resolution: '+str(ore.resox)+'x'+str(ore.resoy))
layout.separator()
row = layout.row()
@@ -642,7 +731,7 @@ class ORE_PrepareOp(bpy.types.Operator):
def execute(self, context):
def hasSSSMaterial():
for m in bpy.data.materials:
- if m.subsurface_scattering.enabled:
+ if m.subsurface_scattering.use:
return True
return False
@@ -710,8 +799,9 @@ class ORE_PrepareOp(bpy.types.Operator):
if len(bpy.errors) > 0:
ore.prepared = False
return {'CANCELLED'}
-
+
rd = sce.render
+
print("=============================================")
rd.threads_mode = 'FIXED'
rd.threads = 1
@@ -741,6 +831,7 @@ class ORE_PrepareOp(bpy.types.Operator):
if rd.use_compositing:
if hasCompositingErrors(sce.use_nodes, sce.node_tree, ore.parts):
print("Found disallowed nodes or problematic setup")
+ rd.use_compositing = False
self.report({'WARNING'}, "Found disallowed nodes or problematic setup")
errors = True
print("Done checking the scene. Now do a test render")
@@ -781,14 +872,18 @@ class ORE_UploaderOp(bpy.types.Operator):
class ORE_UseBlenderReso(bpy.types.Operator):
bl_idname = "ore.use_scene_settings"
- bl_label = "Use Scene resolution"
+ bl_label = "Use Scene settings"
def execute(self, context):
sce = context.scene
ore = sce.ore_render
+ rd = context.scene.render
- ore.resox = sce.render.resolution_x
- ore.resoy = sce.render.resolution_y
+ ore.resox = rd.resolution_x
+ ore.resoy = rd.resolution_y
+ ore.start = sce.frame_start
+ ore.end = sce.frame_end
+ ore.fps = rd.fps
return {'FINISHED'}