# ESILab: An efficient software for immersion and exploitation of large point clouds

El Mustapha Mouaddib, Jordan Caracotte, Dorian Kempf, Noël Villette, Thibault Potin

► To cite this version:

El Mustapha Mouaddib, Jordan Caracotte, Dorian Kempf, Noël Villette, Thibault Potin. ESILab: An efficient software for immersion and exploitation of large point clouds. Digital Heritage (DH) World Congress, Université de Siene, Sep 2025, Siene, Italy. 10.2312/dh.20253342 . hal-05298595

HAL Id: hal-05298595

https://hal.science/hal-05298595v1

Submitted on 6 Oct 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# ESILab: An efficient software for immersion and exploitation of large point clouds

El Mustapha Mouaddib<fnref n="1" />, Jordan Caracotte<fnref n="1" />, Dorian Kempf<fnref n="1" />, Noël Villette<fnref n="1" />* and Thibault Potin<fnref n="1" />*

## Abstract

Digitization techniques now make it possible to produce precise and dense textured 3D point clouds. Therefore, 3D surveys of monuments or archaeological sites can easily reach several billions of points. To ensure a smooth virtual visit and to manipulate these point clouds, we have developed the ESILab software (Enhanced Scan Immersion Lab). Thanks to a dedicated 3D model converter using an octree partitioning of the point cloud and the accessibility of rendering engine parameters, ESILab can load a 3D model containing several billion points in just a few seconds. It also makes it possible to load multiple point clouds, superimpose them and extract slices for relevant comparisons and visualizations. The point clouds of six famous and very large French Gothic monuments were used simultaneously to demonstrate the software's potential†. This software can be shared free of charge upon request right now and will be made available to the public as soon as possible.

## 1. Introduction

Digitization techniques such as photogrammetry and lasergrammetry now make it possible to produce precise and dense textured 3D point clouds. This results in a significant gain in the quality and realism of the renderings. To achieve this realism, the software used to exploit the point clouds thus obtained must be able to manage billions of points. Several existing software were initially designed as toolboxes consisting of powerful algorithms to apply processing, meshing and comparisons on point clouds. Unfortunately, these softwares cannot manage clouds beyond a few billion points. We briefly describe these softwares in section 2. To overcome this limitation, we developed the ESILab software (Enhanced Scan Immersion Lab), dedicated primarily to the manipulation of very large point clouds, as well as a tool for converting point clouds into structured clouds that are quick to load and manipulate. It was developed to meet our internal needs for the exploitation of point clouds from major and very large monuments in France and abroad, such as Gothic cathedrals and archaeological sites. It was then enhanced through the numerous multidisciplinary collaborations we conduct with the aim of studying, understanding, and establishing diagnostics of these monuments, and creating usable deliverable. ESILab was designed by computer vision and robotics researchers to meet the many needs of archaeologists, architects, and architectural historians. Thanks to the octree organisation of the point cloud (see section 3) and the accessible settings of the rendering engine parameters, ESILab allows to load a 3D model having several billion points in a few seconds. It also allows to load multiple point clouds and superimpose them, making full use of the native resources of

the computer on which it runs. Direct access to the rigid transformation matrices of each point cloud via text files and/or the interface allows you to specify the point cloud's pose. This makes it easy and precise to superimpose and compare models. It allows rendering using perspective, orthographic, and equirectangular cameras. These cameras are configurable either via the graphical interface or via text configuration files. This allows to access the horizontal and vertical focal lengths separately, image size and their equivalent parameters known in the computer vision and robotics community as intrinsic parameters. ESILab has other features such as:

* Smooth navigation through very large point clouds.

* Multiple camera parameter settings to meet both traditional needs (field of view, focal length, image size, etc.) and the needs of computer vision specialists (intrinsic camera parameters).

* In addition to perspective and orthographic cameras, ESILab offers equirectangular mode, which allows renderings equivalent to those of spherical cameras, now widely used for virtual tours.

* Immersive navigation.

* Numerous rendering engine settings and customization for each 3D model.

* Access to model positions and orientations.

* Non-rigid transformations (axis inversion, scale) via the interface and the ability to apply any other transformation via configuration files (see section 3.2).

ESILab is not yet another software, redundant with existing solutions, but rather a complementary tool. This article presents arguments justifying this claim. Its source code and some precompiled versions will be freely distributed.

<footnote n="1">¹University of Picardie Jules Verne, MIS lab, Amiens, France</footnote>

<footnote>*Former member</footnote>

<footnote>† A video of the demonstration can be found at this [link].</footnote>
<table><caption>**Table 1:** Comparison of existing software solutions with ESILab.</caption><thead><tr><td>Software</td><td>Points per cloud</td><td>Conversion required?</td></tr></thead><tbody><tr><td>MeshLab</td><td>Tested up to 100M</td><td>No</td></tr><tr><td>CloudCompare</td><td>2B</td><td>No</td></tr><tr><td>Potree</td><td>2<sup>16</sup> (2.1B)</td><td>Yes</td></tr><tr><td>ESILab</td><td>Tested up to 84B</td><td>Recommended</td></tr></tbody></table>

## 2. Existing softwares solutions

Numerous software solutions are available to visualize and handle the dense point clouds obtained after digitization of large structures. Three of these programs are regularly mentioned in the literature [BU21, CPRDL24], are still being developed and can be freely used: MeshLab, CloudCompare and Potree. MeshLab [CCC*08] enables the visualization and editing of meshes constructed from point clouds. Numerous proofs of concept have recently been added to extend the capabilities of this tool. The software is powerful while not optimized for large models. CloudCompare [Clo25] can be used to visualize and perform various operations on point clouds (editing, registration, computation of metrics). It features spatial octree partitioning, which limits the number of points displayed while moving around, thus reducing cost of rendering the cloud. Octree cells are then displayed gradually when the viewpoint is stationary, until the computer's graphics resources are saturated. Potree [SOW20] enables the remote visualization and exploration of large point clouds in a web browser. Before being rendered, the point cloud must be converted to the format supported by Potree via the PotreeConverter software: a spatial octree partitioning is performed. In version 2.1.1, PotreeConverter handles point clouds with a maximum of 2¹⁶ points, due to a limitation of the LAS1.3 standard. This limitation can be overcome by splitting the cloud into two sub-clouds, but the resulting multi-resolution clouds will not be strictly equivalent to the multi-resolution version of the full cloud. When the cloud is displayed, the octree cells are progressively displayed until the budget point is saturated: we tested this with a cloud of 1 billion points, and the browser became unstable, but the screen was updated. Table 1 compares the solutions listed with the tool introduced in this article on two criterias: the maximum number of points per cloud and the requirement to convert the point cloud before rendering it. These tools offer the first steps towards editing and rendering point clouds comprising several billion of them. However, to increase the number of points supported or displayed, to apply a simple rigid transformation to a huge cloud and quickly check the result, to explore it in virtual reality or, for example, to simulate panoramic images from it, a more specific tool is required.

## 3. Software presentation

In this section, we present ESILab and its dedicated converter, which enables point clouds to be loaded and explored very quickly and efficiently. Both tools have been developed in C++ language and tested on Android, Linux and Windows.

### 3.1. 3DModelConverter: pre-processing of large point clouds

Enabling the visualization of high-resolution point clouds in applications such as virtual tours, where user immersion is paramount,

requires optimizing on-screen rendering. This ensures that only the necessary data is displayed, allowing for efficient processing and real-time interaction without overwhelming computational resources. Levels of Detail (LoD) play a critical role in optimizing memory and rendering efficiency in point clouds. By dynamically adjusting resolution based on the user's viewpoint, LoD ensures that only the most relevant regions are displayed with high detail, while peripheral or occluded areas are represented with fewer points. This significantly reduces computational overhead and memory footprint, enabling real-time interaction with large-scale point clouds. QSplat [RL00] employs a hierarchical, spherical representation of the point cloud, allowing for progressively coarser representations as the distance from the viewer increases. This adaptive refinement tailors the level of detail to the user's perspective, minimizing unnecessary computations in out-of-focus areas. Building on this concept, the use of octrees in Sequential Point Trees [DVS03] introduces an efficient spatial partitioning scheme, where each node recursively subdivides space, enabling selective rendering of regions at varying levels of detail. The hierarchical nature of octrees is particularly well suited for large-scale point clouds, as it allows for scalable data loading according to zoom level and view frustum constraints. Instant Points [WS06] extends this approach by integrating LoD within a nested octree structure, leveraging GPU optimizations to distribute rendering tasks. This reduces CPU workload and enhances interactive rendering of extremely large point clouds. Further advancements have been made with Modifiable Nested Octrees (MNO) [Sch14], which optimize point cloud editing for massive datasets. Unlike traditional nested octrees that store points within internal octrees, the MNO employs a regular grid to manage points within each node. This simplifies editing operations such as insertion and deletion by eliminating the need for complex internal reorganization. Additionally, MNO retains the benefits of interactive rendering by integrating LoD, efficiently managing memory, and culling points outside the viewing frustum. Potree [SOW20] adopts a similar strategy, but maintains a minimum distance between points at each level thanks to a Poisson-disk approach, guaranteeing homogeneous distribution in the cloud and improving rendering quality. The result is a uniform subsampling strategy that preserves spatial consistency, providing an optimized and non-redundant representation of the point cloud.

To overcome the limitations and constraints of existing converters, we introduce 3DModelConverter, a software tool that converts a point cloud into an octree and provides three methods for distributing points across its LoD: random distribution, voxel grid-based sampling, and KD-tree-based selection. The number of LoD levels is user-defined, with each level representing a subsample of the point cloud—sparser near the root and increasingly denser toward the leaves.

**Random distribution** quickly determines whether a point is retained at a level or moved to the next. While time-efficient, it does not guarantee a uniform distribution. In fact, denser regions typically closer to the sensor, retain more points, whereas distant areas become sparser.

**Voxel grid distribution** involves a voxel filter that divides the point cloud into equal-sized cubes, called voxels, retaining only one point per voxel. The choice of this retained point can vary: it can be
<figure><img src="image_2.png" /><figcaption>**Figure 1:** Comparison of the subsampling distributions applied on the Arch point cloud. First row: full cloud (23M points) and random distribution; Second row: voxel grid-based and KD-tree-based distributions. The last three clouds contain 400k points each. Perception of detail changes according to the distribution.</figcaption></figure>

selected at random, or chosen as the point closest to the center of the voxel, which is more costly in terms of computation but provides a more structured representation of the cloud. Compared to the random distribution method, voxel filtering produces a more uniform point distribution, as distant regions of the cloud are proportionately represented. This ensures that all parts of the cloud maintain a similar density of points, offering a consistent LoD throughout the structure.

**KD tree distribution** relies on a KD tree to identify neighboring points within a defined radius around a search point, transferring these neighbors into more detailed octree layers. This approach is comparable to Poisson-disk sampling used in [SOW20] and produces the most uniform distribution. However, it is also the most computationally intensive. Building a KD tree for the entire cloud and finding neighbors for each selected point becomes more expensive as the size of the cloud increases. Despite its computational requirement, this method achieves a balanced spacing between points, guaranteeing an extremely consistent and accurate representation.

These three strategies, also available in CloudCompare [Clo25], are applied to the Arch dataset‡ and the figure 1 shows the obtained results with our 3D model converter. The differences induced by the three strategies have very little impact on human perception of the renders. However, they strongly impact automatic descriptor extraction algorithms. Finally, and as an indication, the conversion time for 2.2 billion points in OCTI, a custom file format detailed below, is approximately one hour and three hours for 7.12 billion points (268Go).

## 3.2. Main features of ESILab

In its version 2.8.0, ESILab can read three different input file formats: Leica Cyclone PTS, Wavefront OBJ, and a custom file format called OCT(I). This last format has two variations depending on the presence or absence of the measurement intensity for each 3D point. In the file *pointcloud.octi*, each 3D point is defined by its coordinates in space (X,Y,Z), its color in RGB format as well as the intensity measured at this point. In the file *pointcloud.oct*, the measured intensity is not present. Each of these two files is accompanied by a file *listOctree.txt* which lists all the non-empty cells. The cells of the octree partitioning are managed by an adapted version of the source code of PotreeConverter 1.7 [Sch14]. For each level of the partitioning, the points of the cloud are attributed using one of the sub-sampling methods presented in section 3.1. The rigid transformation matrix describing the transformation between each object frame (point cloud, mesh) and the world frame is stored in a text file. It also contains all the saved camera poses. Several other rendering parameters are adjustable for each object, like visibility, color, opacity, point size and resolution (octree level). The graphic rendering can be done using an usual perspective camera, an orthographic camera, or an equirectangular projection, which simulates the spherical cameras now widely used for virtual tours. Moreover, the immersive experience is possible. All these cameras have adjustable classical parameters (field of view, focal length, image size, etc.) and also their equivalent used in computer vision applications (intrinsic parameters). ESILab offers also the possibility to extract massive slices of the 3D models included in a given interval with a certain thickness and a step of slicing. Any slice direction can be chosen by positioning the camera perpendicular to the slice plan. The slices poses are exported along with the images and allow them to be located relatively to the 3D model frame.

## 4. Results

In this section, we showcase the tool's capabilities in loading and exploiting simultaneously several large point clouds of famous French Gothic cathedrals: Laon, Notre-Dame de Paris, Chartres, Bourges, Amiens, and Beauvais. The total number of points is around 84 billions points. The characteristics of these point clouds are summarized in Table 2. Each monument is divided into partial clouds to facilitate its management and avoid memory saturation during the point clouds processing, sampling and registration. The partial point clouds can be registered by any external method. For the very challenging point cloud registration, the reader can refer to the method developed for Notre-Dame de Paris point cloud registration detailed in [MPPDGM24]. The alignment can also be manually adjusted using ESILab user interface. When it is done

<table><caption>**Table 2:** Cathedrals characteristics. For each cathedral, the city, the assumed year of the beginning of the construction and the number of 3D points in billions are specified.</caption><thead><tr><td>City</td><td>Construction year</td><td>Points count (billions)</td></tr></thead><tbody><tr><td>Laon</td><td>1155</td><td>14.2</td></tr><tr><td>Paris</td><td>1160</td><td>7.7</td></tr><tr><td>Chartres</td><td>1165</td><td>10.5</td></tr><tr><td>Bourges</td><td>1165</td><td>16.4</td></tr><tr><td>Amiens</td><td>1220</td><td>28.2</td></tr><tr><td>Beauvais</td><td>1225</td><td>6.3</td></tr></tbody></table>

<footnote>‡ The Arch dataset can be found at this [link].</footnote>
<figure><img src="image_3.png" /><figcaption>**Figure 2:** *Horizontal alignment of six french Gothic cathedrals.*
*The alignment follows the order of the Table 2.*</figcaption></figure>

by external tools, the results of this registration (an homogeneous matrix or the euler angles and the position) can be imported. The partial point clouds of each cathedral are stored in the same folder which can be read with one click. Thanks to the conversion done by our 3DModelConverter (see section 2), loading a cloud of each cathedral, takes only a few seconds. To demonstrate the efficiency of ESILab the six cathedral point clouds have been aligned in ascending order of their construction date (Fig. 2) and they have been vertically positioned to force the grounds to same altitude. We inserted a sign (created in the form of a textured map whose image includes the name and supposed year of construction) near each cathedral. Then, the digital twins of the six cathedrals are explored by interpolating a trajectory between key points defined using the user interface. A video of the exploration is available at the following this [link].

As the 3D model of each monument has been divided into partial point clouds, they can be viewed individually. We use this capability to display only the point clouds of cathedral interiors in Fig. 3 (top), revealing the evolution of vault heights in the main choir aisles of the famous monuments, over the decades, from the beginning the Gothic period 1160 to 1225. Fig. 3 (bottom) also

<figure><img src="image_4.png" /><figcaption>**Figure 3:** *Vertical and horizontal slices of the six cathedrals. Vertical slice reveals the evolution of the vault height (top). Horizontal slice (2m above ground level) shows the blueprints of the six cathedrals (bottom).*</figcaption></figure>

shows the blueprints of each cathedral, simultaneously obtained using only one horizontal slice. These experiments were carried out on a dedicated computer using 256 GB of RAM and an NVIDIA K6000 graphics card, loading up to 84B points and displaying up to 800M. To test the efficiency of the software, we successfully reproduced the experiment with a laptop using 64 GB of RAM and an NVIDIA RTX 3080 graphics card, loading up to 72B points (1,2 To), only limited by the computer's storage.

## 5. Conclusion

ESILab has been primarily designed for visualizing very large point clouds. Thanks to its developed 3D model converter, loading multiple point clouds takes just a few seconds. This also allows loading clouds whose sizes are limited only by memory and graphics capacity of the used computer. But, the 3D engine's settings allow rendering to be adapted to the limitations of the used computer. The numerous settings (via the interface or text files) make the use of multiple clouds flexible and efficient. The ability to retrieve poses via files allows for the use of registration or automatic positioning results. We have demonstrated its usefulness and effectiveness through the use cases presented in section 4. In the interests of interoperability, we will soon support the Potree 2.x file format for the conversion and rendering. ESILab will be shared along with its 3D rendering core, Engine3D. This core component is intended for users who wish to benefit from the implementation of the rendering engine in their own software.

**ACKNOWLEDGMENT** This project is funded by Région Hauts-de-France, CPER and Fond FEDER.

## References

[BU21] BENCHEKROUN S., ULLAH I. I. T.: Preserving the past for an uncertain future: Accessible, low-cost methods for 3-d data creation, processing, and dissemination in digital cultural heritage preservation. In *Proc. of the 26th Int. Conf. on 3D Web Technology* (2021), pp. 1–9. 2

[CCC*08] CIGNONI P., CALLIERI M., CORSINI M., DELLEPIANE M., GANOVELLI F., RANZUGLIA G.: MeshLab: an Open-Source Mesh Processing Tool. In *Eurographics Italian Chap. Conf.* (2008), Scarano V., Chiara R. D., Erra U., (Eds.), The Eurographics Association. 2

[Clo25] CloudCompare (version 2.13.2) [GPL software], 2025. Retrieved from http://www.cloudcompare.org/. 2, 3

[CPRDL24] COMTE F., PAMART A., RÉBY K., DE LUCA L.: Strategies and experiments for massive 3d digitalization of the remains after the notre-dame de paris' fire. In *10th Int. Workshop 3D-ARCH" 3D Virtual Reconstruction and Visualization of Complex Architectures"* (2024), vol. 48, pp. 127–134. 2

[DVS03] DACHSBACHER C., VOGELGSANG C., STAMMINGER M.: Sequential point trees. *ACM Trans. on Graphics* 22, 3 (2003), 657–662. 2

[MPPDGM24] MOUADDIB E. M., PAMART A., PIERROT-DESEILLIGNY M., GIRARDEAU-MONTAUT D.: 2D/3D data fusion for the comparative analysis of the vaults of Notre-Dame de Paris before and after the fire. 221–231. 3

[RL00] RUSINKIEWICZ S., LEVOY M.: QSplat: A multiresolution point rendering system for large meshes. In *Annual Conf. on Computer Graphics and Interactive Techniques* (2000), pp. 343–352. 2

[Sch14] SCHEIBLAUER C.: *Interactions with gigantic point clouds*. PhD thesis, Technische Universität Wien, 2014. 2, 3

[SOW20] SCHÜTZ M., OHRHALLINGER S., WIMMER M.: Fast out-of-core octree generation for massive point clouds. *Computer Graphics Forum* 39, 7 (Nov. 2020), 13. 2, 3
[WS06] WIMMER M., SCHEIBLAUER C.: Instant Points: Fast Rendering of Unprocessed Point Clouds. In *PBG@ SIGGRAPH* (2006), pp. 129–136. 2