def run(self): """ :return: Point of interest in the scene. Type: mathutils.Vector. """ # For every selected object in the scene selected_objects = MeshObject.convert_to_meshes( self.config.get_list("selector", get_all_blender_mesh_objects())) if len(selected_objects) == 0: raise Exception("No objects were selected!") return MeshObject.compute_poi(selected_objects)
parser.add_argument('output_dir', nargs='?', default="examples/basics/camera_sampling/output", help="Path to where the final files, will be saved") args = parser.parse_args() Initializer.init() # load the objects into the scene objs = ObjectLoader.load(args.scene) # define a light and set its location and energy level light = Light() light.set_type("POINT") light.set_location([5, -5, 5]) light.set_energy(1000) # Find point of interest, all cam poses should look towards it poi = MeshObject.compute_poi(objs) # Sample five camera poses for i in range(5): # Sample random camera location above objects location = np.random.uniform([-10, -10, 12], [10, 10, 8]) # Compute rotation based on vector going from location towards poi rotation_matrix = CameraUtility.rotation_from_forward_vec(poi - location, inplane_rot=np.random.uniform(-0.7854, 0.7854)) # Add homog cam pose based on location an rotation cam2world_matrix = MathUtility.build_transformation_mat(location, rotation_matrix) CameraUtility.add_camera_pose(cam2world_matrix) # activate normal and distance rendering RendererUtility.enable_normals_output() RendererUtility.enable_distance_output() # set the amount of samples, which should be used for the color rendering RendererUtility.set_samples(350)