zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( ·...

16
zSpace: An Integrated Immersive Stereoscopic 3D System Doug Twilleager zSpace So1ware CTO

Transcript of zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( ·...

Page 1: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

zSpace:  An  Integrated  Immersive  Stereoscopic  3D  System    Doug  Twilleager  zSpace  So1ware  CTO  

Page 2: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

Agenda    •  zView  •  zSpace  Overview  •  System  Requirements  •  SDK  Architecture  •  Using  zSpace  Stereo  •  Enabling  Head  Tracking  •  Coordinate  System  Overview  •  Enabling  the  Stylus  •  Future  DirecGons  

Page 3: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

Direct  interacGon  with  3D  virtual-­‐holographic  simulaGons  in  open  space  

InnovaGve  so1ware    development  plaKorm  

Full  color,  high  resoluGon  stereoscopic  display  

Passive,  polarized    tracking  eyewear  

Unique  stylus  for  3D  interacGon  

zSpace  Overview  

Page 4: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

System  Requirements  

•  Windows  7,  8,  or  XP,  32bit  or  64bit  •  Microso1  Visual  Studio  2008  SP1,  2010  •  Stereo  Enabled  GPU  – NVIDIA  Quadro  K4000  

•  SDK  is  a  collecGon  of  C++  classes  – Simplified  C  interface  in  2.7  

•  OpenGL  or  DirectX  – NVAPI  Stereo  

Page 5: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

ApplicaGon  Rendering  

zSpace  Stereo  

zSpace  Display  GPU  

zSpace  Tracking  

ApplicaGon  Logic  

zSpace  SDK  

USB  Video  

SDK  Architecture  

Page 6: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

Using  zSpace  Stereo  Far  Clip  

Near  Clip  

Screen  

Mono  View  

Page 7: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

Using  zSpace  Stereo  Far  Clip  

Near  Clip  

Screen  

Stereo  View  

NegaGve  Parallax  

PosiGve  Parallax  

Page 8: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

Using  zSpace  Stereo  

GLfloat  monoModelViewGl[16];  GLfloat  viewMatrixGl[16];    //  Copy  the  mono  model-­‐view  matrix.  glMatrixMode(GL_MODELVIEW);  glGetFloatv(GL_MODELVIEW_MATRIX,  monoModelViewGl);    //  Get  the  stereo  frustum.  StereoFrustum*  stereoFrustum  =  m_stereoViewport-­‐>getStereoFrustum();    //  Modify  the  model-­‐view  matrix  for  eye.    //  Note:  The  view  matrix  contains  eye  offset  plus  any  rotaGon  required  for  off-­‐axis  projecGon.  Matrix4  viewMatrix4;  stereoFrustum-­‐>getViewMatrix(eye,  viewMatrix4);  MathConverterGl::convertMatrix4ToMatrixGl(viewMatrix4,  viewMatrixGl);    glLoadMatrixf(viewMatrixGl);  glMultMatrixf(monoModelViewGl);    

AdjusGng  The  Le1  and  Right  Cameras  

Page 9: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

Using  zSpace  Stereo  

GLfloat  projecGonMatrixGl[16];    //  Set  the  projecGon  matrix  for  eye.  Matrix4  projecGonMatrix4;  stereoFrustum-­‐>getProjecGonMatrix(eye,  projecGonMatrix4);  MathConverterGl::convertMatrix4ToMatrixGl(projecGonMatrix4,projecGonMatrixGl);    glMatrixMode(GL_PROJECTION);  glLoadMatrixf(projecGonMatrixGl);  

                     Alternate  Approach  

 StereoFrustum::Bounds  bounds;    //  Get  the  frustum  bounds  bounds  =  stereoFrustum-­‐>getBounds(eye);    glMatrixMode(GL_PROJECTION);  glFrustum(bounds.le1,  bounds.right,  bounds.boqom,  bounds.top,  bounds.nearClip,  bounds.farClip);  

Serng  The  Off-­‐Axis  ProjecGons  

Page 10: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

Enabling  Head  Tracking  Far  Clip  

Near  Clip  

Screen  

Stereo  View  

NegaGve  Parallax  

PosiGve  Parallax  

Page 11: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

Enabling  Head  Tracking  IniGalize  Tracking  

//  IniGalize  the  tracking  system  –  this  is  done  once  m_trackerSystem  =  new  zspace::tracker::TrackerSystem();    

//  Cache  the  current  tracker  targets  m_trackerSystem-­‐>captureTargets();    //  Get  the  head  target  TrackerTarget*  headTarget  =  m_trackerSystem-­‐>getDefaultTrackerTarget(TrackerTarget::TYPE_HEAD);    //  Get  the  head  pose  Matrix4  headPose  =  Matrix4::IDENTITY();  headTarget-­‐>getPose(headPose);    //  Set  the  stereo  head  pose  StereoFrustum*  stereoFrustum  =  m_stereoViewport-­‐>getStereoFrustum();  stereoFrustum-­‐>setHeadPose(headPose);  

Passing  Along  The  Head  Pose  

Page 12: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

X  

Y  

Z  

Camera  Space  

Display  Offset  

Display  Angle  

Coordinate  System  Overview  

Page 13: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

X  

Y  

Z  

Tracker  Space  

Display  Offset  

Display  Angle  

Coordinate  System  Overview  

Page 14: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

Enabling  the  Stylus  Read  Stylus  and  Convert  to  World  Space  

//  Get  the  stylus  target  TrackerTarget*  primaryTarget  =  m_trackerSystem-­‐>getDefaultTrackerTarget(TrackerTarget::TYPE_PRIMARY);    //  Get  the  head  pose  Matrix4  primaryPose=  Matrix4::IDENTITY();  primaryTarget  -­‐>getPose(primaryPose);    Matrix4  trackerSpaceToCameraSpace;  Matrix4  worldPrimaryPose;    //  Get  the  display  for  this  window  const  zspace::common::DisplayInfo::Display*  display  =  m_stereoWindow-­‐>getCurrentDisplay();    //  Get  the  tracker  to  camera  space  transform  trackerSpaceToCameraSpace  =  DisplayInfo::getTrackerToCameraSpaceTransform(display);    //  Transform  the  pose  from  tracker  space  to  world  space  worldPrimaryPose  =  cameraToWorldSpace  *  trackerSpaceToCameraSpace  *  primaryPose;  

Page 15: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

Future  DirecGons  

•  Stereo  ReprojecGon  – NVIDIA  Nsight  

•  OpGmizing  Rendering  – Frustum  Culling  – Shadow  Map  GeneraGon  

•  MulGple  ProjecGon  Regions  •  Depth  of  Field  •  Grid  Rendering  (NVIDIA  GRID)  

Page 16: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon

zSpace  –  Booth  116  

Transforming  computer  interacGon  lifelike    |    interacGve    |    immersive  

 zSpace:  Direct  interacGon  with  3D  virtual-­‐holographic  simulaGons  in  open  space    

-­‐  Full  color,  high  resoluGon  stereoscopic  display  

-­‐  Unique  stylus    for  3D  interacGon    -­‐  Passive,  polarized  tracking  eyewear    -­‐  InnovaGve  so1ware  development  plaKorm