Bottlenecks in the toolchain -- next steps for meshing improvements


With the current tooling as it is, with enough memory, we can get through pretty large datasets up to merging depthmaps. This will become even more interesting with the addition of local bundling by default. Pau has done some interesting work here:

So, now I reach an issue with just creating a mesh from a 900 image dataset (without even using the new OpenSfM which should allow for really large datasets):

/home/gisuser/OpenDroneMap/build/bin/odm_meshing -inputFile /home/gisuser/ODMProjects/9hi/opensfm/depthmaps/merged.ply -outputFile /home/gisuser/ODMProjects/9hi/odm_meshing/odm_mesh.ply -logFile /home/gisuser/ODMProjects/9hi/odm_meshing/odm_meshing_log.txt -maxVertexCount 10000 -octreeDepth 5  samplesPerNode 1.0 -solverDivide 5
Illegal instruction (core dumped)

@pierotofy @dakotabenjamin – have you run into this issue, and if so what did you find? If not, any hunches where I should start troubleshooting? I suspect it’s an issue with large meshes with PCL, but that’s without poking under the hood.

And that gets to a question of approach – do we from here not mesh the whole large point cloud, but mesh in pieces, or do we fix the underlying issue?


Yes, I have had issues with PCL before, and I pushed some changes there to address it, but I don’t recall bringing those changes back to ODM.

IIRC it had to do with pointers and overflow.


Ah, this one here: I remember.


Fingers crossed, I patched it and am recompiling PCL. Should we be maintaining our own fork of PCL, like we do for mvs-texturing, or just go with releases and keep a little more current? Any strong opinions?


Ok! All the way on to odm_orthophoto, which is still running.


Ideally I think we should try to push the fix to PCL.


It’s merged into master on PCL already (back in December), but they haven’t had a release since August, so it’s not in any official version yet, hence the question about how best to fix this in ODM.


Ah I see. We could build from a certain commit instead of a release (by modifying External-PCL.cmake).