[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [818] trunk/py/scripts/addons/ io_renderfarmfi.py: Add renderfarm.fi render engine.

Nathan Letwory nathan at letworyinteractive.com
Tue Jul 20 22:06:14 CEST 2010


Revision: 818
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=818
Author:   jesterking
Date:     2010-07-20 22:06:13 +0200 (Tue, 20 Jul 2010)

Log Message:
-----------
Add renderfarm.fi render engine.

Added Paths:
-----------
    trunk/py/scripts/addons/io_renderfarmfi.py

Added: trunk/py/scripts/addons/io_renderfarmfi.py
===================================================================
--- trunk/py/scripts/addons/io_renderfarmfi.py	                        (rev 0)
+++ trunk/py/scripts/addons/io_renderfarmfi.py	2010-07-20 20:06:13 UTC (rev 818)
@@ -0,0 +1,797 @@
+# ##### 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
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+#
+# Copyright 2009-2010 Laurea University of Applied Sciences
+# Authors: Nathan Letwory, Jesse Kaukonen
+
+import bpy
+import hashlib
+import http.client
+import xmlrpc.client
+import math
+from os.path import abspath, isabs, join, isfile
+
+bpy.CURRENT_VERSION = 2
+bpy.found_newer_version = False
+bpy.up_to_date = False
+bpy.download_location = 'http://www.renderfarm.fi/blender'
+
+bl_addon_info = {
+    'name': 'Render: Renderfarm.fi',
+    'author': 'Nathan Letwory <nathan at letworyinteractive.com>, Jesse Kaukonen <jesse.kaukonen at gmail.com>',
+    'version': str(bpy.CURRENT_VERSION),
+    'blender': (2, 5, 3),
+    'location': 'Render > Engine > Renderfarm.fi',
+    'description': 'Send .blend as session to http://www.renderfarm.fi to render',
+    'warning': '', # used for warning icon and text in addons panel
+    'wiki_url': 'http://www.renderfarm.fi',
+    'tracker_url': 'http://www.renderfarm.fi',
+    'category': 'Render Engine'}
+
+bpy.errorMessages = {
+    'missing_desc': 'You need to enter a title, short and long description',
+    'missing_creds': 'You haven\'t entered your credentials yet'
+}
+
+bpy.statusMessage = {
+    'title': 'TRIA_RIGHT',
+    'shortdesc': 'TRIA_RIGHT',
+    'longdesc': 'TRIA_RIGHT',
+    'username': 'TRIA_RIGHT',
+    'password': 'TRIA_RIGHT'
+}
+
+bpy.errors = []
+bpy.ore_sessions = []
+bpy.queue_selected = -1
+
+def rnaType(rna_type):
+	bpy.types.register(rna_type)
+	return rna_type
+
+def renderEngine(render_engine):
+    bpy.types.register(render_engine)
+    return render_engine
+
+ at rnaType
+class ORESession(bpy.types.IDPropertyGroup):
+    pass
+
+ at rnaType
+class ORESettings(bpy.types.IDPropertyGroup):
+    pass
+
+# entry point for settings collection
+bpy.types.Scene.PointerProperty(attr='ore_render', type=ORESettings, name='ORE Render', description='ORE Render Settings')
+
+# fill the new struct
+ORESettings.StringProperty(attr='username', name='E-mail', description='E-mail for Renderfarm.fi', maxlen=256, default='')
+ORESettings.StringProperty(attr='password', name='Password', description='Renderfarm.fi password', maxlen=256, default='')
+ORESettings.StringProperty(attr='hash', name='Hash', description='hash calculated out of credentials', maxlen=33, default='')
+
+ORESettings.StringProperty(attr='shortdesc', name='Short description', description='A short description of the scene (100 characters)', maxlen=101, default='')
+ORESettings.StringProperty(attr='longdesc', name='Long description', description='A more elaborate description of the scene (2k)', maxlen=2048, default='')
+ORESettings.StringProperty(attr='title', name='Title', description='Title for this session (128 characters)', maxlen=128, default='')
+ORESettings.StringProperty(attr='url', name='Project URL', description='Project URL. Leave empty if not applicable', maxlen=256, default='')
+
+ORESettings.IntProperty(attr='parts', name='Parts/Frame', description='', min=1, max=1000, soft_min=1, soft_max=64, default=1)
+ORESettings.IntProperty(attr='resox', name='Resolution X', description='X of render', min=1, max=10000, soft_min=1, soft_max=10000, default=1920)
+ORESettings.IntProperty(attr='resoy', name='Resolution Y', description='Y of render', min=1, max=10000, soft_min=1, soft_max=10000, default=1080)
+ORESettings.IntProperty(attr='memusage', name='Memory Usage', description='Estimated maximum memory usage during rendering in MB', min=1, max=6*1024, soft_min=1, soft_max=3*1024, default=256)
+ORESettings.IntProperty(attr='start', name='Start Frame', description='Start Frame', default=1)
+ORESettings.IntProperty(attr='end', name='End Frame', description='End Frame', default=250)
+ORESettings.IntProperty(attr='fps', name='FPS', description='FPS', min=1, max=256, default=25)
+
+ORESettings.BoolProperty(attr='prepared', name='Prepared', description='Set to True if preparation has been run', default=False)
+ORESettings.BoolProperty(attr='debug', name='Debug', description='Verbose output in console', default=False)
+ORESettings.IntProperty(attr='selected_session', name='Selected Session', description='The selected session', default=0)
+
+# session struct
+ORESession.StringProperty(attr='name', name='Name', description='Name of the session', maxlen=128, default='[session]')
+
+licenses =  (
+        ('1', 'CC by-nc-nd', 'Creative Commons: Attribution Non-Commercial No Derivatives'),
+        ('2', 'CC by-nc-sa', 'Creative Commons: Attribution Non-Commercial Share Alike'),
+        ('3', 'CC by-nd', 'Creative Commons: Attribution No Derivatives'),
+        ('4', 'CC by-nc', 'Creative Commons: Attribution Non-Commercial'),
+        ('5', 'CC by-sa', 'Creative Commons: Attribution Share Alike'),
+        ('6', 'CC by', 'Creative Commons: Attribution'),
+        ('7', 'Copyright', 'Copyright, no license specified'),
+        )
+ORESettings.EnumProperty(attr='inlicense', items=licenses, name='source license', description='license speficied for the source files', default='1')
+ORESettings.EnumProperty(attr='outlicense', items=licenses, name='output license', description='license speficied for the output files', default='1')
+
+ORESettings.CollectionProperty(attr='sessions', type=ORESession, name='Sessions', description='Sessions on Renderfarm.fi')
+        
+# all panels, except render panel
+# Example of wrapping every class 'as is'
+import properties_scene
+for member in dir(properties_scene):
+    subclass = getattr(properties_scene, member)
+    try:        subclass.COMPAT_ENGINES.add('RENDERFARMFI_RENDER')
+    except:    pass
+del properties_scene
+
+import properties_world
+for member in dir(properties_world):
+    subclass = getattr(properties_world, member)
+    try:        subclass.COMPAT_ENGINES.add('RENDERFARMFI_RENDER')
+    except:    pass
+del properties_world
+
+import properties_material
+for member in dir(properties_material):
+    subclass = getattr(properties_material, member)
+    try:        subclass.COMPAT_ENGINES.add('RENDERFARMFI_RENDER')
+    except:    pass
+del properties_material
+
+import properties_object
+for member in dir(properties_object):
+    subclass = getattr(properties_object, member)
+    try:        subclass.COMPAT_ENGINES.add('RENDERFARMFI_RENDER')
+    except:    pass
+del properties_object
+
+class RenderButtonsPanel(bpy.types.Panel):
+    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
+    
+    def poll(self, context):
+        rd = context.scene.render
+        return (rd.use_game_engine==False) and (rd.engine in self.COMPAT_ENGINES)
+
+class RENDERFARM_MT_Session(bpy.types.Menu):
+    bl_label = "Show Session"
+
+    def draw(self, context):
+        layout = self.layout
+
+        layout.operator('ore.completed_sessions')
+        layout.operator('ore.accept_sessions')
+        layout.operator('ore.active_sessions')
+        layout.separator()
+        layout.operator('ore.cancelled_sessions')
+
+class LOGIN_PT_RenderfarmFi(RenderButtonsPanel):
+    bl_label = 'Login to Renderfarm.fi'
+    COMPAT_ENGINES = set(['RENDERFARMFI_RENDER'])
+    def draw(self, context):
+        layout = self.layout
+        # XXX layout.operator('ore.check_update')
+        ore = context.scene.ore_render
+        updateSessionList(ore)
+        checkStatus(ore)
+
+        if ore.hash=='':
+            col = layout.column()
+            if ore.hash=='':
+                col.prop(ore, 'username', icon=bpy.statusMessage['username'])
+                col.prop(ore, 'password', icon=bpy.statusMessage['password'])
+            layout.operator('ore.login')
+        else:
+            layout.label(text='E-mail and password entered.', icon='INFO')
+            layout.operator('ore.change_user')
+
+class CHECK_PT_RenderfarmFi(RenderButtonsPanel):
+    bl_label = 'Check for updates'
+    COMPAT_ENGINES = set(['RENDERFARMFI_RENDER'])
+
+    def draw(self, context):
+        layout = self.layout
+        ore = context.scene.ore_render
+
+        if bpy.found_newer_version == True:
+            layout.operator('ore.open_download_location')
+        else:
+            if bpy.up_to_date == True:
+                layout.label(text='You have the latest version')
+            layout.operator('ore.check_update')
+
+class SESSIONS_PT_RenderfarmFi(RenderButtonsPanel):
+    bl_label = 'Sessions'
+    COMPAT_ENGINES = set(['RENDERFARMFI_RENDER'])
+
+    def draw(self, context):
+        layout = self.layout
+        ore = context.scene.ore_render
+        
+        layout.menu("RENDERFARM_MT_Session")
+        if bpy.queue_selected == 1:
+            layout.label(text='Completed Sessions')
+        elif bpy.queue_selected == 2:
+            layout.label(text='Rendering Sessions')
+        elif bpy.queue_selected == 3:
+            layout.label(text='Pending Sessions')
+        elif bpy.queue_selected == 4:
+            layout.label(text='Cancelled and Rejected Sessions')
+        layout.template_list(ore, 'sessions', ore, 'selected_session', rows=2)
+        if bpy.queue_selected == 3:
+            layout.operator('ore.cancel_session')
+
+class RENDER_PT_RenderfarmFi(RenderButtonsPanel):
+    bl_label = "Scene Settings"
+    COMPAT_ENGINES = set(['RENDERFARMFI_RENDER'])
+
+    def draw(self, context):
+        layout = self.layout

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list