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:
meshing_decimation_clustering (for point cloud simplification)
generate_surface_reconstruction_screened_poisson (poisson mesher)
meshing_decimation_quadric_edge_collapse (mesh simplification)
meshing_repair_non_manifold_edges (removing non-manifold edges)
compute_texcoord_parametrization_and_texture_from_registered_rasters (building textures)
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.