From 7a26a23ec77a69d7e37bec8aeed193084854d0ee Mon Sep 17 00:00:00 2001 From: jean_patrick_mathes <uomnk@student.kit.edu> Date: Wed, 28 Sep 2022 17:16:04 +0200 Subject: [PATCH] Determine cloned object offset with OOBBs --- .../components/InteractiveMemoryEditor/Editor.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp b/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp index 3528d1455..13dc8abce 100644 --- a/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp +++ b/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp @@ -282,7 +282,7 @@ namespace armarx auto& [name, change] = *iterator; description.options.emplace_back("Reset"); - description.resetIndex = currentIndex++; + description.resetIndex = currentIndex; // ++ description.transform = change.transform; @@ -315,9 +315,19 @@ namespace armarx objpose::ObjectPose& newPose = newPoses.emplace_back(object); newPose.objectID = object.objectID.withInstanceName(object.objectID.instanceName() + suffix); + const float minOffset = 100; + float offset = minOffset; + if (object.localOOBB.has_value()) + { + Eigen::Vector3f size = object.localOOBB.value().corner_max() - object.localOOBB.value().corner_min(); + float objectOffset = size.maxCoeff() / 2; + + offset = std::max(minOffset, objectOffset); + } + Change& clonedChange = changed[newPose.objectID.str()]; clonedChange.kind = CREATE; - clonedChange.transform = Eigen::Affine3f(Eigen::Translation3f(1000, 1000, 1000)).matrix(); + clonedChange.transform = Eigen::Affine3f(Eigen::Translation3f(offset, offset, offset)).matrix(); clonedChange.iterator = std::prev(newPoses.end()); auto iterator = changed.find(object.objectID.str()); -- GitLab