Internship Project (April – June 2025)
Developed by Lohan Boeglin, BUT 2 Informatique – IUT de Nantes
Company: Kadran
PointCloudViewer is an Unreal Engine 5.5 application for importing and visualizing LiDAR point cloud data. It supports interactive 3D navigation, orbiting around pivot points, and displaying markers in world space. The goal is to provide a usable and extensible viewer for technical and visualization purposes.
- Import
.las,.laz, and.xyzfiles using a native file dialog - Support for default LiDAR classification coloring
- Optional custom classification file (CSV) automatically loaded at runtime
- Camera controls: pan, zoom, orbit around a selected pivot point
- Set orbit pivot by clicking on the point cloud (visual marker included)
- Hold input to orbit around the pivot
- Double middle-click to reset camera to top-down view of all point clouds
- Automatic framing after first import
- Always-facing orbit marker with dynamic scaling
- Adjustable point size using + / - keys (including AZERTY and numpad support)
- Modular C++ code structure for extensibility
- Developer documentation generated using Doxygen with class and inheritance diagrams
The following tasks were discussed but not completed during this internship. They are provided here to guide future development:
- Improve orbit behavior to avoid forcing the camera to look at the pivot point, for behavior closer to TerraScan
- Refine hold-to-orbit controls to better match TerraScan's navigation feel
- Display loading feedback during point cloud import (in-progress, success, and error states)
- Show a dialog box with metadata or details of the loaded point cloud
- Add support for changing the background color (currently fixed to black)
- Implement multiple viewports or split-screen views
- Investigate and possibly migrate the project from Unreal Engine 5.5.4 to 5.6
(Unreal 5.6 was recently released with performance improvements; further research is needed to assess benefits and migration effort) - Additional features or improvements may be defined later
At runtime, the viewer checks for a custom classification file to override the default colors assigned to LiDAR point classifications.
File name: LidarClassificationColors.csv
Location (packaged/shipping version on Windows):
C:\Users\<UserName>\AppData\Local\<ProjectName>\Saved\Config\
Place your custom CSV file in this folder to have it loaded automatically by the application. This allows you to update classification colors without rebuilding or repackaging the project.
Format:
ClassNumber,ColorName
1,Red
2,Green
3,BlueClassNumber: Integer value representing the classification ID in the LiDAR fileColorName: A valid color defined inLidarColorPalette.h
Color names are normalized to lowercase at runtime (e.g., SkyBlue → skyblue).
Only color names defined in the LidarColorPalette namespace are supported. Unrecognized entries are ignored.
- Unreal Engine 5.5.4
- C++ (Gameplay Framework, Subsystems)
- NativeFileDialog for cross-platform file dialog
- Doxygen for documentation
PointCloudViewer/
├── Build/Windows/ # Build files for Windows
├── Config/ # Project configuration files
├── Content/ # Unreal Engine assets
├── Docs/ # Documentation files (including Doxygen config)
├── Source/ # C++ source code
├── .editorconfig # Editor configuration
├── .gitignore # Git ignore rules
├── PointCloudViewer.png # Project logo image
├── PointCloudViewer.uproject # Unreal project file
└── README.md # Project readme
- Unreal Engine 5.5.4 installed and configured
- Visual Studio 2022 with C++ development tools
- Doxygen and Graphviz (for documentation generation)
- Git (for version control)
To build the project binaries:
- Open the solution (
.sln) file in Visual Studio. - Select your desired build configuration (e.g., Development Editor, Shipping).
- Build the project from Visual Studio (
Build > Build Solution).
To package the project:
- Open the project in Unreal Editor.
- Go to the menu: Platforms > Windows > Package Project.
- Choose the desired build configuration and follow the packaging steps.
-
Open the Project
Launch Unreal Editor and open thePointCloudViewer.uprojectfile. -
Run the Viewer
Click Play to start the application in the editor. -
Import LiDAR Files
PressCtrl + Fto open the native file dialog and select one or more.las,.laz, or.xyzfiles. -
Navigate the 3D View
- Pan: Hold the middle mouse button
- Zoom: Scroll the mouse wheel
- Orbit Around a Point: Click both left and right mouse buttons simultaneously on a point
Doxygen is used to generate developer documentation including class and inheritance diagrams.
-
Install Doxygen (https://www.doxygen.nl) and Graphviz (https://graphviz.org/) for diagrams.
-
Open a terminal at the root of the project and run:
doxygen Docs/Doxyfile-
Open
Docs/Generated/html/index.htmlin a browser. -
To generate the LaTeX version of the documentation (for PDF output), navigate to
Docs/Generated/latexand run:
pdflatex refman.tex(repeat the pdflatex command 2-3 times if needed for cross-references), or simply run the provided make.bat script.
Note: Note: If you encounter an error related to the tabu LaTeX package when generating the PDF, replace the tabu.sty file with the fixed version from
https://github.com/tabu-issues-for-future-maintainer/tabu/blob/main/tabu.sty
Place it directly in Docs/Generated/latex/, remove the current tabu_doxygen.sty and rename tabu.sty to tabu_doxygen.sty.
Tip: When prompted during make.bat (e.g., for missing file warnings), entering s (for “skip”) usually allows the process to continue.
PDF Availability: A prebuilt version of the PDF documentation is available in the Docs/ folder (Docs/PointCloudViewer_Documentation.pdf).
However, it's recommended to generate the documentation yourself and browse the HTML version, as it offers better navigation and readability.
This project was developed at Kadran by Lohan Boeglin as part of an internship from April to June 2025
(BUT 2 Informatique, University Year 2024–2025).
The project is intended to be continued by Kadran team members or future interns.
Contact : lohan.boeglin@gmail.com
This project uses the following third-party libraries and tools:
-
Native File Dialog (NFD) — Lightweight cross-platform file dialog library.
https://github.com/mlabbe/nativefiledialog -
Unreal Engine — Game engine used as the base framework for this project.
https://www.unrealengine.com/ -
Lidar Point Cloud Plugin — Plugin used for Lidar data processing and visualization within Unreal Engine.
https://dev.epicgames.com/documentation/en-us/unreal-engine/lidar-point-cloud-plugin-for-unreal-engine -
Visual Studio 2022 — Primary IDE and build system for the project.
https://visualstudio.microsoft.com/vs/ -
GIMP — Open-source image editor used for UI asset creation and editing.
https://www.gimp.org/ -
Doxygen — Tool to generate developer documentation from source code comments.
https://www.doxygen.nl/ -
Graphviz — Visualization software used by Doxygen to create class and inheritance diagrams.
https://graphviz.org/ -
LaTeX (e.g., pdflatex) — Used to compile the LaTeX version of the documentation generated by Doxygen.
-
Git — Version control system used to manage this project's source code.
https://git-scm.com/ -
CloudCompare — Open-source 3D point cloud processing software used for point cloud inspection during development.
https://www.danielgm.net/cc/
- LAS 1.4 Specification — Standard format documentation for Lidar point cloud data.
https://www.asprs.org/wp-content/uploads/2019/07/LAS_1_4_r15.pdf
Special thanks to the Kadran team for guidance and support during the internship.
Official website: https://kadran-ingenierie.fr