Source code for blenderproc.python.modules.loader.SuncgLoaderModule

import os

from blenderproc.python.modules.loader.LoaderInterface import LoaderInterface
from blenderproc.python.modules.main.GlobalStorage import GlobalStorage
from blenderproc.python.utility.LabelIdMapping import LabelIdMapping
from blenderproc.python.utility.Utility import resolve_path, Utility, resolve_resource
from blenderproc.python.loader.SuncgLoader import load_suncg


[docs]class SuncgLoaderModule(LoaderInterface): """ Loads a house.json file into blender. - Loads all objects files specified in the house.json file. - Orders them hierarchically (level -> room -> object) - Writes metadata into the custom properties of each object **Configuration**: .. list-table:: :widths: 25 100 10 :header-rows: 1 * - Parameter - Description - Type * - path - The path to the house.json file which should be loaded. - string * - suncg_path - The path to the suncg root directory which should be used for loading objects, rooms, textures etc. Default: is extracted from the house.json path - string """ def __init__(self, config): LoaderInterface.__init__(self, config) self.house_path = resolve_path(self.config.get_string("path")) suncg_folder_path = os.path.join(os.path.dirname(self.house_path), "../..") self.suncg_dir = self.config.get_string("suncg_path", suncg_folder_path)
[docs] def run(self): label_mapping = LabelIdMapping.from_csv(resolve_resource(os.path.join('id_mappings', 'nyu_idset.csv'))) # Add label mapping to global storage, s.t. it could be used for naming semantic segmentations. GlobalStorage.set("label_mapping", label_mapping) loaded_objects = load_suncg(self.house_path, label_mapping, self.suncg_dir) self._set_properties(loaded_objects)