diff --git a/src/user/user_mesh.cc b/src/user/user_mesh.cc index e03896ed..93c10004 100644 --- a/src/user/user_mesh.cc +++ b/src/user/user_mesh.cc @@ -3624,8 +3624,9 @@ void mjCFlex::CreateBVH() { elemaabb_[6*e+5] = 0.5*(xmax[2]-xmin[2]) + radius; // add bounding volume for this element + // contype and conaffinity are set to nonzero to force bvh generation const double* aabb = elemaabb_.data() + 6*e; - tree.AddBoundingVolume(e, contype, conaffinity, aabb, nullptr, aabb); + tree.AddBoundingVolume(e, 1, 1, aabb, nullptr, aabb); nbvh++; } diff --git a/test/user/user_flex_test.cc b/test/user/user_flex_test.cc index a43b93f0..492c4170 100644 --- a/test/user/user_flex_test.cc +++ b/test/user/user_flex_test.cc @@ -243,6 +243,27 @@ TEST_F(UserFlexTest, RigidFlex) { mj_deleteModel(m); mj_deleteData(d); } + +TEST_F(UserFlexTest, FlexNotCollide) { + static constexpr char xml[] = R"( + + + + + + + + )"; + std::array error; + mjModel* m = LoadModelFromString(xml, error.data(), error.size()); + ASSERT_THAT(m, NotNull()) << error.data(); + mjData* d = mj_makeData(m); + mj_step(m, d); + mj_deleteModel(m); + mj_deleteData(d); +} + TEST_F(UserFlexTest, BoundingBoxCoordinates) { static constexpr char xml[] = R"(