def render_random_scene(self, camera_pose=None): """ Renders a random view and return (pc, camera_pose, object_pose). object_pose is None for single object per scene. """ if camera_pose is None: viewing_index = np.random.randint(0, high=len(self.all_poses)) camera_pose = self.all_poses[viewing_index] in_camera_pose = copy.deepcopy(camera_pose) _, _, pc, camera_pose = self.renderer.render(in_camera_pose) pc = self.apply_dropout(pc) pc = utils.regularize_pc_point_count(pc, self.opt.npoints) pc_mean = np.mean(pc, 0, keepdims=True) pc[:, :3] -= pc_mean[:, :3] camera_pose[:3, 3] -= pc_mean[0, :3] return pc, camera_pose, in_camera_pose
def change_object_and_render(self, cad_path, cad_scale, camera_pose=None, thread_id=0): if camera_pose is None: viewing_index = np.random.randint(0, high=len(self.all_poses)) camera_pose = self.all_poses[viewing_index] in_camera_pose = copy.deepcopy(camera_pose) _, _, pc, camera_pose = self.renderer.change_and_render( cad_path, cad_scale, in_camera_pose, thread_id) pc = self.apply_dropout(pc) pc = utils.regularize_pc_point_count(pc, self.opt.npoints) pc_mean = np.mean(pc, 0, keepdims=True) pc[:, :3] -= pc_mean[:, :3] camera_pose[:3, 3] -= pc_mean[0, :3] return pc, camera_pose, in_camera_pose