mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
Add UI options for aerender
This commit is contained in:
@@ -59,6 +59,15 @@ class AERender(BaseRenderEngine):
|
|||||||
# todo: create implementation
|
# todo: create implementation
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
def ui_options(self, project_info):
|
||||||
|
from src.engines.aerender.aerender_ui import AERenderUI
|
||||||
|
return AERenderUI.get_options(self, project_info)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def worker_class(cls):
|
||||||
|
from src.engines.aerender.aerender_worker import AERenderWorker
|
||||||
|
return AERenderWorker
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
x = AERender().get_project_info('/Users/brett/ae_testing/project.aepx')
|
x = AERender().get_project_info('/Users/brett/ae_testing/project.aepx')
|
||||||
|
|||||||
8
src/engines/aerender/aerender_ui.py
Normal file
8
src/engines/aerender/aerender_ui.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
class AERenderUI:
|
||||||
|
@staticmethod
|
||||||
|
def get_options(instance, project_info):
|
||||||
|
options = [
|
||||||
|
{'name': 'comp', 'options': project_info.get('comp_names', [])}
|
||||||
|
]
|
||||||
|
return options
|
||||||
@@ -71,7 +71,7 @@ class AERenderWorker(BaseRenderWorker):
|
|||||||
self.total_frames = timecode_to_frames(duration_string.split('Duration:')[-1], float(frame_rate))
|
self.total_frames = timecode_to_frames(duration_string.split('Duration:')[-1], float(frame_rate))
|
||||||
|
|
||||||
match = re.match(r'PROGRESS:.*\((?P<frame>\d+)\): (?P<time>\d+)', line).groupdict()
|
match = re.match(r'PROGRESS:.*\((?P<frame>\d+)\): (?P<time>\d+)', line).groupdict()
|
||||||
self.last_frame = match['frame']
|
self.current_frame = match['frame']
|
||||||
|
|
||||||
def average_frame_duration(self):
|
def average_frame_duration(self):
|
||||||
|
|
||||||
@@ -82,12 +82,12 @@ class AERenderWorker(BaseRenderWorker):
|
|||||||
if match:
|
if match:
|
||||||
total_durations += int(match.group(2))
|
total_durations += int(match.group(2))
|
||||||
|
|
||||||
average = float(total_durations) / self.last_frame
|
average = float(total_durations) / self.current_frame
|
||||||
return average
|
return average
|
||||||
|
|
||||||
def percent_complete(self):
|
def percent_complete(self):
|
||||||
if self.total_frames:
|
if self.total_frames:
|
||||||
return (float(self.last_frame) / float(self.total_frames)) * 100
|
return (float(self.current_frame) / float(self.total_frames)) * 100
|
||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|||||||
@@ -18,12 +18,12 @@ class Blender(BaseRenderEngine):
|
|||||||
from src.engines.blender.blender_downloader import BlenderDownloader
|
from src.engines.blender.blender_downloader import BlenderDownloader
|
||||||
return BlenderDownloader
|
return BlenderDownloader
|
||||||
|
|
||||||
@staticmethod
|
@classmethod
|
||||||
def worker_class():
|
def worker_class(cls):
|
||||||
from src.engines.blender.blender_worker import BlenderRenderWorker
|
from src.engines.blender.blender_worker import BlenderRenderWorker
|
||||||
return BlenderRenderWorker
|
return BlenderRenderWorker
|
||||||
|
|
||||||
def ui_options(self):
|
def ui_options(self, project_info):
|
||||||
from src.engines.blender.blender_ui import BlenderUI
|
from src.engines.blender.blender_ui import BlenderUI
|
||||||
return BlenderUI.get_options(self)
|
return BlenderUI.get_options(self)
|
||||||
|
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ for cam_obj in bpy.data.cameras:
|
|||||||
|
|
||||||
data = {'cameras': cameras,
|
data = {'cameras': cameras,
|
||||||
'engine': scene.render.engine,
|
'engine': scene.render.engine,
|
||||||
'frame_start': scene.frame_start,
|
'start_frame': scene.frame_start,
|
||||||
'frame_end': scene.frame_end,
|
'end_frame': scene.frame_end,
|
||||||
'resolution_x': scene.render.resolution_x,
|
'resolution_x': scene.render.resolution_x,
|
||||||
'resolution_y': scene.render.resolution_y,
|
'resolution_y': scene.render.resolution_y,
|
||||||
'resolution_percentage': scene.render.resolution_percentage,
|
'resolution_percentage': scene.render.resolution_percentage,
|
||||||
|
|||||||
@@ -47,11 +47,11 @@ class BaseRenderEngine(object):
|
|||||||
def downloader(): # override when subclassing if using a downloader class
|
def downloader(): # override when subclassing if using a downloader class
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@staticmethod
|
@classmethod
|
||||||
def worker_class(): # override when subclassing to link worker class
|
def worker_class(cls): # override when subclassing to link worker class
|
||||||
raise NotImplementedError("Worker class not implemented")
|
raise NotImplementedError(f"Worker class not implemented for engine {cls.name()}")
|
||||||
|
|
||||||
def ui_options(self): # override to return options for ui
|
def ui_options(self, project_info): # override to return options for ui
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
def get_help(self): # override if renderer uses different help flag
|
def get_help(self): # override if renderer uses different help flag
|
||||||
|
|||||||
@@ -12,14 +12,14 @@ class FFMPEG(BaseRenderEngine):
|
|||||||
from src.engines.ffmpeg.ffmpeg_downloader import FFMPEGDownloader
|
from src.engines.ffmpeg.ffmpeg_downloader import FFMPEGDownloader
|
||||||
return FFMPEGDownloader
|
return FFMPEGDownloader
|
||||||
|
|
||||||
@staticmethod
|
@classmethod
|
||||||
def worker_class():
|
def worker_class(cls):
|
||||||
from src.engines.ffmpeg.ffmpeg_worker import FFMPEGRenderWorker
|
from src.engines.ffmpeg.ffmpeg_worker import FFMPEGRenderWorker
|
||||||
return FFMPEGRenderWorker
|
return FFMPEGRenderWorker
|
||||||
|
|
||||||
def ui_options(self):
|
def ui_options(self, project_info):
|
||||||
from src.engines.ffmpeg.ffmpeg_ui import FFMPEGUI
|
from src.engines.ffmpeg.ffmpeg_ui import FFMPEGUI
|
||||||
return FFMPEGUI.get_options(self)
|
return FFMPEGUI.get_options(self, project_info)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def supported_extensions(cls):
|
def supported_extensions(cls):
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
class FFMPEGUI:
|
class FFMPEGUI:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_options(instance):
|
def get_options(instance, project_info):
|
||||||
options = []
|
options = []
|
||||||
return options
|
return options
|
||||||
|
|||||||
@@ -350,7 +350,7 @@ class NewRenderJobForm(QWidget):
|
|||||||
# Dynamic Engine Options
|
# Dynamic Engine Options
|
||||||
clear_layout(self.renderer_options_layout) # clear old options
|
clear_layout(self.renderer_options_layout) # clear old options
|
||||||
# dynamically populate option list
|
# dynamically populate option list
|
||||||
self.current_engine_options = engine().ui_options()
|
self.current_engine_options = engine().ui_options(self.project_info)
|
||||||
for option in self.current_engine_options:
|
for option in self.current_engine_options:
|
||||||
h_layout = QHBoxLayout()
|
h_layout = QHBoxLayout()
|
||||||
label = QLabel(option['name'].replace('_', ' ').capitalize() + ':')
|
label = QLabel(option['name'].replace('_', ' ').capitalize() + ':')
|
||||||
|
|||||||
Reference in New Issue
Block a user