How to make custom Manipulators

MY CONTEXT
So I am using UsdImagingGLEngine and I have already implemented a render loop that can render a USD stage with Pixar Storm delegate.

MY GOAL
To be able to create/render/interact with custom manipulator handles (gizmos) like the typlical 3 arrows for moving a Prim. This of course must be rendered on top of any other geometry, and the scale cannot seem altered on perspective camera.

MY QUESTION
Is this feasible without having to reimplement the Pixar Storm? How such a thing was implemented in USD Composer for example? Please give me best practices / solutions.

REMARKS
I am not implementing a render delegate from scratch. Just consuming different ones with Hydra.

Thanks a lot,
Miquel

People often render OVER the scene with a system such as Im3D or ImGuizmo (if you are using Dear ImGui). For more sophisticated rendering where the manipulators interact with the scene in depth, you might consider procedural geometry under Hydra 2. A friend and I wrote a little library here GitHub - meshula/tinygizmo: πŸ“ An immediate mode 3D gimzo (translation, rotation, scale for scene editing) in ~1200 LoC to use as a procedural generator, it’s render and ui system agnostic. Perhaps between tinyGizmo, ImGuizmo, and Im3D you might find some inspiration.

1 Like