Skip to content

Export Raster Layers to MeshLab

matlabbe edited this page Sep 3, 2021 · 16 revisions

RTAB-Map >=0.10.5 required Analytics

The goal of this tutorial is to export a low resolution mesh and cameras to MeshLab so we can generate a texture for the mesh. For convenience, I provide a mapping session, but you can try it with your own maps. The mapping session was done using the default parameters of RTAB-Map with a Xtion Live Pro using factory calibration (which has some distorsions over 3 meters). Here is an example of the results from this tutorial (without and with texture): Door without texture Door with texture

Here is an example of meshing with MeshLab without texturing: https://www.youtube.com/watch?v=N3YlncWbMto

Export to MeshLab

  1. Download this database: 2loops_workspace_3IT.db

  2. Open RTAB-Map

  3. Reset all parameters to default settings (Window->Preferences->General Settings (GUI)->Reset all settings)

  4. Open the download database 2loops_workspace_3IT.db

  5. Click on "Download all clouds (update cache)". Click OK for "Global map optimized". In the 3D Map view, you should see the point cloud like this: Point cloud without SBA

  6. Optional We will do a post-processing of the map to make it more straight. To do that, click on Tools->"Post-processing...". Set the parameters as below and click OK. Sparse Bundle Adjustment (SBA) will optimize the map with the camera positions and the matching visual features between the cameras. You will then get the point cloud as the third image. In some cases, the results may be worst with SBA, to revert post-processing, just click on Edit->"Download graph only" (with global optimized option). Detecting more loop closures give generally good results. If the environment has a lot of geometry, you can refine the links with ICP. Post-processing dialog Post-processing progress Point cloud with SBA

  7. We will now export the cameras. To limit the number of cameras exported, open the Preferences menu and under 3D Rendering, set the node filtering parameters as this and click "OK" (note that in latest versions, it is called "Pose filtering" under Cloud Filtering panel): Filtering cameras

  8. Click on File->"Export cameras in Bundler format (*.out)..."

  9. Create a directory bundler and select it. The exported format is the one used by Bundler and MeshLab can import it.

  10. On older versions, you will be asked to export the cloud/mesh, press "No" as we will export the mesh using more cameras in the next steps. Now you should have the bundler directory filled with cameras.out, list.txt and images directory.

  11. Open Preferences dialog again under 3D Rendering panel and uncheck "Node filtering", then press "OK": No filtering

  12. Click on File->"Export 3D clouds...". Restore settings, then configure the Export 3D clouds dialog like this: Export mesh dialog

  13. Wait until the generation of the mesh is done and save it (mesh.ply) in the bundler directory created previously: Export mesh

Import in MeshLab

  1. Open MeshLab (use latest version if possible so that instructions below match, tested on v2016.12)

  2. Click "Open project"

  3. In the "Open project file" dialog, select cameras.out inside the exported directory above.

  4. In the "Open image list file" dialog, select the list.txt.

  5. Click "Import mesh" and select the mesh.ply generated by RTAB-Map: Meshlab import

  6. Generating a texture requires that the model has only "manifold" edges. So remove them by clicking on Filters->Selection->"Select non-Manifold Edges", then click "Apply" and click on button "Delete current selected vertices..." (the one in the yellow circle below): Menu manifold

  7. Generate the texture by clicking on Filters->Texture->"Parametrization+texturing from registered rasters": Menu texture

  8. On the texture dialog, I just changed texture size to 2048 so have more resolution then press "Apply". Depending on your GPU, you could even create a larger texture (my laptop MeshLab crashes with a size of 4096 for example). You can see this video for more info. Create texture

  9. On latest MeshLab version, the texture is applied on the mesh directly when the generation is completed.

  10. To correctly see the texture on the mesh, you can turn off shading (click "None" on right panel): Color per face

  11. Here some results (without and with texture): Desks without texture Desks with texture

  12. You can show the cameras by clicking Render->"Show Camera". You can see this video for more info. Show cameras