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