700 likes | 929 Views
Development of immersive real-time applications. Miroslav Andel miroslav.andel@liu.se. Outline. Immersion in a virtual environment (VE) Difference between development of a desktop application and an immersive application Understanding the ( complexity ) technology Hardware
E N D
Development of immersive real-time applications Miroslav Andel miroslav.andel@liu.se
Outline • Immersion in a virtual environment (VE) • Difference between development of a desktop application and an immersive application • Understanding the (complexity) technology • Hardware • Warping, color matching & blending • Scalability & configuration of VEs • Frameworks (simplicity) • Scene graph Miroslav Andel - Development of immersive real-time applications
Immersion (VE) • To give the audience the impression that they have stepped into a synthetic world • Enhance immersion by: • Large field of view • High resolution • Stereoscopy (can also reduce immersion) • Surround sound • Smooth navigation (based on a physical model) • Realistic rendering Miroslav Andel - Development of immersive real-time applications
Immersion (VE) • Stereoscopy in the dome? • The paradox • Field of view wearing 3D glasses • Use stereoscopy wisely Miroslav Andel - Development of immersive real-time applications
Immersion (VE) • Stereoscopy in the dome? • The paradox • Field of view wearing 3D glasses • Use stereoscopy wisely • Cybersickness in immersive environments • Nausea • Eye strain • Headache • Vomiting Miroslav Andel - Development of immersive real-time applications
The difference(from normal desktop application development) • Several projectors/screens • A lot of pixels • Alignment, blending & warping • Color & Brightness matching • Several computers (cluster) • Synchronization • Frame • Data • Video signal Miroslav Andel - Development of immersive real-time applications
Hardware • Image Generators (IGs) • Professional high-end graphics cards supports various types of synchronization with an additional synchronization card • Frame sync • External house sync • Genlock (video signal sync) • Swaplock (swap buffer sync) • 3D sync (for 3D glasses) • Professional high-end graphics cardssupports active stereoscopy using OpenGL • NvidiaQuadro and AMD/ATI FirePro MiroslavAndel - Development of immersive real-time applications
Hardware • AMD Eyefinity – multi-display technology • Massive pixel output • Used in the VR-Arena • 3 projectors • Passive stereoscopy input toprojectors (6 outputs@60 Hz each) • Active 120 Hz stereoscopyfrom each projector MiroslavAndel - Development of immersive real-time applications
Cluster of IGs Often consists of workstations with the same specification Master – Slave In our case the master has an additional surround sound card (live encoding to Dolby Digital or DTS) Miroslav Andel - Development of immersive real-time applications
Clusters(at the visualization center) • Dome • Alpha (primary real-time cluster used for shows) • Beta (secondary development cluster) • Delta (movie and presentations playback cluster) • VR-Arena • Theta • Videowall (just a single node with 6 outputs)used for movie and presentations playback Miroslav Andel - Development of immersive real-time applications
OpenGL projections One viewplane per projector Curved surface? Miroslav Andel - Development of immersive real-time applications
Warping/geometric correction Correct the rendered frame to match the geometry of the screen, lens and projector’s position Correct overlaps between adjacent channels Spatial 2D transform Miroslav Andel - Development of immersive real-time applications
Warping/geometric correction Original Warped Miroslav Andel - Development of immersive real-time applications
Color matching What is white? Miroslav Andel - Development of immersive real-time applications
Color matching D65 = 6500 K = (0.3127, 0.3290) D75 = 7500 K = (0.2990, 0.3149) Other white points: DCI = (0.3140, 0.3510) DICOM clear base = (0.280, 0.305) DICOM blue base = (0.250, 0.304) White points (CIE standard illuminant) D65 and D75 Miroslav Andel - Development of immersive real-time applications
Color matching All display devices and projectors have a different gamut Projector lamp color temperature changes over time Must be done before blending Can be done on each IG but with less precision (8 or 10 bits per color) Better to do that in the projector (12-16 bit precision) Miroslav Andel - Development of immersive real-time applications
Color matching Miroslav Andel - Development of immersive real-time applications
Blending • Digital blending – good bright levels • Not a linear gradient (gamma) • Done after color and brightness matching Miroslav Andel - Development of immersive real-time applications
Blending • Optical blending – good dark levels • Projected black is not black, still projected light Miroslav Andel - Development of immersive real-time applications
Blending • Optical blending – good dark levels • Projected black is not black, still projected light Miroslav Andel - Development of immersive real-time applications
Blending • Blending in the dome • Blue = Projection borders • Red = Blend zones Miroslav Andel - Development of immersive real-time applications
Warping and blending hardware Processing unit with input & outputs cards (minimal latency) Miroslav Andel - Development of immersive real-time applications
Warping and blending using OpenGL No latency but uses a bit of the GPU Miroslav Andel - Development of immersive real-time applications
Warping and blending using OpenGL No latency but uses a bit of the GPU Miroslav Andel - Development of immersive real-time applications
Calibration process • Manual warping and blending calibration takes many hours • Few reference points in the dome • Moving mesh points by hand causes linearity problems • Automated camera-based systems • Current systems don’t handle optical blends Miroslav Andel - Development of immersive real-time applications
Scalability • One application can run in several virtual environments without the need of changing the code • In the dome • In the VR-Arena • In the VR-Lab • At home using your computer • At the bus using a laptop • If the platform is the same then there is also no need for recompiling the application Miroslav Andel - Development of immersive real-time applications
Scalability The application uses a configuration file that describes the hardware in terms like: Number of IGs Number of displays Number of viewports Physical location of displays/projection planes Physical location of the user Eye separation of the user Type if Stereoscopy Etc… Miroslav Andel - Development of immersive real-time applications
Configuration “3d drawing” Miroslav Andel - Development of immersive real-time applications
Configuration Monoscopicprojection Immersive applications Often uses non-symmetric frustums/projections, while normal OpenGL applications don’t (left FOV = right FOV, top FOV = bottom FOV) Miroslav Andel - Development of immersive real-time applications
Configuration Stereoscopic projection Miroslav Andel - Development of immersive real-time applications
Stereoscopy Don’t change eye separation, change the scale of your scene ~15 meters limit Miroslav Andel - Development of immersive real-time applications
Stereoscopy Miroslav Andel - Development of immersive real-time applications
Stereoscopy Miroslav Andel - Development of immersive real-time applications
Configuration Miroslav Andel - Development of immersive real-time applications
Configuration All users except the target user will perceive the rendered object incorrectly. One solution would be using HMDs or a multi-view screen. Miroslav Andel - Development of immersive real-time applications
Configuration Miroslav Andel - Development of immersive real-time applications
Configuration Miroslav Andel - Development of immersive real-time applications
Navigation In a desktop application a user navigates by moving the camera Miroslav Andel - Development of immersive real-time applications
Navigation In a desktop application a user navigates by moving the camera In a scalable application the number of cameras/frustums is not known Miroslav Andel - Development of immersive real-time applications
Navigation In a desktop application a user navigates by moving the camera In a scalable application the number of cameras/frustums is not known Instead of moving the user and all “cameras” in the same direction the whole scene is moved in the opposite direction Miroslav Andel - Development of immersive real-time applications
Frameworks(the good stuff) • Will help you with • Cluster setup & synchronization • Frustums & viewports • Input • Tracking Miroslav Andel - Development of immersive real-time applications
Frameworks VR Juggler CAVElib (commercial) Equalizer Miroslav Andel - Development of immersive real-time applications
Frameworks(the bad stuff) • Massive and have a lot of dependencies • Big initial effort to get started • Takes usually several days to get started • Getting all dependencies • Compile all dependencies • Compile the whole framework • Read the documentation Miroslav Andel - Development of immersive real-time applications
SGCTSimple Graphics Cluster Toolkit Miroslav Andel - Development of immersive real-time applications
SGCTSimple Graphics Cluster Toolkit • Based on: • GLFW • GLEW • GLM • Freetype • TinyXML • PNG • Z • VRPN Miroslav Andel - Development of immersive real-time applications
SGCTSimple Graphics Cluster Toolkit • Developed here and is free for everybody to use • Designed to get started immediately (rapid development) • Cross-platform C++ • Single static library • Using callbacks rather than inheritance/polymorphism • Easy porting application from GLUT, GLFW or similar Miroslav Andel - Development of immersive real-time applications
SGCTSimple Graphics Cluster Toolkit • Wiki at: c-student.itn.liu.se • Documentation • Tutorials • Configuration files • Downloads • Support Miroslav Andel - Development of immersive real-time applications
SGCT – How it works • Has an engine which handles • Initiation of OpenGL • Rendering • Synchronization • Network communication • Configuration handling • Input • The user can bind callbacks (function pointers) to the engine to customize the functionality MiroslavAndel - Development of immersive real-time applications
SGCT – How it works Miroslav Andel - Development of immersive real-time applications
SGCT – How it works Miroslav Andel - Development of immersive real-time applications