Modern GUI using GLFW

Project Description

This SOFA plugin brings a simple GUI based on GLFW. It only needs SofaGUICommon, SofaBaseVisual and Sofa.GL as dependencies. Integration of GLFW is automatic (automatic fetching and integration with CMake), and linked statically. This GUI can be launched with the standard runSofa using the parameter -g glfw, or it can be used with a stand-alone executable runSofaGLFW provided in this plugin.

GitHub repository

Lastly, this GUI was designed to support multiple windows in the same time and multiple simulations. So when multiple simulations is possible is the future, it should be easy to modify the code to support this feature. Multiple windows could be based on the fact having multiple Camera in the scene (feature not implemented yet).

Dear ImGui

By default, SofaGLFW does not show any user interface. Only the keyboard allows limited interactions with the simulation. That is why a user interface based on Dear ImGui is provided.

By default, this interface is not compiled. The CMake variable SOFA_BUILD_SOFAGLFWIMGUI must be set to ON. Integration of Dear ImGui is automatic (automatic fetching and integration with CMake), and linked statically.


The GUI is based on dockable windows. Each window gathers related features. Here are all the available windows:

  • Controls: play/pause the simulation, reset the simulation
  • Performances: display metrics related to performances: ms/frame, FPS, graph
  • Scene Graph: show the scene graph and the Data associated to each components
  • Display Flags: filter which components are rendered in the 3D view
  • Plugin: show a list of plugins currently loaded
  • Components: show a detailed list of components currently loaded
  • Log: all the messages sent by SOFA

Back to the plugin list

Related Projects

Back to Top