Change object materials. An example config file using this control can be found here:

class threedb.controls.blender.material.MaterialControl(root_folder: str)

Bases: threedb.controls.base_control.PreProcessControl

Control that swap material of an object with another one

Discrete Dimensions:

  • replacement_material: The name of the material that replaces the

    original material.


The possible values for replacement_material can be any file name found in $BLENDER_DATA/blender_control_material.

Each of these file should only contain a single material.

Example images

Examples of various material substitutions.

__init__(root_folder: str)

Construct a BaseControl


root_folder – The folder containing all the data for this 3DB experiment. All paths are lative to his folder

apply(context: Dict[str, Any], control_args: Dict[str, Any])None

Replace the material of the target object with the material corresponding to replacement_material.

  • context (Dict[str, Any]) – The blender scene context.

  • control_args (Dict[str, Any]) – Must have key replacement_material containing the file name of the replacement material to use.

unapply(context: Dict[str, Any])None

Undo the modification on a scene


Most of the time, recreating a scene is very expensive, therefore, controls are asked to implement a reverse operation to undo their changes. Controls that need to store state in order to undo their actions should add data to the target object they received.


context (Dict[str, Any]) – The description of the scene to render


alias of threedb.controls.blender.material.MaterialControl