rotate along y-axis normal_map: torch.Tensor, shape=(H, W, 3) in [-1, 1], device='cuda' angle: float, in degree
(normal_map, angle)
| 128 | |
| 129 | |
| 130 | def rotate_normalmap_by_angle_torch(normal_map, angle): |
| 131 | """ |
| 132 | rotate along y-axis |
| 133 | normal_map: torch.Tensor, shape=(H, W, 3) in [-1, 1], device='cuda' |
| 134 | angle: float, in degree |
| 135 | """ |
| 136 | angle = torch.tensor(angle / 180 * np.pi).to(normal_map) |
| 137 | R = torch.tensor([[torch.cos(angle), 0, torch.sin(angle)], |
| 138 | [0, 1, 0], |
| 139 | [-torch.sin(angle), 0, torch.cos(angle)]]).to(normal_map) |
| 140 | return torch.matmul(normal_map.view(-1, 3), R.T).view(normal_map.shape) |
| 141 | |
| 142 | def do_rotate(rgba_normal, angle): |
| 143 | rgba_normal = torch.from_numpy(rgba_normal).float().cuda() / 255 |