Just found this post because I had the same Issue and from your component naming a very similar idea ^^
I tried the same with a StaticMesh as source for generating a ProceduralMesh and it also has fallen through the ground.
After debugging I found out, that the CollisionConvexElems array of the mesh was empty. So I checkt what is responsible for setting this up and well I’m responsible for it . Maybe like you I thought just set ‘true’ in CreateMeshSection is enough and the physical object is created automatically but no you have to do it by hand. But their is, at least for static meshes, a very simple solution for it:
// Iterate over all convex hulls on static mesh..
const int32 NumConvex = StaticMesh->GetBodySetup()->AggGeom.ConvexElems.Num();
for (int ConvexIndex = 0; ConvexIndex < NumConvex; ConvexIndex++)
{
// Copy convex verts to ProcMesh
FKConvexElem& MeshConvex = StaticMesh->GetBodySetup()->AggGeom.ConvexElems[ConvexIndex];
ProceduralMesh->AddCollisionConvexMesh(MeshConvex.VertexData);
}
You need to get the BodySetup from your origin mesh and put them into the procedural mesh. (This is by the way from the KismetProceduralMeshLibrary.cpp which I now use because it does exactly what I need, sadly no out of the box functions for SkeletalMesh )
So conclusion for everyone else who might find this in future, it isn’t enough to create/copy all the structure for rendering, you also have to create/copy the structure for physics manually!
Happy Coding!