Meshroom CL – The best free photogrammetry software now works without Nvidia

A little while ago I wrote about COLMAP-CL, a fork of the original project re-written so as to remove the reliance on CUDA, and therefore Nvidia GPUs.

Now, from the same source, OpenPhotogrammetry on Github, comes Meshroom-CL. It’s still in pre-release, at version 0.7, but I gave it a run through on my work iMac (running Windows in BootCamp) and it went all the way through to a textured mesh. That part in parentheses is important – there’s just windows binaries available, as well as the source code. So you can run it on a mac, but you can’t run it on MacOS (at least not without parallels or a VM).

Meshroom, running from start to finish on a mac (via bootcamp and Windows 10), with no Nvidia in sight.

There’s some minor changes, so I’ll take you through my experience with my go-to standard dataset:

Sparse reconstruction, dense in progress…

It looks very similar, but those that have used Meshroom a lot in the past will notice that the default graph is much simpler, there’s now only 5 nodes: CameraInit, StructureFromMotionCL, MultiviewStereoCL, MeshFiltering, and TexturingCL:

Default graph in MeshroomCL

Compare that to ‘normal’ Meshroom, where the default graph has many, many more nodes, splitting SfM and dense reconstruction into several stages:

The default graph in ‘normal’ Meshroom

Great, I’m all for simplicity! Though some of these nodes are currently lacking options, e.g. Texturing can only produce multiple texture files, it can’t use LSCM or ABG unwrapping to produce a single texture file (more on that below).

For StructureFromMotionCL and MultiViewStereoCL, you need to check the box that says to use OpenCL GPUs:

Specify those OpenCL devices

However, when running I didn’t see much usage of the GPU (a Radeon Pro 580 in the iMac), maybe 15% utilization, some of which was coming from simply having the 3D viewer open in Meshroom. Similarly, the graphs in the ‘statistics’ view for each node showed no GPU listed, and no GPU usage:

MeshroomCL reporting no GPU, and no usage of such.

I don’t know if it was running entirely on the CPU, or if there was some usage of the GPU and it’s not yet been fully implemented into the reporting in MeshroomCL. Here’s task-manager during the SFM node processing:

So, here’s the timings:

Camera init: 1.54 seconds
SFM: 7 min, 40.2 seconds
MultiviewStereo: 1 hr, 19 min, 43.7 seconds
Texturing: 2 min, 24 seconds <- no option for anything but multitile (made 94)

Total time: just under 1 and a half hours.

For context, my home computer ran the full pipeline of ‘normal’ Cuda-based Meshroom 2021.1 in 1 hr 5 minutes. So this is a bit slower, but if it’s not yet running on the GPU to any great extent, that’s not unexpected.

The final model looked excellent:

Final textured model in Meshroom

However, on closer inspection in Blender, it became apparent that some of the normals on the mesh were a bit off, creating a rough-like appearance when viewed flat, or with ray tracing:

The model with a single point-light in Cycles notice how the light doesn’t seem to affect some triangles, giving it a rough, pitted appearance.
The model in flat lighting. Notice the rough appearance to the mesh in places.

You can inspect the model for yourself on sketchfab:

Conclusion

This is great – Meshroom is my favourite open source photogrammetry software. COLMAP can be a little faster, or get a bit better model sometimes, but getting a good, textured mesh is a pain that requires additional software, Meshroom takes you from photos to textured model with a single drag and drop of photos, then a click of the start button. The Texturing node is the biggest draw back for me at the moment, I need single image files for textures for my workflows, and having to unwrap and retexture a model subsequently is a massive pain. There’s also the fact that for me it didn’t seem to be using the GPU, that’s less of an issue, because yes it does take longer, but it still finishes in a reasonable time, and if running over night or while doing something else, it’s not too much of an issue. If speed is of importance to you, you really need to fork out the cash and use either Metashape or Reality Capture.

Above all though, remember this is just version 0.7, and it’s still under active development (in fact, between collecting the examples above yesterday, and writing the post today, I noticed that v0.7.1 was released). That means there’s still scope for lots of improvements, and I can’t wait to see where it goes.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Website Built with WordPress.com.

Up ↑