Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/io')
-rw-r--r--release/scripts/io/export_fbx.py16
-rw-r--r--release/scripts/io/export_mdd.py2
-rw-r--r--release/scripts/io/netrender/balancing.py10
-rw-r--r--release/scripts/io/netrender/client.py1
-rw-r--r--release/scripts/io/netrender/master.py20
-rw-r--r--release/scripts/io/netrender/master_html.py2
-rw-r--r--release/scripts/io/netrender/model.py21
-rw-r--r--release/scripts/io/netrender/ui.py29
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",