blenderproc.python.object.ObjectReplacer module
Replaces mesh objects with other meshes objects, while checking for collisions
- class blenderproc.python.object.ObjectReplacer._ObjectReplacer[source]
Bases:
objectReplaces mesh objects with another mesh objects and scales them accordingly, the replaced objects and the objects to replace with, can be selected over Selectors (getter.Entity).
- static bb_ratio(bb1, bb2)[source]
Rough estimation of the ratios between two bounding boxes sides, not axis aligned
- Parameters:
bb1 (
ndarray) – bounding box 1. Type: float multi-dimensional array of 8 * 3.bb2 (
ndarray) – bounding box 2. Type: float multi-dimensional array of 8 * 3.
- Return type:
list- Returns:
the ratio between each side of the bounding box. Type: a list of floats.
- static replace(obj_to_remove, obj_to_add, check_collision_with=None, scale=True, relative_pose_sampler=None)[source]
Scale, translate, rotate obj_to_add to match obj_to_remove and check if there is a bounding box collision returns a boolean.
- Parameters:
obj_to_remove (
MeshObject) – An object to remove from the scene.obj_to_add (
MeshObject) – An object to put in the scene instead of obj_to_remove.check_collision_with (
Optional[List[MeshObject]]) – A list of objects, which are not checked for collisions with.scale (
bool) – Scales obj_to_add to match obj_to_remove dimensions.relative_pose_sampler (
Optional[Callable[[MeshObject],None]]) – A function that randomly perturbs the pose of the object to replace with (after it has been aligned to the object to replace).
- blenderproc.python.object.ObjectReplacer.replace_objects(objects_to_be_replaced, objects_to_replace_with, ignore_collision_with=None, replace_ratio=1, copy_properties=True, max_tries=100, relative_pose_sampler=None)[source]
Replaces mesh objects with another mesh objects and scales them accordingly, the replaced objects and the objects to replace with in following steps:
Randomly select a subset of objects_to_be_replaced.
For each of these objects, sample other objects from objects_to_replace_with and try to replace them.
In each try, the poses of the objects are aligned and a check for collisions with other objects is done.
An object is skipped if max_tries is reached.
- Parameters:
objects_to_be_replaced (
List[MeshObject]) – Objects, which should be removed from the scene.objects_to_replace_with (
List[MeshObject]) – Objects, which will be tried to be added to the scene.ignore_collision_with (
Optional[List[MeshObject]]) – Objects, which are not checked for collisions with.replace_ratio (
float) – Ratio of objects in the original scene, which will be replaced.copy_properties (
bool) – Copies the custom properties of the objects_to_be_replaced to the objects_to_replace_with.max_tries (
int) – Maximum number of tries to replace one object.relative_pose_sampler (
Optional[Callable[[MeshObject],None]]) – A function that randomly perturbs the pose of the object to replace with (after it has been aligned to the object to replace).