Source code for blenderproc.python.modules.main.Pipeline


import os

from blenderproc.python.modules.utility.ConfigParser import ConfigParser
from blenderproc.python.utility.SetupUtility import SetupUtility
from blenderproc.python.utility.Utility import Utility, resolve_path, BlockStopWatch
from blenderproc.python.modules.main.GlobalStorage import GlobalStorage

[docs]class Pipeline: def __init__(self, config_path, args, temp_dir, avoid_output=False): """ Inits the pipeline, by calling the constructors of all modules mentioned in the config. :param config_path: path to the config :param args: arguments which were provided to the cli.py and are specified in the config file :param temp_dir: the directory where to put temporary files during the execution :param avoid_output: if this is true, all modules (renderers and writers) skip producing output. With this it is possible to debug \ properly. """ config_parser = ConfigParser(silent=True) config = config_parser.parse(resolve_path(config_path), args) # Setup pip packages specified in config SetupUtility.setup_pip(config["setup"]["pip"] if "pip" in config["setup"] else []) if avoid_output: GlobalStorage.add_to_config_before_init("avoid_output", True) Utility.temp_dir = resolve_path(temp_dir) os.makedirs(Utility.temp_dir, exist_ok=True) self.modules = Utility.initialize_modules(config["modules"])
[docs] def run(self): """ Runs each module and measuring their execution time. """ with BlockStopWatch("Running blender pipeline"): for module in self.modules: with BlockStopWatch("Running module " + module.__class__.__name__): module.run()