MLoDscope is a software that implements the "Moving Level-of-Details surfaces", which is a surface approximation technique for point clouds, check it's reference here. The software offers an interactive graphical user interface that enables users to test the MLoD technique on .ply point clouds.
The software is self contained and requires no external packages. All dependent libraries can be found in the external folder and are comprised of:
Run the following commands:
$ git clone --recurse-submodules git@github.com:Master2-IAFA/15101051.git
$ cd 150101051
$ mkdir build && cd build
$ cmake ..
$ make -j 8
The software has been compiled and tested on Ubuntu 22.04 and Windows 11.
The following image shows the customized polyscope gui.
the 3D - 2D radio buttons allow the user to change the rendering mode.
All files contained in the asset directory are listed in the scroll-menu. A file can be loaded by clicking its name in the menu and pressing the load button.
It is worth noting that files are loaded as 3D point clouds no matter the rendering mode, the 2D mode simply ignores the Z coordinate. It is up to the user to check consistency for fitting purposes.
- Depth slider : allows to display the nodes of the current octree at a given depth
- Max Depth + fit : pressing the fit button generates a new octree on the current point cloud with a given max depth and blends all the nodes' statistics
The user can display the sphere fit from the statistics of any single tree node. To do so, the max depth slider must be set to its correct value. Then, the user can choose a specific node through specifying its depth and idx and pressing the "show sphere" button.
- sample random points : generates as many points as indicated in the corresponding slider value inside the bounding box of the current point cloud
- show root's sphere stat : displays the bounding box's protection sphere (The lambda parameter is multiplied by the bounding sphere's radius to give the protection sphere's radius)
- fit : runs one fitting iteration on all sampeled points using the lambda and kernel given parameters
- iterative fit : runs the given number of succesive fitting iteration
A slider appears after fitting. It allows to see the projection of the sampeled points from their original positions.
Warning : running a fit requires sampeled points!
- Clear Random Pc : removes the sampeled points
- Randomize and fit : generates one point sample inside the bounding box, fits its algebraic sphere and projects it on it. The point, the sphere and the traversed octree nodes are, then, displayed
Two kernels are available. Kernels are use to determine the influence of the points ( or nodes ) from the point cloud on the point q being projected, based on their respective distances.
The first kernel is a Gaussian Mixture:
- k, the number of Gaussian
- sigma, the sigma value of the first Gaussian
-
a, a scale factor for sigma apply on each gaussian (
$\sigma_{i} = a^i * sigma$ )
The second one is a rational kernel:
-
$\epsilon$ , if epsilon equals 0, it will result in an interpolating surface - k