Dependencies

VirtualRocks has a lot of dependencies (libraries + subprocesses) in order to run properly.


Colmap

VirtualRocks depends on Colmap, an open source general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline software. By running commands in Colmap’s command-line interface as subprocesses, VirtualRocks turns the imported images into a point cloud and texture with the touch of a button.

The commands used in Matcher.py’s image2dense function include:

  • feature_extractor: extracts different features from the images.

  • exhaustive_matcher: Perform feature matching after performing feature extraction.

  • mapper: Sparse 3D reconstruction / mapping of the dataset using SfM after performing feature extraction and matching.

  • image_undistorter: Undistort images and/or export them for Multi-View Stereo or to external dense reconstruction software, such as CMVS/PMVS.

  • patch_match_stereo: the longest step, Dense 3D reconstruction / mapping using MVS after running the image_undistorter to initialize the workspace.

  • stereo_fusion: Fusion of patch_match_stereo results into to a colored point cloud.

  • model_converter: Convert the COLMAP export format into PLY.

Descriptions for each command taken from Colmap’s documentation.

To learn more about Colmap, check out their documentation: Colmap Documentation


Pymeshlab

VirtualRocks depends on pymeshlab, a Python library that interfaces to MeshLab, to make 3D meshs from point clouds and image data.

Note

Pymeshlab often changes filter names when updated. Their current list of filters (including functionality and name) can be found here.

As of initial release, the some of the critical filters in Mesher.py’s dense2mesh function include:

To learn more about pymeshlab, check out their documentation: pymeshlab Documentation

To learn more about MeshLab, check out their documentation: MeshLab Website


open3d

While not critical to the main functionality of the app, the open3d library lets users view the point cloud before turning it into a 3D mesh.

The controls for the open3d window, taken from the open3d documentation: open3d controls

To learn more about open3d, check out their documentation: open3d Documentation


Additional libraries

VirtualRocks depends on other python libraries, including Ttkbootstrap, plyfile, show_in_file_manager, and matplotlib. While less critical to the core functionality of the app, each of these libraries help to create the app style and allows the app to run smoothly.