Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support visual plugins #265

Closed
caguero opened this issue Jul 28, 2020 · 3 comments
Closed

Support visual plugins #265

caguero opened this issue Jul 28, 2020 · 3 comments
Labels
close the gap Features from Gazebo-classic GUI Gazebo's graphical interface (not pure Ignition GUI) help wanted We accept pull requests! rendering Involves Ignition Rendering

Comments

@caguero
Copy link
Contributor

caguero commented Jul 28, 2020

Supporting visual plugins that act as GUI overlays is a nice way to customize the GUI to the user needs.

@caguero caguero added help wanted We accept pull requests! GUI Gazebo's graphical interface (not pure Ignition GUI) close the gap Features from Gazebo-classic labels Jul 28, 2020
@chapulina chapulina added the rendering Involves Ignition Rendering label Jul 28, 2020
@chapulina
Copy link
Contributor

chapulina commented Jul 28, 2020

visual plugins that act as GUI overlays is a nice way to customize the GUI to the user needs.

I'll just clarify that Gazebo-classic's GUI overlays are GUI plugins, which are a bit different from visual plugins. We already support custom GUI overlays. Any Ignition GUI plugin can be loaded by Ignition Gazebo, and ignition::gazebo::GuiSystem plugins can access entities and components. Here's an example of the latter.


Some more pointers for visual plugins that are purely related to rendering:

  • ign-gazebo should load <visual><plugin>s. As a reference, here's what it took to load <sensor><plugin>s.
  • Gazebo-classic's visual plugins are loaded by gazebo::rendering on both server and client scenes. I believe an equivalent implementation would have to live in ign-rendering. If we want this to be in ign-gazebo, we may need separate plugins for the server side (ignition::gazebo::System) and another one for the client (ignition::gazebo::GuiSystem).
  • Modifying visuals on the client should already be possible using an ignition::gazebo::GuiSystem. It's possible to access the rendering engine's singleton and use ign-rendering's API to modify visuals in the rendering thread, using the Render event.
  • For accessing the rendering API from a backend system, see Regression for systems that use rendering #36

@chapulina
Copy link
Contributor

The tutorial on #596 explains how to use the rendering API from either server or client.

I believe the only outstanding issue is loading plugins from the <visual><plugin> tag.

@scpeters
Copy link
Member

scpeters commented Nov 2, 2021

  • Gazebo-classic's visual plugins are loaded by gazebo::rendering on both server and client scenes. I believe an equivalent implementation would have to live in ign-rendering.

I've opened gazebosim/gz-rendering#482 to track the ign-rendering side of this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
close the gap Features from Gazebo-classic GUI Gazebo's graphical interface (not pure Ignition GUI) help wanted We accept pull requests! rendering Involves Ignition Rendering
Projects
None yet
Development

No branches or pull requests

3 participants