← Work

CloudPeek

Single-header C++ point cloud viewer — OpenGL 3.3 rendering, arcball camera, no PCL or Open3D required

Creator & Maintainer · 2024 · maintained · GitHub ↗

Problem

Point cloud processing pipelines involve many intermediate representations that are hard to inspect without a visualiser that can be dropped into a debug build instantly. RViz is powerful but requires a full ROS installation; PCL’s built-in visualiser requires a full PCL install and can’t run headlessly. There was no single-header option that just worked with a PCD file and minimal dependencies.

Approach

A minimal viewer built around OpenGL 3.3 Core Profile and GLFW, distributed as a single C++ header. Drop PointCloudViewer.h into any CMake project — no PCL, no Open3D, no ROS dependency. The viewer loads binary PCD files directly, renders points colourised by distance from origin, and exposes full arcball camera controls via mouse and keyboard.

Results

Supported formats: Binary PCD with fields x, y, z, rgb, rgba (extensible via the SUPPORTED_FIELDS config constant).

Camera model: Arcball — left-drag to orbit, scroll to zoom, arrow keys or WASD to pan, R to reset view.

Rendering: OpenGL 3.3 Core Profile. Point size, colour mapping (distance-based gradient), grid overlay (PCL coordinate convention), and XYZ axis indicators are all configurable constants in the Config namespace.

Controls:

  • F1 — toggle captured/free cursor mode

  • R — reset camera to initial position

  • ESC — exit

  • Cross-platform: Linux, macOS, Windows (CMake build)

  • Apache 2.0 license

  • 124 stars on GitHub

Stack

  • C++17
  • OpenGL 3.3 Core
  • GLFW
  • GLEW
  • CMake 3.10+

Technologies

  • C++17
  • OpenGL 3.3
  • GLFW
  • GLEW