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:
InitializeRendererCleanUpRendererSaveToStreamRestoreFromStream
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:
-
vtkFlagpoleLabelnow supports CAVEs by making the label face the camera eye point (rather than the desktop camera position) when in off-axis projection mode -
vtkVRCollaborationClientnow allows customizing the default initial avatar up vector from the new default of[0, 1, 0] -
vtkVRCollaborationClientnow allows specifying an arbitrary object as the source of Move3DEvents used to share local pose with collaborators -
vtkOpenGLAvatarnow 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.