zspace:(an(integrated(immersive( stereoscopic3dsystem(( ·...
TRANSCRIPT
![Page 1: zSpace:(An(Integrated(Immersive( Stereoscopic3DSystem(( · DirectinteracGon%with%3D%virtualIholographic% simulaons%in%open%space% Innovave%so1ware%% developmentplaorm% Fullcolor,highresoluon](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/1.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/2.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/3.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/4.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/5.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/6.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/7.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/8.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/9.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/10.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/11.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/12.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/13.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/14.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/15.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060409/5f1005107e708231d4470b2c/html5/thumbnails/16.jpg)
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