mirror of
https://github.com/blw1138/Zordon.git
synced 2026-02-05 05:36:09 +00:00
Cleanup Blender job creation
This commit is contained in:
@@ -117,7 +117,7 @@ class Blender(BaseRenderEngine):
|
|||||||
# report any missing textures
|
# report any missing textures
|
||||||
not_found = re.findall("(Unable to pack file, source path .*)\n", result_text)
|
not_found = re.findall("(Unable to pack file, source path .*)\n", result_text)
|
||||||
for err in not_found:
|
for err in not_found:
|
||||||
logger.error(err)
|
raise ChildProcessError(err)
|
||||||
|
|
||||||
p = re.compile('Saved to: (.*)\n')
|
p = re.compile('Saved to: (.*)\n')
|
||||||
match = p.search(result_text)
|
match = p.search(result_text)
|
||||||
@@ -125,6 +125,7 @@ class Blender(BaseRenderEngine):
|
|||||||
new_path = os.path.join(dir_name, match.group(1).strip())
|
new_path = os.path.join(dir_name, match.group(1).strip())
|
||||||
logger.info(f'Blender file packed successfully to {new_path}')
|
logger.info(f'Blender file packed successfully to {new_path}')
|
||||||
return new_path
|
return new_path
|
||||||
|
return project_path
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
msg = f'Error packing .blend file: {e}'
|
msg = f'Error packing .blend file: {e}'
|
||||||
logger.error(msg)
|
logger.error(msg)
|
||||||
|
|||||||
@@ -18,14 +18,13 @@ class BlenderRenderWorker(BaseRenderWorker):
|
|||||||
self.__frame_percent_complete = 0.0
|
self.__frame_percent_complete = 0.0
|
||||||
|
|
||||||
# Scene Info
|
# Scene Info
|
||||||
self.scene_info = Blender(engine_path).get_project_info(input_path)
|
self.scene_info = {}
|
||||||
self.start_frame = int(self.scene_info.get('start_frame', 1))
|
|
||||||
self.end_frame = int(self.scene_info.get('end_frame', self.start_frame))
|
|
||||||
self.project_length = (self.end_frame - self.start_frame) + 1
|
|
||||||
self.current_frame = -1
|
self.current_frame = -1
|
||||||
|
|
||||||
def generate_worker_subprocess(self):
|
def generate_worker_subprocess(self):
|
||||||
|
|
||||||
|
self.scene_info = Blender(self.engine_path).get_project_info(self.input_path)
|
||||||
|
|
||||||
cmd = [self.engine_path]
|
cmd = [self.engine_path]
|
||||||
if self.args.get('background', True): # optionally run render not in background
|
if self.args.get('background', True): # optionally run render not in background
|
||||||
cmd.append('-b')
|
cmd.append('-b')
|
||||||
@@ -85,11 +84,15 @@ class BlenderRenderWorker(BaseRenderWorker):
|
|||||||
|
|
||||||
def _parse_stdout(self, line):
|
def _parse_stdout(self, line):
|
||||||
|
|
||||||
pattern = re.compile(
|
cycles_pattern = re.compile(
|
||||||
r'Fra:(?P<frame>\d*).*Mem:(?P<memory>\S+).*Time:(?P<time>\S+)(?:.*Remaining:)?(?P<remaining>\S*)')
|
r'Fra:(?P<frame>\d*).*Mem:(?P<memory>\S+).*Time:(?P<time>\S+)(?:.*Remaining:)?(?P<remaining>\S*)')
|
||||||
found = pattern.search(line)
|
cycles_match = cycles_pattern.search(line)
|
||||||
if found:
|
eevee_pattern = re.compile(
|
||||||
stats = found.groupdict()
|
r"Rendering\s+(?P<current>\d+)\s*/\s*(?P<total>\d+)\s+samples"
|
||||||
|
)
|
||||||
|
eevee_match = eevee_pattern.search(line)
|
||||||
|
if cycles_match:
|
||||||
|
stats = cycles_match.groupdict()
|
||||||
memory_use = stats['memory']
|
memory_use = stats['memory']
|
||||||
time_elapsed = stats['time']
|
time_elapsed = stats['time']
|
||||||
time_remaining = stats['remaining'] or 'Unknown'
|
time_remaining = stats['remaining'] or 'Unknown'
|
||||||
@@ -104,6 +107,11 @@ class BlenderRenderWorker(BaseRenderWorker):
|
|||||||
logger.debug(
|
logger.debug(
|
||||||
'Frame:{0} | Mem:{1} | Time:{2} | Remaining:{3}'.format(self.current_frame, memory_use,
|
'Frame:{0} | Mem:{1} | Time:{2} | Remaining:{3}'.format(self.current_frame, memory_use,
|
||||||
time_elapsed, time_remaining))
|
time_elapsed, time_remaining))
|
||||||
|
elif eevee_match:
|
||||||
|
self.__frame_percent_complete = int(eevee_match.groups()[0]) / int(eevee_match.groups()[1])
|
||||||
|
logger.debug(f'Frame:{self.current_frame} | Samples:{eevee_match.groups()[0]}/{eevee_match.groups()[1]}')
|
||||||
|
elif "Rendering frame" in line: # used for eevee
|
||||||
|
self.current_frame = int(line.split("Rendering frame")[-1].strip())
|
||||||
elif "file doesn't exist" in line.lower():
|
elif "file doesn't exist" in line.lower():
|
||||||
self.log_error(line, halt_render=True)
|
self.log_error(line, halt_render=True)
|
||||||
elif line.lower().startswith('error'):
|
elif line.lower().startswith('error'):
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ class BaseRenderWorker(Base):
|
|||||||
engine_version = Column(String)
|
engine_version = Column(String)
|
||||||
engine_path = Column(String)
|
engine_path = Column(String)
|
||||||
priority = Column(Integer)
|
priority = Column(Integer)
|
||||||
project_length = Column(Integer)
|
|
||||||
start_frame = Column(Integer)
|
start_frame = Column(Integer)
|
||||||
end_frame = Column(Integer, nullable=True)
|
end_frame = Column(Integer, nullable=True)
|
||||||
parent = Column(String, nullable=True)
|
parent = Column(String, nullable=True)
|
||||||
@@ -83,7 +82,6 @@ class BaseRenderWorker(Base):
|
|||||||
self.maximum_attempts = 3
|
self.maximum_attempts = 3
|
||||||
|
|
||||||
# Frame Ranges
|
# Frame Ranges
|
||||||
self.project_length = 0 # is this necessary?
|
|
||||||
self.current_frame = 0
|
self.current_frame = 0
|
||||||
self.start_frame = 0
|
self.start_frame = 0
|
||||||
self.end_frame = None
|
self.end_frame = None
|
||||||
@@ -154,7 +152,7 @@ class BaseRenderWorker(Base):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def total_frames(self):
|
def total_frames(self):
|
||||||
return (self.end_frame or self.project_length) - self.start_frame + 1
|
return max(self.end_frame, 1) - self.start_frame + 1
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def status(self):
|
def status(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user