32#ifndef vtkZSpaceSDKManager_h
33#define vtkZSpaceSDKManager_h
37#include "vtkRenderingZSpaceModule.h"
41VTK_ABI_NAMESPACE_BEGIN
94 const double bounds[6],
double position[3],
double viewUp[3]) = 0;
117 virtual void SubmitFrame(
unsigned int vtkNotUsed(leftText),
unsigned int vtkNotUsed(rightText)){};
125 QUAD_BUFFER_STEREO = 0,
126 STEREO_DISPLAY_API = 1
149 vtkGetMacro(WindowX,
int);
155 vtkGetMacro(WindowY,
int);
160 vtkGetMacro(WindowWidth,
int);
165 vtkGetMacro(WindowHeight,
int);
170 vtkGetMacro(StylusTargets,
int);
175 vtkGetMacro(HeadTargets,
int);
180 vtkGetMacro(SecondaryTargets,
int);
186 vtkGetMacro(InterPupillaryDistance,
float);
187 vtkSetClampMacro(InterPupillaryDistance,
float, 0.f, 1.f);
198 vtkGetMacro(ViewerScale,
float);
203 vtkGetMacro(NearPlane,
float);
208 vtkGetMacro(FarPlane,
float);
275 vtkGetMacro(LeftButtonState,
int);
283 vtkGetMacro(MiddleButtonState,
int);
291 vtkGetMacro(RightButtonState,
int);
318 int WindowHeight = 0;
323 int StylusTargets = 0;
327 int SecondaryTargets = 0;
330 float InterPupillaryDistance = 0.056f;
331 float ViewerScale = 1.f;
333 float NearPlane = 0.0001f;
335 float FarPlane = 1000.f;
342 ButtonState* ButtonsState[NumberOfButtons] = { &MiddleButtonState, &RightButtonState,
a virtual camera for 3D rendering
a simple class to control print indentation
represent and manipulate 4x4 transformation matrices
Allocate and hold a VTK object.
abstract base class for most VTK objects
create a window for renderers to draw into
Abstract zSpace SDK manager class.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkNew< vtkMatrix4x4 > LeftEyeProjectionMatrix
virtual void EndFrame()=0
Notify the zSpace SDK for the beginning/end of a frame (vtkZSpaceCoreCompatibility only)
virtual void SetRenderWindow(vtkRenderWindow *renderWindow)
Set the render windwow the manager makes viewport computations from.
vtkNew< vtkMatrix4x4 > RightEyeProjectionMatrix
virtual void InitializeZSpace()=0
Initialize the zSpace SDK and check for zSpace devices : the display, the stylus and the head tracker...
vtkSetEnumMacro(RightButtonState, ButtonState)
Get/Set the state of the right button of the stylus.
virtual void SubmitFrame(unsigned int vtkNotUsed(leftText), unsigned int vtkNotUsed(rightText))
These functions are overriden by vtkZSpaceCoreCompatibility (specific to zSpace Inspire).
vtkMatrix4x4 * GetStereoViewMatrix(bool leftEye)
Get the zSpace view matrix for the right or left eye in row major format (VTK format)
void Update()
Update the viewport, the trackers and the camera matrix by calling the zSpace SDK.
~vtkZSpaceSDKManager() override
vtkNew< vtkMatrix4x4 > CenterEyeProjectionMatrix
virtual void ShutDown()
Shutdown the zSpace SDK (clean its internal state).
vtkNew< vtkMatrix4x4 > StylusMatrixRowMajor
vtkNew< vtkMatrix4x4 > StylusMatrixColMajor
virtual StereoDisplayMode GetStereoDisplayMode()
vtkNew< vtkMatrix4x4 > LeftEyeViewMatrix
virtual void UpdateButtonState()=0
Update the stylus buttons state.
virtual void UpdateTrackers()=0
Update the position of the stylus and head trackers.
vtkSetEnumMacro(LeftButtonState, ButtonState)
Get/Set the state of the left button of the stylus.
virtual void EnableGraphicsBinding()
These functions are overriden by vtkZSpaceCoreCompatibility (specific to zSpace Inspire).
virtual void UpdateViewport()=0
Update the zSpace viewport position and size based on the position and size of the application window...
virtual bool GetStereoDisplayEnabled()
These functions are overriden by vtkZSpaceCoreCompatibility (specific to zSpace Inspire).
void SetClippingRange(const float nearPlane, const float farPlane)
Set the near and far plane.
vtkMatrix4x4 * GetStereoProjectionMatrix(bool leftEye)
Get the zSpace projection matrix for the right or left eye in row major format (VTK format)
virtual void BeginFrame()=0
Notify the zSpace SDK for the beginning/end of a frame (vtkZSpaceCoreCompatibility only)
virtual void CalculateFrustumFit(const double bounds[6], double position[3], double viewUp[3])=0
Let zSpace compute the viewer scale, camera position and camera view up from the input bounds.
vtkNew< vtkMatrix4x4 > RightEyeViewMatrix
virtual void SetStereoDisplayEnabled(bool vtkNotUsed(enabled))
These functions are overriden by vtkZSpaceCoreCompatibility (specific to zSpace Inspire).
vtkSetEnumMacro(MiddleButtonState, ButtonState)
Get/Set the state of the middle button of the stylus.
virtual void GetPerEyeImageResolution(int *vtkNotUsed(width), int *vtkNotUsed(height))
These functions are overriden by vtkZSpaceCoreCompatibility (specific to zSpace Inspire).
vtkNew< vtkTransform > StylusTransformRowMajor
std::vector< std::string > Displays
static vtkZSpaceSDKManager * GetInstance()
Return the singleton instance (with no reference counting) of a vtkZSpaceCoreSDKManager or vtkZSpaceC...
virtual void UpdateViewAndProjectionMatrix()=0
Update the zSpace view and projection matrix for each eye.
vtkNew< vtkMatrix4x4 > CenterEyeViewMatrix