3 #include <SimoxUtility/shapes/AxisAlignedBoundingBox.h>
4 #include <VirtualRobot/CollisionDetection/CollisionModel.h>
5 #include <VirtualRobot/ManipulationObject.h>
6 #include <VirtualRobot/Visualization/TriMeshModel.h>
7 #include <VirtualRobot/math/Helpers.h>
15 const std::string& objectClassName) :
16 object(object), objectClassName(objectClassName)
23 return object->getGlobalPosition();
31 object->setGlobalPose(pose);
45 object->setGlobalPose(pose);
51 VirtualRobot::TriMeshModelPtr triMesh =
object->getCollisionModel()->getTriMeshModel();
53 std::vector<VirtualRobot::MathTools::TriangleFace>
const& faces = triMesh->faces;
54 std::vector<Eigen::Vector3f>
const& vertices = triMesh->vertices;
57 semrel::TriMesh result;
59 for (VirtualRobot::MathTools::TriangleFace
const& face : faces)
61 Eigen::Vector3f v0 = vertices.at(face.id1);
62 Eigen::Vector3f v1 = vertices.at(face.id2);
63 Eigen::Vector3f v2 = vertices.at(face.id3);
65 Eigen::Vector3f normal = face.normal;
67 semrel::TriMesh::Triangle triangle;
68 triangle.v0 = result.numVertices();
70 triangle.v1 = result.numVertices();
72 triangle.v2 = result.numVertices();
75 int n = result.numNormals();
79 result.addNormal(normal);
81 result.addTriangle(triangle);
90 const VirtualRobot::BoundingBox& bb =
91 object->getCollisionModel()->getTriMeshModel()->boundingBox;
92 return {bb.getMin(), bb.getMax()};
98 const std::vector<Eigen::Vector3f> vertices =
99 object->getCollisionModel()->getModelVeticesGlobal();
102 for (Eigen::Vector3f
v : vertices)
107 return {aabb.limits()};
110 std::shared_ptr<btCollisionShape>
127 return object->getName();