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

from blenderproc.python.modules.loader.LoaderInterface import LoaderInterface
from blenderproc.python.modules.utility.Config import Config
from blenderproc.python.loader.RockEssentialsRockLoader import RockEssentialsRockLoader


[docs]class RockEssentialsRockLoaderModule(LoaderInterface): """ Loads rocks/cliffs from a specified .blend Rocks Essentials file. Example 1: Load two rocks from the specified .blend file. .. code-block:: yaml { "module": "loader.RockEssentialsRockLoader", "config": { "batches": [ { "path": "<args:0>/Rock Essentials/Individual Rocks/Sea/Rocks_Sea_Large.blend", "objects": ['Rock_Sea_Large001','Rock_Sea_Large003'] } ] } } Example 2: Load 5 copies of two specified rocks from the specified .blend file. .. code-block:: yaml { "module": "loader.RockEssentialsRockLoader", "config": { "batches": [ { "path": "<args:0>/Rock Essentials/Individual Rocks/Sea/Rocks_Sea_Large.blend", "objects": ['Rock_Sea_Large001','Rock_Sea_Large003'], "amount": 5 } ] } } Example 3: Load 5 rocks, where each loaded rock is randomly selected out of a list of two rocks, from the specified .blend file. .. code-block:: yaml { "module": "loader.RockEssentialsRockLoader", "config": { "batches": [ { "path": "<args:0>/Rock Essentials/Individual Rocks/Sea/Rocks_Sea_Large.blend", "objects": ['Rock_Sea_Large001','Rock_Sea_Large003'], "amount": 5, "sample_objects": True } ] } } Example 4: Load 5 random rocks from the specified .blend file. .. code-block:: yaml { "module": "loader.RockEssentialsRockLoader", "config": { "batches": [ { "path": "<args:0>/Rock Essentials/Individual Rocks/Sea/Rocks_Sea_Large.blend", "amount": 5, "sample_objects": True } ] } } **configuration**: .. list-table:: :widths: 25 100 10 :header-rows: 1 * - Parameter - Description - Type * - batches - Rocks to load. Each cell contains separate configuration data. Default: []. - list **Properties per rock batch**: .. list-table:: :widths: 25 100 10 :header-rows: 1 * - Parameter - Description - Type * - path - Path to a .blend file containing desired rock/cliff objects in //Object// section. - string * - objects - List of rock-/cliff-object names to be loaded. If not specified then `amount` property is used for consequential loading. Default: []. - list * - amount - Amount of rock-/cliff-object to load. If not specified, the amount will be set to the amount of suitable objects in the current section of a blend file. Must be bigger than 0. - int * - sample_objects - Toggles the uniform sampling of objects to load. Takes into account `objects` and `amount` parameters. Default: False. Requires 'amount' param to be defined. - bool * - render_levels - Number of subdivisions to perform when rendering. Default: 3. - int * - high_detail_mode - Flag for enabling HDM when possible. Default: False. - boolean * - reflection_amount - Reflection texture value. Default: rock-specific. Range: [0,1] - float * - reflection_roughness - Roughness texture value. Default: rock-specific. Range: [0,1] - float * - physics - Custom property for physics/rigidbody state. Default: False. - boolean * - scale - Scale of a rock as a 3d-vector with each value as a scaling factor per according dimension. Default: [1, 1, 1]. - mathutils.Vector * - HSV - Hue-Saturation-Value parameters of the HSV node. (3 values). Range: H: [0, 1], S: [0, 2], V: [0, 2]. Default: rock-specific. - list """ def __init__(self, config): LoaderInterface.__init__(self, config)
[docs] def run(self): """ Loads rocks.""" rocks_settings = self.config.get_list("batches", []) for subsec_num, subsec_settings in enumerate(rocks_settings): subsec_config = Config(subsec_settings) subsec_objects = RockEssentialsRockLoader.load_rocks( path=subsec_config.get_string("path"), subsec_num=subsec_num, objects=subsec_config.get_list("objects", []), sample_objects=subsec_config.get_bool("sample_objects", False), amount=subsec_config.get_int("amount", None) ) RockEssentialsRockLoader.set_rocks_properties( objects=subsec_objects, physics=subsec_config.get_bool("physics", False), render_levels=subsec_config.get_int("render_levels", 3), high_detail_mode=subsec_config.get_bool("high_detail_mode", False), scale=subsec_config.get_vector3d("scale", [1, 1, 1]), reflection_amount=subsec_config.get_float("reflection_amount", None), reflection_roughness=subsec_config.get_float("reflection_roughness", None), hsv=subsec_config.get_list("HSV", None) )