From 154707492df2629faf65052ad22f77e9dc47d82b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Jun 2014 16:08:08 +1000 Subject: Netrender: enable scripts, drivers --- netrender/baking.py | 17 +++++++++++++---- netrender/repath.py | 18 +++++++++++++++--- netrender/slave.py | 16 ++++++++++++++-- netrender/thumbnail.py | 13 ++++++++++++- netrender/utils.py | 34 ++++++++++++++++++++++++++++++++-- 5 files changed, 86 insertions(+), 12 deletions(-) (limited to 'netrender') diff --git a/netrender/baking.py b/netrender/baking.py index 24d32e85..f3a759a4 100644 --- a/netrender/baking.py +++ b/netrender/baking.py @@ -21,7 +21,6 @@ import sys, subprocess, re from netrender.utils import * -BLENDER_PATH = sys.argv[0] def commandToTask(command): i = command.index("|") @@ -38,9 +37,19 @@ def bake(job, tasks): task_commands = [] for task in tasks: task_commands.extend(task) - - process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-P", __file__, "--"] + task_commands, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - + + process = subprocess.Popen( + [bpy.app.binary_path, + "-b", + "-y", + "-noaudio", + job_full_path, + "-P", __file__, + "--", + ] + task_commands, + stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + ) + return process result_pattern = re.compile("BAKE FILE\[ ([0-9]+) \]: (.*)") diff --git a/netrender/repath.py b/netrender/repath.py index e06b17c5..e39929b4 100644 --- a/netrender/repath.py +++ b/netrender/repath.py @@ -25,7 +25,6 @@ DEBUG = False from netrender.utils import * -BLENDER_PATH = sys.argv[0] def reset(job): main_file = job.files[0] @@ -60,8 +59,21 @@ def update(job): paths.append(rfile.filepath) # Only update if needed - if paths: - process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-P", __file__, "--", new_path, original_path] + paths, stdout=sys.stdout, stderr=subprocess.STDOUT) + if paths: + process = subprocess.Popen( + [bpy.app.binary_path, + "-b", + "-y", + "-noaudio", + job_full_path, + "-P", __file__, + "--", + new_path, + original_path, + ] + paths, + stdout=sys.stdout, + stderr=subprocess.STDOUT, + ) process.wait() os.renames(job_full_path, job_full_path + ".bak") diff --git a/netrender/slave.py b/netrender/slave.py index bf3819ba..40b62ddf 100644 --- a/netrender/slave.py +++ b/netrender/slave.py @@ -29,7 +29,6 @@ import netrender.repath import netrender.baking import netrender.thumbnail as thumbnail -BLENDER_PATH = sys.argv[0] CANCEL_POLL_SPEED = 2 MAX_TIMEOUT = 10 @@ -225,7 +224,20 @@ def render_slave(engine, netsettings, threads): frame_args += ["-f", str(frame.number)] with NoErrorDialogContext(): - process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-t", str(threads), "-o", os.path.join(job_prefix, "######"), "-E", job.render, "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + process = subprocess.Popen( + [bpy.app.binary_path, + "-b", + "-y", + "-noaudio", + job_full_path, + "-t", str(threads), + "-o", os.path.join(job_prefix, "######"), + "-E", job.render, + "-F", "MULTILAYER", + ] + frame_args, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) elif job.subtype == netrender.model.JOB_SUB_BAKING: tasks = [] diff --git a/netrender/thumbnail.py b/netrender/thumbnail.py index 8ac05793..4408599e 100644 --- a/netrender/thumbnail.py +++ b/netrender/thumbnail.py @@ -23,7 +23,18 @@ import bpy def generate(filename, external=True): if external: - process = subprocess.Popen([sys.argv[0],"-b", "-noaudio", "-P", __file__, "--", filename], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + process = subprocess.Popen( + [bpy.app.binary_path, + "-b", + "-y", + "-noaudio", + "-P", __file__, + "--", + filename, + ], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) while process.poll() is None: process.stdout.read(1024) # empty buffer to be sure process.stdout.read() diff --git a/netrender/utils.py b/netrender/utils.py index df3f00e4..a9c0cdeb 100644 --- a/netrender/utils.py +++ b/netrender/utils.py @@ -359,7 +359,25 @@ def getResults(server_address, server_port, job_id, resolution_x, resolution_y, filepath = os.path.join(bpy.app.tempdir, "netrender_temp.blend") bpy.ops.wm.save_as_mainfile(filepath=filepath, copy=True, check_existing=False) - arguments = [sys.argv[0], "-b", "-noaudio", filepath, "-o", bpy.path.abspath(bpy.context.scene.render.filepath), "-P", __file__] + frame_arguments + ["--", "GetResults", server_address, str(server_port), job_id, str(resolution_x), str(resolution_y), str(resolution_percentage)] + arguments = ( + [bpy.app.binary_path, + "-b", + "-y", + "-noaudio", + filepath, + "-o", bpy.path.abspath(bpy.context.scene.render.filepath), + "-P", __file__, + ] + frame_arguments + + ["--", + "GetResults", + server_address, + str(server_port), + job_id, + str(resolution_x), + str(resolution_y), + str(resolution_percentage), + ] + ) if bpy.app.debug: print("Starting subprocess:") print(" ".join(arguments)) @@ -402,7 +420,19 @@ def _getResults(server_address, server_port, job_id, resolution_x, resolution_y, def getFileInfo(filepath, infos): - process = subprocess.Popen([sys.argv[0], "-b", "-noaudio", filepath, "-P", __file__, "--", "FileInfo"] + infos, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + process = subprocess.Popen( + [bpy.app.binary_path, + "-b", + "-y", + "-noaudio", + filepath, + "-P", __file__, + "--", + "FileInfo", + ] + infos, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) stdout = bytes() while process.poll() is None: stdout += process.stdout.read(1024) -- cgit v1.2.3