Skip to content

Support collaboration between CAVE and HMD

The RenderingParallel module now provides optional support for synchronizing collections of actors among the synchronized renderers. The first such supported actor type is vtkOpenGLAvatar, which lays the foundation for supporting collaboration among users of HMD-based VR and CAVEs.

To add a new type of synchronizable actor in the future, you can simply subclass vtkSynchronizableActors and implement the four api methods:

  • InitializeRenderer
  • CleanUpRenderer
  • SaveToStream
  • RestoreFromStream

And then update the vtkSynchronizedRenderers::EnableSynchronizableActors method to instantiate your new class and add it to the internal list.

By default, this support is currently disabled. To enable it, you must call EnableSynchronizableActors(true) on all vtkSynchronizedRenderer instances involved.

Other minor improvements supporting collaboration in CAVEs include:

  • vtkFlagpoleLabel now supports CAVEs by making the label face the camera eye point (rather than the desktop camera position) when in off-axis projection mode
  • vtkVRCollaborationClient now allows customizing the default initial avatar up vector from the new default of [0, 1, 0]
  • vtkVRCollaborationClient now allows specifying an arbitrary object as the source of Move3DEvents used to share local pose with collaborators
  • vtkOpenGLAvatar now provides api access to get the associated avatar label

Additionally this MR moves two classes from Rendering/VR into Rendering/OpenGL: vtkVRRay and vtkOpenGLAvatar. This allows changes to the Rendering/Parallel module to avoid depending on Rendering/VR, as that dependency would introduce a cycle in the module dependency graph.

Edited by Scott Wittenburg

Merge request reports