mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
Combine RenderWorker creation into RenderJob creation. Misc cleanup.
This commit is contained in:
@@ -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:'):
|
||||
|
||||
Reference in New Issue
Block a user