Combine RenderWorker creation into RenderJob creation. Misc cleanup.

This commit is contained in:
Brett Williams
2022-10-28 09:58:32 -07:00
parent 39d6e95e9a
commit 37f91c6f8a
10 changed files with 108 additions and 396 deletions

View File

@@ -17,20 +17,26 @@ class BlenderRenderWorker(BaseRenderWorker):
super(BlenderRenderWorker, self).__init__(input_path=input_path, output_path=output_path,
ignore_extensions=False, args=args)
# Args
self.engine = self.args.get('engine', 'BLENDER_EEVEE').upper()
self.export_format = self.args.get('export_format', None) or 'JPEG'
self.camera = self.args.get('camera', None)
self.frame = 0
self.render_all_frames = self.args.get('render_all_frames', False)
self.frame = 0 #todo: remove this attribute
# Stats
self.current_frame = -1
self.memory_use = None
self.time_elapsed = None
self.time_remaining = None
self.frame_percent_complete = 0.0
# Scene Info
self.scene_info = get_scene_info(input_path)
self.total_frames = int(self.scene_info.get('frame_end', 0))
self.current_frame = int(self.scene_info.get('frame_start', 0))
self.resolution = {'x': int(self.scene_info.get('resolution_x', 0)),
'y': int(self.scene_info.get('resolution_y', 0))}
@classmethod
def version(cls):
version = None
@@ -111,8 +117,10 @@ class BlenderRenderWorker(BaseRenderWorker):
if self.total_frames <= 1:
return self.frame_percent_complete
else:
return (self.current_frame / self.total_frames) + \
(self.frame_percent_complete * (self.current_frame / self.total_frames))
whole_frame_percent = (self.current_frame - 1) / self.total_frames
adjusted_frame_percent = self.frame_percent_complete / self.total_frames
total_percent = whole_frame_percent + adjusted_frame_percent
return max(total_percent, 0)
def run_python_expression_in_blend(path, python_expression):
@@ -141,7 +149,10 @@ def run_python_script_in_blend(path, python_path):
def pack_blender_files(path):
# Credit to L0Lock for pack script - https://blender.stackexchange.com/a/243935
pack_script = "import bpy\nbpy.ops.file.pack_all()\nmyPath = bpy.data.filepath\nmyPath = str(myPath)\n" \
pack_script = "import bpy\n" \
"bpy.ops.file.pack_all()\n" \
"myPath = bpy.data.filepath\n" \
"myPath = str(myPath)\n" \
"bpy.ops.wm.save_as_mainfile(filepath=myPath[:-6]+'_packed'+myPath[-6:])"
try:
@@ -171,7 +182,7 @@ def get_scene_info(path):
scene_info = None
try:
results = run_python_script_in_blend(path, os.path.join(os.path.dirname(os.path.realpath(__file__)),
'get_blender_info.py'))
'scripts', 'get_blender_info.py'))
result_text = results.stdout.decode()
for line in result_text.splitlines():
if line.startswith('SCENE_DATA:'):