diff options
Diffstat (limited to 'release/scripts/io')
-rw-r--r-- | release/scripts/io/export_fbx.py | 16 | ||||
-rw-r--r-- | release/scripts/io/export_mdd.py | 2 | ||||
-rw-r--r-- | release/scripts/io/netrender/balancing.py | 10 | ||||
-rw-r--r-- | release/scripts/io/netrender/client.py | 1 | ||||
-rw-r--r-- | release/scripts/io/netrender/master.py | 20 | ||||
-rw-r--r-- | release/scripts/io/netrender/master_html.py | 2 | ||||
-rw-r--r-- | release/scripts/io/netrender/model.py | 21 | ||||
-rw-r--r-- | release/scripts/io/netrender/ui.py | 29 |
8 files changed, 65 insertions, 36 deletions
diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index c821e1d4fad..6fa81fb41ce 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -3363,10 +3363,10 @@ class ExportFBX(bpy.types.Operator): EXP_OBS_SELECTED = BoolProperty(name="Selected Objects", description="Export selected objects on visible layers", default=True) # EXP_OBS_SCENE = BoolProperty(name="Scene Objects", description="Export all objects in this scene", default=True) - _SCALE = FloatProperty(name="Scale", description="Scale all data, (Note! some imports dont support scaled armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0) - _XROT90 = BoolProperty(name="Rot X90", description="Rotate all objects 90 degrese about the X axis", default=True) - _YROT90 = BoolProperty(name="Rot Y90", description="Rotate all objects 90 degrese about the Y axis", default=False) - _ZROT90 = BoolProperty(name="Rot Z90", description="Rotate all objects 90 degrese about the Z axis", default=False) + TX_SCALE = FloatProperty(name="Scale", description="Scale all data, (Note! some imports dont support scaled armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0) + TX_XROT90 = BoolProperty(name="Rot X90", description="Rotate all objects 90 degrese about the X axis", default=True) + TX_YROT90 = BoolProperty(name="Rot Y90", description="Rotate all objects 90 degrese about the Y axis", default=False) + TX_ZROT90 = BoolProperty(name="Rot Z90", description="Rotate all objects 90 degrese about the Z axis", default=False) EXP_EMPTY = BoolProperty(name="Empties", description="Export empty objects", default=True) EXP_CAMERA = BoolProperty(name="Cameras", description="Export camera objects", default=True) EXP_LAMP = BoolProperty(name="Lamps", description="Export lamp objects", default=True) @@ -3397,10 +3397,10 @@ class ExportFBX(bpy.types.Operator): raise Exception("path not set") GLOBAL_MATRIX = mtx4_identity - GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] = self.properties._SCALE - if self.properties._XROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_x90n - if self.properties._YROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_y90n - if self.properties._ZROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_z90n + GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] = self.properties.TX_SCALE + if self.properties.TX_XROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_x90n + if self.properties.TX_YROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_y90n + if self.properties.TX_ZROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_z90n write(self.properties.path, None, # XXX diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index c160b94e546..9753a63ce48 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -163,7 +163,7 @@ class ExportMDD(bpy.types.Operator): # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for exporting the MDD file", maxlen= 1024, default= "tmp.mdd") + path = StringProperty(name="File Path", description="File path used for exporting the MDD file", maxlen= 1024, default= "") fps = IntProperty(name="Frames Per Second", description="Number of frames/second", min=minfps, max=maxfps, default= 25) start_frame = IntProperty(name="Start Frame", description="Start frame for baking", min=minframe,max=maxframe,default=1) end_frame = IntProperty(name="End Frame", description="End frame for baking", min=minframe, max=maxframe, default= 250) diff --git a/release/scripts/io/netrender/balancing.py b/release/scripts/io/netrender/balancing.py index f093815d8a8..aa0ffcd3f67 100644 --- a/release/scripts/io/netrender/balancing.py +++ b/release/scripts/io/netrender/balancing.py @@ -84,6 +84,16 @@ class RatingUsage(RatingRule): # less usage is better return job.usage / job.priority +class RatingUsageByCategory(RatingRule): + def __init__(self, get_jobs): + self.getJobs = get_jobs + def rate(self, job): + total_category_usage = sum([j.usage for j in self.getJobs() if j.category == job.category]) + maximum_priority = max([j.priority for j in self.getJobs() if j.category == job.category]) + + # less usage is better + return total_category_usage / maximum_priority + class NewJobPriority(PriorityRule): def __init__(self, limit = 1): self.limit = limit diff --git a/release/scripts/io/netrender/client.py b/release/scripts/io/netrender/client.py index f39beadfe57..829d75b6c67 100644 --- a/release/scripts/io/netrender/client.py +++ b/release/scripts/io/netrender/client.py @@ -150,6 +150,7 @@ def clientSendJob(conn, scene, anim = False): # print(job.files) job.name = job_name + job.category = netsettings.job_category for slave in netrender.blacklist: job.blacklist.append(slave.id) diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index 7abca023e50..504430a7e0c 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -60,17 +60,9 @@ class MRenderSlave(netrender.model.RenderSlave): self.job = None class MRenderJob(netrender.model.RenderJob): - def __init__(self, job_id, job_type, name, files, chunks = 1, priority = 1, blacklist = []): - super().__init__() + def __init__(self, job_id, job_info): + super().__init__(job_info) self.id = job_id - self.type = job_type - self.name = name - self.files = files - self.frames = [] - self.chunks = chunks - self.priority = priority - self.usage = 0.0 - self.blacklist = blacklist self.last_dispatched = time.time() # force one chunk for process jobs @@ -80,7 +72,7 @@ class MRenderJob(netrender.model.RenderJob): # special server properties self.last_update = 0 self.save_path = "" - self.files_map = {path: MRenderFile(path, start, end) for path, start, end in files} + self.files_map = {path: MRenderFile(path, start, end) for path, start, end in job_info.files} self.status = JOB_WAITING def save(self): @@ -393,7 +385,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): job_id = self.server.nextJobID() - job = MRenderJob(job_id, job_info.type, job_info.name, job_info.files, chunks = job_info.chunks, priority = job_info.priority, blacklist = job_info.blacklist) + job = MRenderJob(job_id, job_info) for frame in job_info.frames: frame = job.addFrame(frame.number, frame.command) @@ -635,6 +627,7 @@ class RenderMasterServer(http.server.HTTPServer): self.slave_timeout = 2 self.balancer = netrender.balancing.Balancer() + self.balancer.addRule(netrender.balancing.RatingUsageByCategory(self.getJobs)) self.balancer.addRule(netrender.balancing.RatingUsage()) self.balancer.addException(netrender.balancing.ExcludeQueuedEmptyJob()) self.balancer.addException(netrender.balancing.ExcludeSlavesLimit(self.countJobs, self.countSlaves, limit = 0.9)) @@ -707,6 +700,9 @@ class RenderMasterServer(http.server.HTTPServer): def balance(self): self.balancer.balance(self.jobs) + def getJobs(self): + return self.jobs + def countJobs(self, status = JOB_QUEUED): total = 0 for j in self.jobs: diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index 2fc6cd66f93..c94d1e2f72d 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -71,6 +71,7 @@ def get(handler): startTable() headerTable( "name", + "category", "priority", "usage", "wait", @@ -88,6 +89,7 @@ def get(handler): results = job.framesStatus() rowTable( link(job.name, "/html/job" + job.id), + job.category, job.priority, "%0.1f%%" % (job.usage * 100), "%is" % int(time.time() - job.last_dispatched), diff --git a/release/scripts/io/netrender/model.py b/release/scripts/io/netrender/model.py index cf13fe1e1fa..7d0fff5a83a 100644 --- a/release/scripts/io/netrender/model.py +++ b/release/scripts/io/netrender/model.py @@ -99,18 +99,29 @@ JOB_TYPES = { } class RenderJob: - def __init__(self): + def __init__(self, job_info = None): self.id = "" self.type = JOB_BLENDER self.name = "" + self.category = "None" self.files = [] - self.frames = [] self.chunks = 0 self.priority = 0 - self.usage = 0.0 self.blacklist = [] + + self.usage = 0.0 self.last_dispatched = 0.0 - + self.frames = [] + + if job_info: + self.type = job_info.type + self.name = job_info.name + self.category = job_info.category + self.files = job_info.files + self.chunks = job_info.chunks + self.priority = job_info.priority + self.blacklist = job_info.blacklist + def addFile(self, file_path, start=-1, end=-1): self.files.append((file_path, start, end)) @@ -167,6 +178,7 @@ class RenderJob: "id": self.id, "type": self.type, "name": self.name, + "category": self.category, "files": [f for f in self.files if f[1] == -1 or not frames or (f[1] <= max_frame and f[2] >= min_frame)], "frames": [f.serialize() for f in self.frames if not frames or f in frames], "chunks": self.chunks, @@ -185,6 +197,7 @@ class RenderJob: job.id = data["id"] job.type = data["type"] job.name = data["name"] + job.category = data["category"] job.files = data["files"] job.frames = [RenderFrame.materialize(f) for f in data["frames"]] job.chunks = data["chunks"] diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py index 081d9952871..fd9ce0fcc32 100644 --- a/release/scripts/io/netrender/ui.py +++ b/release/scripts/io/netrender/ui.py @@ -71,7 +71,7 @@ class RENDER_PT_network_settings(RenderButtonsPanel): if scene.network_render.mode == "RENDER_MASTER": col.prop(scene.network_render, "server_broadcast") else: - col.operator("render.netclientscan", icon="ICON_FILE_REFRESH", text="") + col.operator("render.netclientscan", icon='FILE_REFRESH', text="") @rnaType class RENDER_PT_network_job(RenderButtonsPanel): @@ -93,10 +93,11 @@ class RENDER_PT_network_job(RenderButtonsPanel): split = layout.split() col = split.column() - col.operator("render.netclientanim", icon='ICON_RENDER_ANIMATION') - col.operator("render.netclientsend", icon="ICON_FILE_BLEND") - col.operator("render.netclientweb", icon="ICON_QUESTION") + col.operator("render.netclientanim", icon='RENDER_ANIMATION') + col.operator("render.netclientsend", icon='FILE_BLEND') + col.operator("render.netclientweb", icon='QUESTION') col.prop(scene.network_render, "job_name") + col.prop(scene.network_render, "job_category") row = col.row() row.prop(scene.network_render, "priority") row.prop(scene.network_render, "chunks") @@ -120,8 +121,8 @@ class RENDER_PT_network_slaves(RenderButtonsPanel): row.template_list(netsettings, "slaves", netsettings, "active_slave_index", rows=2) sub = row.column(align=True) - sub.operator("render.netclientslaves", icon="ICON_FILE_REFRESH", text="") - sub.operator("render.netclientblacklistslave", icon="ICON_ZOOMOUT", text="") + sub.operator("render.netclientslaves", icon='FILE_REFRESH', text="") + sub.operator("render.netclientblacklistslave", icon='ZOOMOUT', text="") if len(netrender.slaves) == 0 and len(netsettings.slaves) > 0: while(len(netsettings.slaves) > 0): @@ -156,7 +157,7 @@ class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): row.template_list(netsettings, "slaves_blacklist", netsettings, "active_blacklisted_slave_index", rows=2) sub = row.column(align=True) - sub.operator("render.netclientwhitelistslave", icon="ICON_ZOOMOUT", text="") + sub.operator("render.netclientwhitelistslave", icon='ZOOMOUT', text="") if len(netrender.blacklist) == 0 and len(netsettings.slaves_blacklist) > 0: while(len(netsettings.slaves_blacklist) > 0): @@ -191,10 +192,10 @@ class RENDER_PT_network_jobs(RenderButtonsPanel): row.template_list(netsettings, "jobs", netsettings, "active_job_index", rows=2) sub = row.column(align=True) - sub.operator("render.netclientstatus", icon="ICON_FILE_REFRESH", text="") - sub.operator("render.netclientcancel", icon="ICON_ZOOMOUT", text="") - sub.operator("render.netclientcancelall", icon="ICON_PANEL_CLOSE", text="") - sub.operator("render.netclientdownload", icon='ICON_RENDER_ANIMATION', text="") + sub.operator("render.netclientstatus", icon='FILE_REFRESH', text="") + sub.operator("render.netclientcancel", icon='ZOOMOUT', text="") + sub.operator("render.netclientcancelall", icon='PANEL_CLOSE', text="") + sub.operator("render.netclientdownload", icon='RENDER_ANIMATION', text="") if len(netrender.jobs) == 0 and len(netsettings.jobs) > 0: while(len(netsettings.jobs) > 0): @@ -264,6 +265,12 @@ NetRenderSettings.StringProperty( attr="job_name", maxlen = 128, default = "[default]") +NetRenderSettings.StringProperty( attr="job_category", + name="Job category", + description="Category of the job", + maxlen = 128, + default = "") + NetRenderSettings.IntProperty( attr="chunks", name="Chunks", description="Number of frame to dispatch to each slave in one chunk", |