print("Press [space] to toggle showing surface.") print("Press '.'/',' to push back/pull forward slicing plane.") # Load mesh: (V,T) tet-mesh of convex hull, F contains original surface triangles igl.readMESH(TUTORIAL_SHARED_PATH + "bunny.mesh", V, T, F) # Call to point_mesh_squared_distance to determine bounds sqrD = igl.eigen.MatrixXd() I = igl.eigen.MatrixXi() C = igl.eigen.MatrixXd() igl.point_mesh_squared_distance(V, V, F, sqrD, I, C) max_distance = math.sqrt(sqrD.maxCoeff()) # Precompute signed distance AABB tree tree.init(V, F) # Precompute vertex, edge and face normals igl.per_face_normals(V, F, FN) igl.per_vertex_normals(V, F, igl.PER_VERTEX_NORMALS_WEIGHTING_TYPE_ANGLE, FN, VN) igl.per_edge_normals(V, F, igl.PER_EDGE_NORMALS_WEIGHTING_TYPE_UNIFORM, FN, EN, E, EMAP) # Plot the generated mesh update_visualization(viewer) viewer.callback_key_down = key_down viewer.data().show_lines = False viewer.launch()
update_visualization(viewer) return True print("Press [space] to toggle showing surface.") print("Press '.'/',' to push back/pull forward slicing plane.") # Load mesh: (V,T) tet-mesh of convex hull, F contains original surface triangles igl.readMESH(TUTORIAL_SHARED_PATH + "bunny.mesh", V, T, F) # Call to point_mesh_squared_distance to determine bounds sqrD = igl.eigen.MatrixXd() I = igl.eigen.MatrixXi() C = igl.eigen.MatrixXd() igl.point_mesh_squared_distance(V, V, F, sqrD, I, C) max_distance = math.sqrt(sqrD.maxCoeff()) # Precompute signed distance AABB tree tree.init(V, F) # Precompute vertex, edge and face normals igl.per_face_normals(V, F, FN) igl.per_vertex_normals(V, F, igl.PER_VERTEX_NORMALS_WEIGHTING_TYPE_ANGLE, FN, VN) igl.per_edge_normals(V, F, igl.PER_EDGE_NORMALS_WEIGHTING_TYPE_UNIFORM, FN, EN, E, EMAP) # Plot the generated mesh update_visualization(viewer) viewer.callback_key_down = key_down viewer.core.show_lines = False viewer.launch()