importmathfrompathlibimportPathfromcompas.datastructuresimportMeshfromcompas.geometryimportRotationfromcompas.geometryimportScalefromcompas.geometryimportTranslationfromcompas.geometryimportVectorfromcompas.geometryimportscale_vectorfromcompas_cgal.meshingimportmesh_remeshfromcompas_viewerimportViewerFILE=Path(__file__).parent.parent.parent/"data"/"Bunny.ply"# ==============================================================================# Get the bunny and construct a mesh# ==============================================================================bunny=Mesh.from_ply(FILE)bunny.remove_unused_vertices()# ==============================================================================# Move the bunny to the origin and rotate it upright.# ==============================================================================vector=scale_vector(bunny.centroid(),-1)T=Translation.from_vector(vector)S=Scale.from_factors([100,100,100])R=Rotation.from_axis_and_angle(Vector(1,0,0),math.radians(90))bunny.transform(R*S*T)# ==============================================================================# Remesh# ==============================================================================V,F=mesh_remesh(bunny.to_vertices_and_faces(),0.3,10)mesh=Mesh.from_vertices_and_faces(V,F)# ==============================================================================# Visualize# ==============================================================================viewer=Viewer(width=1600,height=900)viewer.renderer.camera.target=[0,0,0]viewer.renderer.camera.position=[0,-25,10]viewer.scene.add(bunny.transformed(Translation.from_vector([-10,0,0])),show_points=False)viewer.scene.add(mesh.transformed(Translation.from_vector([+10,0,0])),show_points=False)viewer.show()