Skip to content

lboeglin/PointCloudViewer

Repository files navigation

PointCloudViewer

Internship Project (April – June 2025)
Developed by Lohan Boeglin, BUT 2 Informatique – IUT de Nantes
Company: Kadran

Overview

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.

Features

  • Import .las, .laz, and .xyz files 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

Future Work / To Do

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

Custom Classification File

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,Blue
  • ClassNumber: Integer value representing the classification ID in the LiDAR file
  • ColorName: A valid color defined in LidarColorPalette.h

Color names are normalized to lowercase at runtime (e.g., SkyBlueskyblue).

Only color names defined in the LidarColorPalette namespace are supported. Unrecognized entries are ignored.

Technology

  • Unreal Engine 5.5.4
  • C++ (Gameplay Framework, Subsystems)
  • NativeFileDialog for cross-platform file dialog
  • Doxygen for documentation

File Structure

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

Prerequisites

  • 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)

Building

To build the project binaries:

  1. Open the solution (.sln) file in Visual Studio.
  2. Select your desired build configuration (e.g., Development Editor, Shipping).
  3. Build the project from Visual Studio (Build > Build Solution).

To package the project:

  1. Open the project in Unreal Editor.
  2. Go to the menu: Platforms > Windows > Package Project.
  3. Choose the desired build configuration and follow the packaging steps.

Quick Start

  1. Open the Project
    Launch Unreal Editor and open the PointCloudViewer.uproject file.

  2. Run the Viewer
    Click Play to start the application in the editor.

  3. Import LiDAR Files
    Press Ctrl + F to open the native file dialog and select one or more .las, .laz, or .xyz files.

  4. 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

Documentation

Doxygen is used to generate developer documentation including class and inheritance diagrams.

Generating Documentation

  1. Install Doxygen (https://www.doxygen.nl) and Graphviz (https://graphviz.org/) for diagrams.

  2. Open a terminal at the root of the project and run:

doxygen Docs/Doxyfile
  1. Open Docs/Generated/html/index.html in a browser.

  2. To generate the LaTeX version of the documentation (for PDF output), navigate to Docs/Generated/latex and 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.

Licensing and Credits

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

Third-Party Libraries and Tools

This project uses the following third-party libraries and tools:


References

Acknowledgments

Special thanks to the Kadran team for guidance and support during the internship.

Website

Official website: https://kadran-ingenierie.fr

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors