diff --git a/Libs/Groom/Groom.cpp b/Libs/Groom/Groom.cpp index e5b2a4ac55..0b0f24ab9a 100644 --- a/Libs/Groom/Groom.cpp +++ b/Libs/Groom/Groom.cpp @@ -560,7 +560,7 @@ bool Groom::run_alignment() { bool any_alignment = false; int reference_index = -1; - int subset_size = -1; + int subset_size = base_params.get_alignment_subset_size(); // per-domain alignment for (size_t domain = 0; domain < num_domains; domain++) { diff --git a/Libs/Mesh/MeshUtils.cpp b/Libs/Mesh/MeshUtils.cpp index 2468230ecb..fdf69958b1 100644 --- a/Libs/Mesh/MeshUtils.cpp +++ b/Libs/Mesh/MeshUtils.cpp @@ -182,6 +182,10 @@ PhysicalRegion MeshUtils::boundingBox(const std::vector& meshes, bool cent } int MeshUtils::findReferenceMesh(std::vector& meshes, int random_subset_size) { + // auto (-1) defaults to a subset of 30 to avoid O(n^2) pairwise ICP on large datasets + if (random_subset_size < 0) { + random_subset_size = 30; + } bool use_random_subset = random_subset_size > 0 && random_subset_size < meshes.size(); int num_meshes = use_random_subset ? random_subset_size : meshes.size();