mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
RenderWorker cleanup and add camera methods to BlenderRenderWorker
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
import io
|
||||
import logging
|
||||
import os
|
||||
@@ -35,10 +36,6 @@ class BaseRenderWorker(object):
|
||||
install_paths = []
|
||||
supported_export_formats = []
|
||||
|
||||
@classmethod
|
||||
def version(cls):
|
||||
raise NotImplementedError("Unknown version")
|
||||
|
||||
def __init__(self, input_path, output_path, args=None, ignore_extensions=True):
|
||||
|
||||
if not ignore_extensions:
|
||||
@@ -52,7 +49,6 @@ class BaseRenderWorker(object):
|
||||
self.output = output_path
|
||||
self.args = args or {}
|
||||
self.date_created = datetime.now()
|
||||
self.attributes = {}
|
||||
self.renderer_version = self.version()
|
||||
|
||||
# Ranges
|
||||
@@ -63,7 +59,6 @@ class BaseRenderWorker(object):
|
||||
self.log_path = None
|
||||
self.start_time = None
|
||||
self.end_time = None
|
||||
self.last_error = None
|
||||
|
||||
# History
|
||||
self.status = RenderStatus.NOT_STARTED
|
||||
@@ -79,17 +74,21 @@ class BaseRenderWorker(object):
|
||||
self.is_finished = False
|
||||
self.last_output = None
|
||||
|
||||
@classmethod
|
||||
def version(cls):
|
||||
raise NotImplementedError("Unknown version")
|
||||
|
||||
@classmethod
|
||||
def renderer_path(cls):
|
||||
path = None
|
||||
try:
|
||||
path = subprocess.check_output(['which', cls.render_engine]).decode('utf-8').strip()
|
||||
except Exception as e:
|
||||
except subprocess.CalledProcessError:
|
||||
for p in cls.install_paths:
|
||||
if os.path.exists(p):
|
||||
path = p
|
||||
# if not path:
|
||||
# logger.error("Failed to get path to {}: {}".format(self.renderer, e))
|
||||
except Exception as e:
|
||||
logging.exception(e)
|
||||
return path
|
||||
|
||||
def _generate_subprocess(self):
|
||||
@@ -215,6 +214,15 @@ class BaseRenderWorker(object):
|
||||
|
||||
class RenderWorkerFactory:
|
||||
|
||||
@staticmethod
|
||||
def supported_classes():
|
||||
# to add support for any additional RenderWorker classes, import their classes and add to list here
|
||||
from utilities.blender_worker import BlenderRenderWorker
|
||||
from utilities.aerender_worker import AERenderWorker
|
||||
from utilities.ffmpeg_worker import FFMPEGRenderWorker
|
||||
classes = [BlenderRenderWorker, AERenderWorker, FFMPEGRenderWorker]
|
||||
return classes
|
||||
|
||||
@staticmethod
|
||||
def create_worker(renderer, input_path, output_path, args=None):
|
||||
worker_class = RenderWorkerFactory.class_for_name(renderer)
|
||||
@@ -222,23 +230,14 @@ class RenderWorkerFactory:
|
||||
|
||||
@staticmethod
|
||||
def supported_renderers():
|
||||
return ['aerender', 'blender', 'ffmpeg']
|
||||
return [x.render_engine for x in RenderWorkerFactory.supported_classes()]
|
||||
|
||||
@staticmethod
|
||||
def class_for_name(name):
|
||||
|
||||
from utilities.blender_worker import BlenderRenderWorker
|
||||
from utilities.aerender_worker import AERenderWorker
|
||||
from utilities.ffmpeg_worker import FFMPEGRenderWorker
|
||||
|
||||
name = name.lower()
|
||||
|
||||
if "blender" == name:
|
||||
return BlenderRenderWorker
|
||||
elif "aerender" == name:
|
||||
return AERenderWorker
|
||||
elif "ffmpeg" == name:
|
||||
return FFMPEGRenderWorker
|
||||
for render_class in RenderWorkerFactory.supported_classes():
|
||||
if render_class.render_engine == name:
|
||||
return render_class
|
||||
|
||||
raise LookupError(f'Cannot find class for name: {name}')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user