diff --git a/view_sample_util.py b/view_sample_util.py index a3824f8..a39a622 100644 --- a/view_sample_util.py +++ b/view_sample_util.py @@ -68,12 +68,18 @@ class ViewSampleUtil: continue if np.dot(normal, look_at_point) < 0: normal = -normal + normals.append(normal) + perturb_angle = np.radians(np.random.uniform(0, 30)) + perturb_axis = np.random.normal(size=3) + perturb_axis /= np.linalg.norm(perturb_axis) + rotation_matrix = R.from_rotvec(perturb_angle * perturb_axis).as_matrix() + perturbed_normal = np.dot(rotation_matrix, normal) + distance = np.random.uniform(*distance_range) - cam_position = look_at_point + distance * normal - + cam_position = look_at_point + distance * perturbed_normal look_at_points.append(look_at_point) cam_positions.append(cam_position) - normals.append(normal) + bm.free() look_at_points = np.array(look_at_points) @@ -124,15 +130,12 @@ class ViewSampleUtil: corrected_up_vector = np.cross(forward_vector, right_vector) rotation_matrix = np.array([right_vector, corrected_up_vector, forward_vector]).T - perturbation_angle = 0.01 - random_axis = np.random.randn(3) - random_axis /= np.linalg.norm(random_axis) - perturbation_rotation = R.from_rotvec(random_axis * perturbation_angle).as_matrix() - rotation_matrix = rotation_matrix @ perturbation_rotation + cam_pose = np.eye(4) cam_pose[:3, :3] = rotation_matrix cam_pose[:3, 3] = cam_position_world cam_poses.append(cam_pose) + filtered_cam_poses = [] for cam_pose in cam_poses: if cam_pose[2, 3] > min_height_z: