pub mod boolean;
pub mod builtin_attrs;
pub mod bvh;
pub mod conformal;
pub mod connectivity;
pub mod decimate;
pub mod deformation;
pub mod export;
pub mod geodesics;
pub mod geometry;
pub mod ids;
pub mod io;
pub mod linalg;
pub mod orientation;
pub mod parameterization;
pub mod primitives;
pub mod property;
pub mod query;
pub mod remesh;
pub mod storage;
pub mod subdiv;
pub mod test_util;
pub mod topology_ops;
pub mod traversal;
pub mod triangulation;
pub mod validate;
pub mod weld;
pub use boolean::{
BoolOp, boolean_difference, boolean_intersection, boolean_operation,
boolean_symmetric_difference, boolean_union,
};
pub use builtin_attrs::{
FaceNormal, VertexColor, VertexNormal, VertexUv, add_face_normals, add_vertex_colors,
add_vertex_normals, add_vertex_uvs, collect_vertex_colors, collect_vertex_normals,
collect_vertex_uvs, format_obj_with_attrs, install_vertex_attrs, parse_obj_with_attrs,
populate_face_normals, populate_vertex_normals,
};
pub use bvh::{Bvh, LEAF_MAX_FACES};
pub use conformal::{
apply_mobius_transform, compute_vertex_scale_factors, harmonic_map, mobius_to_center,
};
pub use connectivity::{
component_count, component_of_face, connected_components, extract_component, extract_faces,
merge_meshes, split_into_components, vertex_connected_components,
};
pub use decimate::{decimate_qem, decimate_to_vertices};
pub use deformation::{DeformationConstraint, arap_deformation, laplacian_deformation};
pub use export::mesh_to_vertex_index_buffers;
pub use geodesics::{
dijkstra_geodesic, dijkstra_multi_source_geodesic, dijkstra_shortest_path,
dijkstra_with_parent, geodesic_distance_from_vertex, multi_source_geodesic, shortest_path,
};
pub use geometry::{
AABB, EdgeLengthStats, MeshQualityStats, RayHit, VertexCurvature, all_gaussian_curvatures_par,
all_mean_curvatures_par, bilateral_smooth_mesh, closest_point_on_triangle, cotan_laplacian,
dihedral_angle, edge_length, edge_length_stats, face_area, face_aspect_ratio, face_min_angle,
face_normal, face_radius_ratio, feature_edges, feature_edges_par, gaussian_curvature,
is_feature_edge, laplacian_smooth_mesh, laplacian_smooth_mesh_par, laplacian_smooth_vertex,
mean_curvature, mesh_aabb, mesh_centroid, mesh_quality, mesh_volume, mesh_volume_par,
point_triangle_distance, polygon_area, polygon_normal, principal_curvatures,
ray_mesh_intersection, ray_mesh_intersection_par, ray_mesh_intersects,
ray_triangle_intersection, surface_area, surface_area_par, taubin_smooth_mesh,
vertex_curvature, vertex_normal, vertex_normals_par,
};
pub use ids::{EdgeId, FaceId, HalfEdgeId, VertexId};
pub use io::{
MeshError, ObjError, PlyError, StlError, build_mesh_from_polygons,
build_mesh_from_vertices_and_faces, format_obj, format_ply, format_stl_ascii,
format_stl_binary, load_mesh, load_obj, load_ply, load_stl, parse_obj, parse_ply,
parse_stl_ascii, parse_stl_binary, parse_stl_bytes, save_mesh, save_obj, save_ply,
save_stl_ascii, save_stl_binary,
};
pub use linalg::{SparseSystem, conjugate_gradient, regularize_diagonal};
pub use orientation::{are_normals_consistent, fix_orientations, is_orientable};
pub use parameterization::{
harmonic_parameterization, lscm, mvc_parameterization, tutte_embedding,
};
pub use primitives::{
build_cone, build_cube, build_cylinder, build_grid, build_torus, build_uv_sphere,
};
pub use property::{MeshProperties, PropertyHandle, PropertyStore};
pub use remesh::{RemeshStats, isotropic_remesh, quick_remesh, remesh_to_length};
pub use storage::{Face, HalfEdge, MeshStorage, Vertex};
pub use subdiv::catmull_clark::catmull_clark_subdivide;
pub use subdiv::loop_subdivide;
pub use subdiv::sqrt3::sqrt3_subdivide;
pub use test_util::build_icosphere;
pub use topology_ops::{
TopologyError, add_triangle, collapse_edge, collapse_edge_at, extrude_face, extrude_faces,
extrude_region, flip_edge, split_edge, split_face, validate_mesh,
};
pub use traversal::{
BoundaryLoop, BoundaryLoopLazy, EdgeIter, VertexAdjacentEdges, boundary_loops,
is_boundary_edge, is_boundary_vertex, is_closed,
};
pub use triangulation::{ear_clipping, ear_clipping_3d, fan_triangulation, fan_triangulation_3d};
pub use validate::{ValidationError, check_topology, validate_topology};
pub use weld::weld_vertices;