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;
123 vtkGetMacro(WindowX,
int);
129 vtkGetMacro(WindowY,
int);
134 vtkGetMacro(WindowWidth,
int);
139 vtkGetMacro(WindowHeight,
int);
144 vtkGetMacro(StylusTargets,
int);
149 vtkGetMacro(HeadTargets,
int);
154 vtkGetMacro(SecondaryTargets,
int);
160 vtkGetMacro(InterPupillaryDistance,
float);
161 vtkSetClampMacro(InterPupillaryDistance,
float, 0.f, 1.f);
172 vtkGetMacro(ViewerScale,
float);
177 vtkGetMacro(NearPlane,
float);
182 vtkGetMacro(FarPlane,
float);
249 vtkGetMacro(LeftButtonState,
int);
257 vtkGetMacro(MiddleButtonState,
int);
265 vtkGetMacro(RightButtonState,
int);
292 int WindowHeight = 0;
297 int StylusTargets = 0;
301 int SecondaryTargets = 0;
304 float InterPupillaryDistance = 0.056f;
305 float ViewerScale = 1.f;
307 float NearPlane = 0.0001f;
309 float FarPlane = 1000.f;
316 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 begining/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.
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
vtkNew< vtkMatrix4x4 > StylusMatrixRowMajor
vtkNew< vtkMatrix4x4 > StylusMatrixColMajor
vtkNew< vtkMatrix4x4 > LeftEyeViewMatrix
virtual void UpdateButtonState()=0
Update the stylus buttons state.
virtual void UpdateTrackers()=0
Update the position of the stylus and head trakers.
vtkSetEnumMacro(LeftButtonState, ButtonState)
Get/Set the state of the left button of the stylus.
virtual void UpdateViewport()=0
Update the zSpace viewport position and size based on the position and size of the application window...
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 begining/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
vtkSetEnumMacro(MiddleButtonState, ButtonState)
Get/Set the state of the middle button of the stylus.
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