From fb5e2d7f85547706d436093e86cc289e174f674e Mon Sep 17 00:00:00 2001 From: Alan Morris Date: Thu, 5 Feb 2026 12:45:46 -0700 Subject: [PATCH] Resolve #2487 - Auto subset size in grooming should pick a smart auto auto (-1) defaults to a subset of 30 to avoid O(n^2) pairwise ICP on large datasets --- Libs/Groom/Groom.cpp | 2 +- Libs/Mesh/MeshUtils.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) 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();