Skip to content

Export Raster Layers to MeshLab

matlabbe edited this page Sep 4, 2015 · 16 revisions

RTAB-Map 0.10.5 required

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

Export to MeshLab

  1. Download this database: 2loops_workspace_3IT.db

  2. Open RTAB-Map

  3. Open the download database 2loops_workspace_3IT.db

  4. 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

  5. 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

  6. 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": Filtering cameras

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

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

  9. 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.

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

  11. Click on File->"Export 3D clouds...". Configure the Export 3D clouds dialog like this: Export mesh dialog

  12. 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

  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. If not, you should export the mesh (File->"Export Mesh As...") with the "texture" checkbox checked in the export dialog.

  10. To correctly see the texture on the mesh, you should set Render->Color->"Per Face": 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