Spaces:
Sleeping
Sleeping
| import numpy as np | |
| def rotate(mesh): | |
| # Extract vertices and normals | |
| vertices = mesh.vertices | |
| # Define rotation matrices | |
| def rotate_y(vertices, angle): | |
| angle_rad = np.radians(angle) | |
| rotation_matrix = np.array([ | |
| [np.cos(angle_rad), 0, np.sin(angle_rad)], | |
| [0, 1, 0], | |
| [-np.sin(angle_rad), 0, np.cos(angle_rad)] | |
| ]) | |
| return np.dot(vertices, rotation_matrix.T) | |
| def rotate_x(vertices, angle): | |
| angle_rad = np.radians(angle) | |
| rotation_matrix = np.array([ | |
| [1, 0, 0], | |
| [0, np.cos(angle_rad), -np.sin(angle_rad)], | |
| [0, np.sin(angle_rad), np.cos(angle_rad)] | |
| ]) | |
| return np.dot(vertices, rotation_matrix.T) | |
| def rotate_z(vertices, angle): | |
| angle_rad = np.radians(angle) | |
| rotation_matrix = np.array([ | |
| [np.cos(angle_rad), -np.sin(angle_rad), 0], | |
| [np.sin(angle_rad), np.cos(angle_rad), 0], | |
| [0, 0, 1] | |
| ]) | |
| return np.dot(vertices, rotation_matrix.T) | |
| # Rotate vertices to right orientation | |
| vertices = rotate_y(vertices, 225) | |
| vertices = rotate_x(vertices, 90) | |
| vertices = rotate_z(vertices, -90) | |
| vertices = rotate_y(vertices, 45) | |
| vertices = rotate_z(vertices, 45) | |
| vertices = rotate_x(vertices, 45) | |
| vertices = rotate_y(vertices, 20) | |
| vertices = rotate_x(vertices, -10) | |
| # Update the mesh with the modified vertices | |
| mesh.vertices = vertices | |
| return mesh | |