A lightweight 3D visualization library for robot-vision research

Alongside my work on “Tracking obstacles for a humanoid robot”, I wrote a visualization tool from scratch in collaboration with fellow student Tamas Bates.

The project was made open source by the chair and is available here: https://github.com/am-lola/ARVisualizer.

Here are some facts and features.

  1. OpenGL with GLFW3 for rendering
  2. Separate rendering threads with a thread-safe minimally-blocking interface
  3. Support for opening multiple windows, each having their own renderer and UI
  4. Camera movement using either WASD for horizontal movement, Q and E for up and down or orbital controls with mouse buttons and mouse wheel
  5. Efficient rendering of (optionally colored) point clouds
  6. Rendering of quads, polygons, boxes, spheres, capsules, ellipsoids and meshes; opaque or transparent
  7. Variable-thickness line and line-path/trajectory rendering (doing it the right way, not using GL_LINE)
  8. Efficient voxel rendering using instancing
  9. Stylish UI using Dear ImGui; an interface is provided for library-users to create windows, input controls, text overlays at 3D locations, etc.
  10. Screenshot to PNG, BMP and TGA

To get an overview of the main library interface, check out this header, and this header for the UI interface.

Demo program with the basics
Point clouds, transparent ellipsoids and trajectory rendering in action