#pragma once #include #include #include #include using grid_region = std::pair, Eigen::Vector>; void extract_vertex_infos(const s_settings& settings, const baked_blobtree_t& tree, scene_bg_mesh_info_t& scene_bg_mesh_info, flat_hash_map_mp& vertex_infos, stl_vector_mp& vertex_exist_regions); void pair_tetrahedron(const scene_bg_mesh_info_t& scene_bg_mesh_info, const stl_vector_mp& vertex_exist_regions, stl_vector_mp>& tetrahedrons, flat_hash_map_mp>& vertex_to_tet_mapping); void filter_tet_by_subface(const flat_hash_map_mp>& vertex_to_tet_mapping, flat_hash_map_mp& vertex_infos, stl_vector_mp>& tetrahedrons, stl_vector_mp& tetrahedron_active_subface_start_index, stl_vector_mp& active_subface_indices, flat_hash_map_mp>& zero_vertex_to_incident_tet_mapping); // in turn: num_1_func, num_2_func, num_more_func std::array compute_implicit_arrangements(const flat_hash_map_mp& vertex_infos, const stl_vector_mp>& tetrahedrons, const stl_vector_mp& tetrahedron_active_subface_start_index, const stl_vector_mp& active_subface_indices, stl_vector_mp& tetrahedron_arrangements); // extract iso-mesh (topology only) void extract_iso_mesh(const std::array& tet_active_subface_counts, const stl_vector_mp& tetrahedron_arrangements, const scene_bg_mesh_info_t& scene_bg_mesh_info, const stl_vector_mp>& tetrahedrons, const stl_vector_mp& tetrahedron_active_subface_start_index, const stl_vector_mp& active_subface_indices, const flat_hash_map_mp& vertex_infos, stl_vector_mp& iso_pts, stl_vector_mp& iso_verts, stl_vector_mp& iso_faces);