3D Navigation gizmo

This is inspired from a comment on this proposal thread and coming from Blender.

Is there ongoing development for a camera gizmo in Paraview/VTK much like the one in Blender?
image

I think such a feature would boost the UX part of Paraview. (Not to mention how often I mess up the camera when I present something in Paraview to someone)

If there’s no development in that direction, I’d be happy to start it. An initial idea is to derive a vtkWidgetRepresentation and work it out from there. All the inventory (camera, interaction, representation) already exists, its just a matter of creatively glueing them together.

This proposal might be better of in VTK forums, but I figured I’d get improved feedback here on the UI/UX.

Edit: Tags

Yes please ! I wish ParaView had a gizmo like this.

Afaik, there is no ongoing development for this. If you want to give it a go, you are very much welcome.

@utkarsh.ayachit @cory.quammen : FYI.

Great! I’ll post updates to this thread.

Initially started with embedding QWidget within pqQVTKWidget but it was difficult to implement event handling. So I went ahead with 2nd gen VTK widgets framework.

I have a start on this. The work is in progress. MR

These were the things I needed to set it up.

  1. A gizmo actor with shafts and spheres with text on it. The shafts are unit-length oriented x-y-z in right-handed coordinate system. Use vtkFreeTypeTools to render text into an image data.

ImageData->Texture->EllipticalButtonSource-> image

  1. A little renderer (LAYER=1) overlaid on top of ParaView’s render view to house our gizmo actor at the origin.
    image

  2. Rotation, highlight mechanism for the gizmo. This will process mouse movements over the little renderer and rotate the gizmo actor.
    When rotated, it looks like this:
    image

  3. Control mechanism for the gizmo. Basically link gizmo’s rotation transform to ParaView’s render view’s active camera. This is proving to be harder than I thought. I tried to apply the inverse of the gizmo’s rotation transform to the camera, it rotates but not as expected.

What’s remaining:

  1. Link gizmo transform to renderview’s camera transform. (Like trackball-camera)
  2. Use Quaternions to lerp the renderview’s camera’s orientation to selected sphere’s direction.
1 Like