Placement (.core.placement)

Contents

Placement (.core.placement)#

animation_policy#

exception infinigen.core.placement.animation_policy.PolicyError[source]#

Bases: ValueError

infinigen.core.placement.animation_policy.get_altitude(loc, scene_bvh, dir=Vector((0.0, 0.0, -1.0)))[source]#
Parameters:
  • loc

  • scene_bvh

  • dir -- (default: Vector((0.0, 0.0, -1.0)))

infinigen.core.placement.animation_policy.walk_same_altitude(...)[source]#

fall_ratio: what is the slope at which the camera is willing to go down / glide

Parameters:
  • start_loc

  • sampler

  • bvh

  • filter_func -- (default: None)

  • fall_ratio -- (default: 1.5)

  • retries -- (default: 30)

  • step_up_height -- (default: 2)

  • ignore_missed_rays -- (default: False)

  • z_move_up -- (default: 1)

class infinigen.core.placement.animation_policy.AnimPolicyBrownian(speed=3, pos_var=15.0)[source]#

Bases: object

class infinigen.core.placement.animation_policy.AnimPolicyPan(speed=3, dist=('uniform', 5, 20), rot_var=[10, 0, 20])[source]#

Bases: object

class infinigen.core.placement.animation_policy.AnimPolicyRandomForwardWalk(
forward_vec,
speed=2,
yaw_dist=('uniform', -30, 30),
altitude_var=0,
step_range=(1, 10),
rot_vars=[5, 0, 5],
)[source]#

Bases: object

class infinigen.core.placement.animation_policy.AnimPolicyRandomWalkLookaround(
speed=('uniform', 1, 2.5),
step_speed_mult=('uniform', 0.5, 2),
yaw_sampler=('uniform', -20, 20),
step_range=('clip_gaussian', 3, 5, 0.5, 10),
rot_vars=(5, 0, 5),
motion_dir_zoff=('uniform', 0, 360),
force_single_keyframe=False,
)[source]#

Bases: object

class infinigen.core.placement.animation_policy.AnimPolicyFollowObject(
target_obj,
pois,
bvh,
zrot_vel_var=20,
follow_zrot=0,
follow_rad_mult=('uniform', 1, 6),
alt_mult=('uniform', 0.25, 1),
)[source]#

Bases: object

reset()[source]#

Called at __init__ and whenever the animation aborts and retries

infinigen.core.placement.animation_policy.validate_keyframe_range(...)[source]#
Parameters:
  • obj

  • start_frame

  • end_frame

  • bvhtree

  • validate_pose_func -- (default: None)

  • stride -- (default: 1)

  • check_straight_line -- (default: True)

  • check_keyframe_straight_line -- (default: True)

infinigen.core.placement.animation_policy.try_animate_trajectory(...)[source]#
Parameters:
  • obj (Object)

  • bvh (BVHTree)

  • policy_func

  • keyframe

  • duration_frames

  • validate_pose_func -- (default: None)

  • max_step_tries -- (default: 50)

  • verbose -- (default: True)

infinigen.core.placement.animation_policy.try_animate_with_pathfinding(...)[source]#
Parameters:
  • obj

  • bvh

  • policy_func

  • keyframe

  • duration_frames

  • validate_pose_func

  • max_step_tries

  • verbose

  • bounding_box

  • turning_limit_degree -- (default: 10)

infinigen.core.placement.animation_policy.keyframe(...)[source]#
Parameters:
  • obj

  • loc

  • rot

  • t

  • interp -- (default: 'BEZIER')

infinigen.core.placement.animation_policy.animate_trajectory(...)[source]#
Parameters:
  • obj

  • bvh

  • policy_func

  • validate_pose_func -- (default: None)

  • max_step_tries -- (default: 25)

  • max_full_retries -- (default: 40)

  • retry_rotation -- (default: False)

  • verbose -- (default: True)

  • fatal -- (default: False)

  • reverse_time -- (default: False)

  • bounding_box -- (default: None)

  • path_finding_enabled -- (default: False)

infinigen.core.placement.animation_policy.policy_create_bezier_path(...)[source]#
Parameters:
  • start_pose_obj

  • bvh

  • policy_func

  • to_mesh -- (default: False)

  • eval_offset -- (default: (0, 0, 0))

camera#

infinigen.core.placement.camera.get_sensor_coords(...)[source]#
Parameters:
  • cam

  • H

  • W

  • sparse -- (default: False)

infinigen.core.placement.camera.adjust_camera_sensor(cam)[source]#
Parameters:

cam

infinigen.core.placement.camera.spawn_camera()[source]#
infinigen.core.placement.camera.cam_name(cam_rig, subcam)[source]#
Parameters:
  • cam_rig

  • subcam

infinigen.core.placement.camera.get_id(camera)[source]#
Parameters:

camera (Object)

infinigen.core.placement.camera.spawn_camera_rigs(camera_rig_config, n_camera_rigs) list[bpy_types.Object][source]#
Parameters:
  • camera_rig_config

  • n_camera_rigs

infinigen.core.placement.camera.get_camera_rigs() list[bpy_types.Object][source]#
infinigen.core.placement.camera.set_active_camera(camera)[source]#
Parameters:

camera (Object)

infinigen.core.placement.camera.terrain_camera_query(...)[source]#
Parameters:
  • cam (Object)

  • scene_bvh (BVHTree)

  • terrain_tags_queries

  • vertexwise_min_dist

  • min_dist -- (default: 0)

class infinigen.core.placement.camera.CameraProposal(
loc: <built-in function array>,
rot: <built-in function array>,
focal_length: float,
)[source]#

Bases: object

Parameters:
  • loc (array)

  • rot (array)

  • focal_length (float)

apply(cam_rig)[source]#
Parameters:

cam_rig

infinigen.core.placement.camera.camera_pose_proposal(...)[source]#
Parameters:
  • scene_bvh

  • location_sample (Callable | tuple)

  • center_coordinate -- (default: None)

  • radius -- (default: None)

  • bbox -- (default: None)

  • altitude -- (default: ('uniform', 1.5, 2.5))

  • roll -- (default: 0)

  • yaw -- (default: ('uniform', -180, 180))

  • pitch -- (default: 90)

  • focal_length -- (default: 50)

  • override_loc -- (default: None)

infinigen.core.placement.camera.keep_cam_pose_proposal(...)[source]#
Parameters:
  • cam (Object)

  • terrain (Terrain)

  • scene_bvh (BVHTree)

  • placeholders_kd

  • camera_selection_answers

  • vertexwise_min_dist

  • camera_selection_ratio

  • min_placeholder_dist -- (default: 0)

  • min_terrain_distance -- (default: 0)

  • terrain_coverage_range -- (default: (0.5, 1))

class infinigen.core.placement.camera.AnimPolicyGoToProposals(
speed=('uniform', 1.5, 2.5),
min_dist=4,
max_dist=10,
retries=30,
)[source]#

Bases: object

infinigen.core.placement.camera.compute_base_views(...)[source]#
Parameters:
  • camera_rig (Object)

  • n_views (int)

  • terrain

  • scene_bvh (BVHTree)

  • location_sample (Callable)

  • center_coordinate -- (default: None)

  • radius -- (default: None)

  • bbox -- (default: None)

  • placeholders_kd -- (default: None)

  • min_candidates_ratio -- (default: 20)

  • max_tries -- (default: 30000)

  • visualize -- (default: False)

infinigen.core.placement.camera.build_bvh_and_attrs(objs, tags_queries)[source]#
Parameters:
  • objs

  • tags_queries

infinigen.core.placement.camera.camera_selection_preprocessing(...)[source]#
Parameters:
  • terrain

  • scene_objs

  • tags_ratio (dict) -- (default: None)

  • ranges_ratio (dict) -- (default: None)

  • anim_criterion_keys (dict) -- (default: None)

infinigen.core.placement.camera.sample_random_locs(surface, eps=0.01)[source]#
Parameters:
  • surface (Object)

  • eps -- (default: 0.01)

infinigen.core.placement.camera.configure_cameras(...)[source]#
Parameters:
  • cam_rigs

  • scene_preprocessed (dict)

  • init_bounding_box (tuple[array, array]) -- (default: None)

  • init_surfaces (list[Object]) -- (default: None)

  • terrain_mesh -- (default: None)

  • nonroom_objs -- (default: None)

  • mvs_setting -- (default: False)

  • mvs_radius -- (default: ('uniform', 12, 18))

  • n_views (int) -- (default: None)

infinigen.core.placement.camera.anim_valid_camrig_pose_func(...)[source]#
Parameters:
  • cam_rig (Object)

  • scene_preprocessed (dict)

  • animation_answers (dict)

  • animation_ratio (dict)

infinigen.core.placement.camera.animate_cameras(...)[source]#
Parameters:
  • cam_rigs

  • bounding_box

  • scene_preprocessed

  • pois -- (default: None)

  • follow_poi_chance -- (default: 0.0)

  • policy_registry -- (default: None)

  • validate_pose_func -- (default: None)

infinigen.core.placement.camera.save_camera_parameters(...)[source]#
Parameters:
  • camera_obj (Object)

  • output_folder (Path)

  • frame (int)

  • use_dof -- (default: False)

camera_trajectories#

infinigen.core.placement.camera_trajectories.compute_poses(...)[source]#
Parameters:
  • cam_rigs

  • scene_preprocessed (dict)

  • min_candidates_ratio -- (default: 5)

  • min_base_views_ratio -- (default: 10)

infinigen.core.placement.camera_trajectories.compute_trajectories(...)[source]#
Parameters:
  • cam_rigs

  • base_views

  • scene_preprocessed (dict)

  • obj_groups -- (default: None)

  • camera_selection_answers -- (default: {})

  • camera_selection_ratio -- (default: None)

  • min_candidates_ratio -- (default: 5)

  • pois -- (default: None)

  • animation_mode (str) -- (default: 'random_walk')

  • validate_pose_func -- (default: None)

infinigen.core.placement.camera_trajectories.animate_trajectories(...)[source]#
Parameters:
  • cam_rigs

  • base_views

  • scene_preprocessed (dict)

  • obj_groups -- (default: None)

  • pois -- (default: None)

  • animation_mode -- (default: 'random_walk')

  • validate_pose_func -- (default: None)

  • fatal -- (default: True)

infinigen.core.placement.camera_trajectories.delete_prior_keyframes(cam)[source]#
Parameters:

cam

density#

infinigen.core.placement.density.set_tag_dict(tag_dict_)[source]#
Parameters:

tag_dict

infinigen.core.placement.density.tag_mask(nw, tag)[source]#
Parameters:
  • nw

  • tag

infinigen.core.placement.density.placement_mask(...)[source]#
Parameters:
  • scale -- (default: 0.05)

  • select_thresh -- (default: 0.55)

  • normal_thresh -- (default: 0.5)

  • normal_thresh_high -- (default: 2.0)

  • normal_dir -- (default: (0, 0, 1))

  • tag -- (default: None)

  • return_scalar -- (default: False)

  • altitude_range -- (default: None)

detail#

infinigen.core.placement.detail.scatter_res_distance(dist=4)[source]#
Parameters:

dist -- (default: 4)

infinigen.core.placement.detail.target_face_size(...)[source]#
Parameters:
  • obj

  • camera -- (default: None)

  • global_multiplier -- (default: 1)

  • global_clip_min -- (default: 0.003)

  • global_clip_max -- (default: 1)

infinigen.core.placement.detail.remesh_with_attrs(...)[source]#
Parameters:
  • obj

  • face_size

  • apply -- (default: True)

  • min_remesh_size -- (default: None)

  • attributes -- (default: None)

infinigen.core.placement.detail.sharp_remesh_with_attrs(...)[source]#
Parameters:
  • obj

  • face_size

  • apply -- (default: True)

  • min_remesh_size -- (default: None)

  • attributes -- (default: None)

infinigen.core.placement.detail.subdivide_to_face_size(...)[source]#
Parameters:
  • obj

  • from_facesize

  • to_facesize

  • apply -- (default: True)

  • max_levels -- (default: 6)

infinigen.core.placement.detail.merged_by_distance_col(col, face_size, inplace=False)[source]#
Parameters:
  • col

  • face_size

  • inplace -- (default: False)

infinigen.core.placement.detail.min_max_edgelen(mesh)[source]#
Parameters:

mesh

infinigen.core.placement.detail.adapt_mesh_resolution(...)[source]#
Parameters:
  • obj

  • face_size

  • method

  • approx -- (default: 0.2)

factory#

class infinigen.core.placement.factory.AssetFactory(factory_seed=None, coarse=False)[source]#

Bases: object

static quickly_resample(obj)[source]#
Parameters:

obj

create_placeholder(**kwargs) bpy_types.Object[source]#
finalize_placeholders(placeholders)[source]#
Parameters:

placeholders (List[Object])

asset_parameters(distance, vis_distance) dict[source]#
Parameters:
create_asset(**params) bpy_types.Object[source]#
finalize_assets(assets)[source]#
Parameters:

assets

spawn_placeholder(i, loc, rot)[source]#
Parameters:
  • i

  • loc

  • rot

spawn_asset(...)[source]#
Parameters:
  • i

  • placeholder -- (default: None)

  • distance -- (default: None)

  • vis_distance -- (default: 0)

  • loc -- (default: (0, 0, 0))

  • rot -- (default: (0, 0, 0))

post_init()[source]#
infinigen.core.placement.factory.make_asset_collection(...)[source]#
Parameters:
  • spawn_fns

  • n

  • name -- (default: None)

  • weights -- (default: None)

  • as_list -- (default: False)

  • verbose -- (default: True)

  • centered -- (default: False)

instance_scatter#

infinigen.core.placement.instance_scatter.camera_cull_points(...)[source]#
Parameters:
  • nw

  • fov -- (default: 25)

  • camera -- (default: None)

  • near_dist_margin -- (default: 5)

infinigen.core.placement.instance_scatter.bucketed_instance(...)[source]#
Parameters:
  • nw

  • points

  • collection

  • distance

  • buckets

  • selection

  • scaling

  • rotation

  • instance_index -- (default: None)

infinigen.core.placement.instance_scatter.geo_instance_scatter(...)[source]#
Parameters:
  • nw (NodeWrangler)

  • base_obj

  • collection

  • density

  • fov -- (default: None)

  • dist_max -- (default: None)

  • no_culling_dist -- (default: 5)

  • min_spacing -- (default: 0)

  • scaling -- (default: Vector((1.0, 1.0, 1.0)))

  • normal -- (default: None)

  • normal_fac -- (default: 1)

  • rotation_offset -- (default: None)

  • selection -- (default: True)

  • taper_scale -- (default: False)

  • taper_density -- (default: False)

  • ground_offset -- (default: 0)

  • instance_index -- (default: None)

  • transform_space -- (default: 'RELATIVE')

  • reset_children -- (default: True)

  • realize -- (default: False)

infinigen.core.placement.instance_scatter.scatter_instances(...)[source]#
Parameters:
  • collection

  • density -- (default: None)

  • vol_density -- (default: None)

  • max_density -- (default: 5000)

  • scale -- (default: None)

  • scale_rand -- (default: 0)

  • scale_rand_axi -- (default: 0)

  • apply_geo -- (default: False)

particles#

infinigen.core.placement.particles.bake(emitter, system)[source]#
Parameters:
  • emitter

  • system

infinigen.core.placement.particles.configure_boids(system_config, settings)[source]#
Parameters:
  • system_config

  • settings

infinigen.core.placement.particles.as_particle_collection(subject, prefix='particleassets')[source]#

Particle assets cannot have hide_render=True or they will be invisible, yet this is the default behavior for most asset collections

Parameters:
  • subject

  • prefix -- (default: 'particleassets')

infinigen.core.placement.particles.particle_system(...)[source]#

Generalized particle system. kwargs are passed through to particle_system.settings

Parameters:
  • emitter (Object)

  • subject (Object | pf.Collection)

  • settings (dict)

  • collision_collection -- (default: None)

path_finding#

infinigen.core.placement.path_finding.camera_rotation_matrix(pointing_direction, up_vector)[source]#
Parameters:
  • pointing_direction

  • up_vector

infinigen.core.placement.path_finding.path_finding(...)[source]#
Parameters:
  • bvhtree

  • bounding_box

  • start_pose

  • end_pose

  • resolution -- (default: 100000)

  • margin -- (default: 0.1)

placement#

infinigen.core.placement.placement.objects_to_grid(objects, spacing)[source]#
Parameters:
  • objects

  • spacing

infinigen.core.placement.placement.placeholder_locs(...)[source]#
Parameters:
  • terrain

  • overall_density

  • selection

  • distance_min -- (default: 0)

  • altitude -- (default: 0.0)

  • max_locs -- (default: None)

infinigen.core.placement.placement.points_near_camera(...)[source]#
Parameters:
  • cam

  • scene_bvh

  • n

  • alt

  • dist_range

infinigen.core.placement.placement.scatter_placeholders_mesh(...)[source]#
Parameters:
  • base_mesh

  • factory (AssetFactory)

  • overall_density

  • selection -- (default: None)

  • distance_min -- (default: 0)

  • num_placeholders -- (default: None)

infinigen.core.placement.placement.scatter_placeholders(locations, factory)[source]#
Parameters:
infinigen.core.placement.placement.get_placeholder_points(obj) ndarray[source]#
Parameters:

obj (Object)

infinigen.core.placement.placement.parse_asset_name(name)[source]#
Parameters:

name

infinigen.core.placement.placement.filter_populate_targets(...) list[tuple[bpy_types.Object, float, float]][source]#
Parameters:
infinigen.core.placement.placement.populate_collection(...)[source]#
Parameters:
  • factory (AssetFactory)

  • placeholder_col (pf.Collection)

  • cameras (list[Object]) -- (default: None)

  • asset_col_target -- (default: None)

  • dist_cull -- (default: None)

  • vis_cull -- (default: None)

  • verbose -- (default: True)

  • cache_system -- (default: None)

infinigen.core.placement.placement.populate_all(...)[source]#

Find all collections that may have been produced by factory_class, and update them

dist_cull: the max dist away from the camera to still populate assets vis_cull: the max dist outside of the view frustrum to still populate assets

Parameters:
  • factory_class (type)

  • cameras (list[Object])

  • dist_cull -- (default: 200)

  • vis_cull -- (default: 0)

  • cache_system -- (default: None)

infinigen.core.placement.placement.make_placeholders_float(placeholder_col, scene_bvh, water)[source]#
Parameters:
  • placeholder_col

  • scene_bvh

  • water

split_in_view#

infinigen.core.placement.split_in_view.raycast_visiblity_mask(...)[source]#
Parameters:
  • obj (Object)

  • cameras (list[Object])

  • start -- (default: None)

  • end -- (default: None)

  • verbose -- (default: True)

infinigen.core.placement.split_in_view.select_vertmask(obj, mask)[source]#
Parameters:
  • obj

  • mask

infinigen.core.placement.split_in_view.duplicate_mask(...)[source]#
Parameters:
  • obj

  • mask

  • dilate -- (default: 0)

  • invert -- (default: False)

infinigen.core.placement.split_in_view.compute_vis_dists(points, cam)[source]#
Parameters:
  • points (array)

  • cam (Object)

infinigen.core.placement.split_in_view.compute_inview_distances(...)[source]#

Compute the minimum distance of each point to any of the cameras in the scene.

Parameters: - points: an array of 3D points, in world space - cameras: a list of cameras in the scene - dist_max: the maximum distance to consider a point “in view” - vis_margin: how far outside the view frustum to consider a point “in view”

Returns: - mask: boolean array of whether each point is within within vis_margin and dist_max of any frame of any camera - min_dists: the distance of each point the closest camera - min_vis_dists: the distance of each point to the nearest point in any camera’s view frustum

Parameters:
  • points (array)

  • cameras (list[Object])

  • dist_max

  • vis_margin

  • frame_start -- (default: None)

  • frame_end -- (default: None)

  • verbose -- (default: False)

infinigen.core.placement.split_in_view.split_inview(...)[source]#
Parameters:
  • obj (Object)

  • cameras (list[Object])

  • dist_max (float) -- (default: 10000000.0)

  • vis_margin (float) -- (default: 0)

  • raycast (bool) -- (default: False)

  • dilate (float) -- (default: 0)

  • outofview -- (default: True)

  • verbose -- (default: False)

  • hide_render -- (default: None)

  • suffix -- (default: None)

Module contents#