add normal

This commit is contained in:
hofee
2024-10-02 16:07:33 +08:00
parent e6fd317bac
commit a712ec063c
2 changed files with 46 additions and 17 deletions

View File

@@ -40,7 +40,7 @@ class ViewSampleUtil:
return np.array(downsampled_points), downsampled_indices
@staticmethod
def sample_view_data(obj, distance_range:tuple = (0.2,0.4), voxel_size:float = 0.005, max_views: int = 1) -> dict:
def sample_view_data(obj, distance_range:tuple = (0.2,0.4), voxel_size:float = 0.005, max_views: int = 1, pertube_repeat:int = 1) -> dict:
view_data = {
"look_at_points": [],
"cam_positions": [],
@@ -69,16 +69,18 @@ class ViewSampleUtil:
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)
for _ in range(pertube_repeat):
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 * perturbed_normal
look_at_points.append(look_at_point)
cam_positions.append(cam_position)
distance = np.random.uniform(*distance_range)
cam_position = look_at_point + distance * perturbed_normal
look_at_points.append(look_at_point)
cam_positions.append(cam_position)
bm.free()