Source code for blenderproc.python.modules.provider.sampler.Color

import random

import mathutils

from blenderproc.python.modules.main.Provider import Provider


[docs]class Color(Provider): """ Uniformly samples a 4-dimensional RGBA vector. Example 1: Sample a RGBA grey color value using [min, max] range. .. code-block:: yaml { "provider": "sampler.Color", "min": [0, 0, 0, 1], "max": [1, 1, 1, 1], "grey": True, } **Configuration**: .. list-table:: :widths: 25 100 10 :header-rows: 1 * - Parameter - Description - Type * - min - A list of four values, describing the minimum values of R, G, B and A components. Range: [0; 1]. - list * - max - A list of four values, describing the maximum values of R, G, B and A components. Range: [0; 1]. - list * - grey - Sample grey values only. Default: False. - bool """ def __init__(self, config): Provider.__init__(self, config)
[docs] def run(self): """ Samples a RGBA vector uniformly for each component. :return: RGBA vector. Type: mathutils.Vector """ # minimum values vector min = self.config.get_vector4d("min") # maximum values vector max = self.config.get_vector4d("max") # sample only grey values grey = self.config.get_bool("grey", False) color = mathutils.Vector([0, 0, 0, 0]) for i in range(4): if 0 <= min[i] <= 1 and 0 <= max[i] <= 1: if grey and 0 < i < 3: color[i] = color[i-1] else: color[i] = random.uniform(min[i], max[i]) else: raise RuntimeError("min and max vectors must be composed of values in [0, 1] range!") return color