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"(