Development of immersive real

advertisement
Development of immersive realtime applications
Miroslav Andel
miroslav.andel@liu.se
2
Lectures
• Development of immersive real-time
applications
– Online/direct rendering
– Hardware
– Programming
• Video production
– Offline rendering
– Hybrid solutions
2014-09-03
Miroslav Andel - Development of immersive real-time applications
3
Outline
• Hardware
– Understanding the technology
– Clusters and GPUs
– Warping, color matching & blending
• Immersion in a virtual environment (VE)
• Software design
– Desktop application vs. immersive cluster
application
– Scalability & configuration of VEs
– Frameworks
– Scene graph
2014-09-03
Miroslav Andel - Development of immersive real-time applications
4
Hardware
2014-09-03
Miroslav Andel - Development of immersive real-time applications
5
Projectors
• 6x Digital Projection Titan
• 1920 x 1200 @ 120 Hz
• Frame doubling
2014-09-03
Miroslav Andel - Development of immersive real-time applications
6
Image Generators (IGs)
– Workstation high-end graphics cards
•
•
•
•
•
Frame sync
External house sync
Genlock (video signal sync)
Swaplock (swap buffer sync)
3D sync (for 3D glasses)
– Supports active stereoscopy using OpenGL
– Nvidia Quadro or AMD/ATI FirePro
– No gaming cards
2014-09-03
Miroslav Andel - Development of immersive real-time applications
7
Gaming vs. Workstation GPU
•
•
GPU is pretty much the same but different driver software
and firmware
Gaming cards are optimized for speed and DirectX
– Hi frame-rate in games, highly optimized
•
Workstation cards are optimized for precision, OpenGL &
OpenCL
– Designed for 3D modeling, CAD, video editing and computation
– Higher floating point and sub-pixel precision
– Better quality and larger memory (12 GB in Quadro K6000, 16 GB
AMD FirePro 9100)
• Ray tracing on the GPU
•
Our problem: We use gaming techniques but need workstation
features like synchronization and stereoscopy (less
performance)
2014-09-03
Miroslav Andel - Development of immersive real-time applications
8
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
9
Clusters
(at the visualization center)
• Dome
– Alpha (primary real-time cluster used for
shows)
– Beta (secondary development cluster)
– Delta (movie and presentations playback
cluster)
– Gamma (single node eyefinity machine)
• 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
11
Color/gammut matching
• What is white?
2014-09-03
Miroslav Andel - Development of immersive real-time applications
15
Blending
• Digital blending – good bright levels
– Not a linear gradient (gamma)
– Done after color and brightness matching
2014-09-03
Miroslav Andel - Development of immersive real-time applications
16
Blending
• Optical blending for better dark levels
– Projected black is not black, still projected
light
2014-09-03
Miroslav Andel - Development of immersive real-time applications
17
Blending
• Optical blending for better dark levels
– Projected black is not black, still projected
light
2014-09-03
Miroslav Andel - Development of immersive real-time applications
18
Blending
• Blending in the dome
– Blue = Projection borders
– Red = Blend zones
2014-09-03
Miroslav Andel - Development of immersive real-time applications
19
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
2014-09-03
Miroslav Andel - Development of immersive real-time applications
20
Warping and blending hardware
• Processing unit with input & outputs
cards (FPGA) with minimal latency
2014-09-03
Miroslav Andel - Development of immersive real-time applications
21
Warping and blending using OpenGL
• No latency but uses a bit of the GPU
2014-09-03
Miroslav Andel - Development of immersive real-time applications
22
Calibration process
• Manual warping and blending calibration
takes many hours
– Few reference points in the dome
– Moving mesh points by hand causes linearity
problems
• Semi-automated calibration
• Automated camera-based systems
– Current systems don’t handle optical blends
2014-09-03
Miroslav Andel - Development of immersive real-time applications
23
Hardware (end)
2014-09-03
Miroslav Andel - Development of immersive real-time applications
24
Immersion
• To give the audience the impression that
they have stepped into a synthetic world
2014-09-03
Miroslav Andel - Development of immersive real-time applications
25
Immersion
• To give the audience the impression that
they have stepped into a synthetic world
• Enhance immersion by:
–
–
–
–
–
–
2014-09-03
Large field of view
High resolution
Stereoscopy (can also reduce immersion)
Surround sound
Smooth navigation (based on a physical model)
Realistic rendering (shadows etc., to improve
depth cue)
Miroslav Andel - Development of immersive real-time applications
26
Immersion
• Stereoscopy in the dome?
– The paradox
– Field of view wearing 3D glasses
– Use stereoscopy wisely
2014-09-03
Miroslav Andel - Development of immersive real-time applications
28
Software design
2014-09-03
Miroslav Andel - Development of immersive real-time applications
29
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
Buffers swap
Data
Video signal (genlock)
• Multi-threading
2014-09-03
Miroslav Andel - Development of immersive real-time applications
30
Stereoscopy
• How does it work?
2014-09-03
Miroslav Andel - Development of immersive real-time applications
31
Stereoscopy
2014-09-03
Miroslav Andel - Development of immersive real-time applications
32
Stereoscopy
2014-09-03
Miroslav Andel - Development of immersive real-time applications
33
Stereoscopy
2014-09-03
Miroslav Andel - Development of immersive real-time applications
34
Stereoscopy
• Co-location
– Camera position = eye position
– Projection plane = real physical screen
2014-09-03
Miroslav Andel - Development of immersive real-time applications
35
Stereoscopy
• Don’t change eye separation, change the
scale of your scene
• ~15 meters limit
2014-09-03
Miroslav Andel - Development of immersive real-time applications
36
2014-09-03
Miroslav Andel - Development of immersive real-time applications
37
2014-09-03
Miroslav Andel - Development of immersive real-time applications
38
2014-09-03
Miroslav Andel - Development of immersive real-time applications
39
Stereoscopy
• Object in focus in negative parallax
2014-09-03
Miroslav Andel - Development of immersive real-time applications
40
Stereoscopy
• Object in focus in positive parallax
2014-09-03
Miroslav Andel - Development of immersive real-time applications
41
Stereoscopy
• Problems with a fixed head setup (no head
tracking)
2014-09-03
Miroslav Andel - Development of immersive real-time applications
42
Scalability
• One application can run in several virtual
environments without the need of changing the
code
–
–
–
–
–
In
In
In
At
At
the dome
the VR-Arena
the VR-Lab
home using your computer
the bus using a laptop
• If the platform is the same then there is no
need for recompiling the application (just
copy & paste)
2014-09-03
Miroslav Andel - Development of immersive real-time applications
43
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…
2014-09-03
Miroslav Andel - Development of immersive real-time applications
44
Configuration
• “3d drawing”
2014-09-03
45
Configuration
Monoscopic projection
Immersive applications
Often uses non-symmetric
frustums/projections, while
normal OpenGL applications
don’t
(left FOV = right FOV,
top FOV = bottom FOV)
2014-09-03
46
Configuration
Stereoscopic projection
2014-09-03
47
Configuration
48
Configuration
All users except
the target user
will perceive
the rendered
object
incorrectly.
49
Configuration
All users except
the target user
will perceive
the rendered
object
incorrectly.
One solution
would be using
HMDs or a
multi-view
screen.
50
Navigation
• In a desktop application a user navigates
by moving the camera
2014-09-03
Miroslav Andel - Development of immersive real-time applications
51
Navigation
• In a desktop application a user navigates
by moving the camera
• In a scalable application the number of
cameras/frustums is not known
2014-09-03
Miroslav Andel - Development of immersive real-time applications
52
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
2014-09-03
Miroslav Andel - Development of immersive real-time applications
53
Frameworks
(the good stuff)
• Will help you with
–
–
–
–
2014-09-03
Cluster setup & synchronization
Frustums & viewports
Input
Tracking
Miroslav Andel - Development of immersive real-time applications
54
Frameworks
• VR Juggler
• CAVElib (commercial)
• Equalizer
2014-09-03
Miroslav Andel - Development of immersive real-time applications
55
Frameworks
(the bad stuff)
•
•
•
•
Massive and have a lot of dependencies
Big initial effort to get started
Often in legacy OpenGL
Takes usually several days to get started
–
–
–
–
2014-09-03
Getting all dependencies
Compile all dependencies
Compile the whole framework
Read the documentation
Miroslav Andel - Development of immersive real-time applications
56
SGCT
Simple Graphics Cluster Toolkit
2014-09-03
Miroslav Andel - Development of immersive real-time applications
57
SGCT
Simple Graphics Cluster Toolkit
• Static library based on
–
–
–
–
–
–
–
–
–
–
2014-09-03
GLFW
GLEW
GLM
Freetype
TinyThread++
TinyXML
PNG
Z
VRPN
TurboJPEG
Miroslav Andel - Development of immersive real-time applications
58
SGCT
Simple Graphics Cluster Toolkit
• Developed here and is free for everybody to
use
• Designed to get started immediately
(rapid development)
• Cross-platform C++
• Modern and Legacy OpenGL support (OGL 2.2 –
4+)
• Single static library (no dll-hell)
• Using callbacks rather than
inheritance/polymorphism
Miroslav Andel - Development of immersive real-time applications
– Easy porting
application from GLUT, GLFW or
2014-09-03
59
SGCT
Simple Graphics Cluster Toolkit
• Wiki at: c-student.itn.liu.se
–
–
–
–
–
Documentation
Tutorials
Configuration files
Downloads (installers)
Support
• Forum (on it’s way)
2014-09-03
Miroslav Andel - Development of immersive real-time applications
60
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
2014-09-03
Miroslav Andel - Development of immersive real-time applications
61
2014-09-03
62
SGCT – How it works
• Set only the callbacks you need
• A minimal cluster application contains:
– Draw callback: Render your stuff
– Pre Sync callback: generate the data to be
shared
– Encode callback: Send the data to the slave(s)
– Decode callback: Receive the data from the
master
• Other callbacks to handle input devices
and external GUIs
2014-09-03
Miroslav Andel - Development of immersive real-time applications
63
SGCT - Features
• Frame-, swapbuffer- and application datasynchronization
• 3D/Stereoscopic rendering
–
–
–
–
–
–
2014-09-03
Active/Quadbuffer stereo
Side-by-side stereo
Top-bottom stereo
DLP/Checkerboard stereo
Line interleaved stereo
Anaglyph stereo
Miroslav Andel - Development of immersive real-time applications
64
SGCT - Features
•
•
•
•
•
•
•
•
•
•
•
•
Fisheye rendering
PNG texture management
GLSL shader management
Freetype font management
Error messaging across the cluster
External TCP control interface
Tracking support
Joystick, gamepad, Kinect, steering wheel etc.
input
Antialiasing
3D screenshots in maximum texture resolution
Overlays
Statistics and performance graphs
2014-09-03
Miroslav Andel - Development of immersive real-time applications
65
SGCT - Configuration
• XML configuration
• All nodes are using the same
configuration and can automatically
determine if they are a slave or a master
2014-09-03
Miroslav Andel - Development of immersive real-time applications
<?xml version="1.0" ?>
<Cluster masterAddress="127.0.0.1">
<Node ip="127.0.0.1" port="20401">
<Window fullscreen="false">
<Size x="640" y="360" />
<Viewport>
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<Viewplane>
<!-- Lower left -->
<Pos x="-1.778" y="-1.0" z="0.0" />
<!-- Upper left -->
<Pos x="-1.778" y="1.0" z="0.0" />
<!-- Upper right -->
<Pos x="1.778" y="1.0" z="0.0" />
</Viewplane>
</Viewport>
</Window>
</Node>
<User eyeSeparation="0.065">
<Pos x="0.0" y="0.0" z="4.0" />
</User>
</Cluster>
66
67
SGCT arguments
• Normal use:
app.exe –config
• Running cluster
app.exe –config
• Running cluster
app.exe –config
slave
2014-09-03
“config.xml”
application locally as master:
“cluster_config.xml” –local 0
application locally as slave:
“cluster_config.xml” –local 0 --
Miroslav Andel - Development of immersive real-time applications
68
Running SGCT
•
•
•
•
Command prompt/terminal
Create a Batch file (.bat)
Create a Shortcut
From IDE
2014-09-03
Miroslav Andel - Development of immersive real-time applications
69
Running cluster applications
• The application folder needs to be
accessible from all IGs/nodes
1. Copy the whole folder
•
Use Microsoft’s robocopy tool for mirroring folders
across a cluster
2. Use a network share
• DemoManager tool for launching (and
killing) processes across a cluster
• Or manually start the application on all
nodes
2014-09-03
Miroslav Andel - Development of immersive real-time applications
70
SGCT – Example
• Basic spinning triangle synchronized
across a cluster using less then 80 lines
of code
(including comments and spaces)
2014-09-03
Miroslav Andel - Development of immersive real-time applications
71
Data synchronization
• What to share?
– Time or dt
– Run simulations only on master or on
whole cluster?
– Random numbers?
– Minimize traffic
– Compression
– Bit-masking
2014-09-03
Miroslav Andel - Development of immersive real-time applications
72
Math
• OpenGL Mathematics (GLM) is included in
SGCT
• Computer graphics is linear algebra!
• GLM makes life easy
– Vectors
– Matrices
– Quaternions
• Similar syntax to glsl
2014-09-03
Miroslav Andel - Development of immersive real-time applications
73
Testing anywhere
• Local cluster on a single computer
• View
2014-09-03
Miroslav Andel - Development of immersive real-time applications
74
Testing anywhere
2014-09-03
Miroslav Andel - Development of immersive real-time applications
75
SGCT + OSG
Open Scene Graph (OSG)
• www.openscenegraph.org
• Feature rich
• SGCT manages
–
–
Cluster sharing & synchronization
Window, frustum and viewport creation
• OSG manages
– Content
• OSGMaxExporter (3Ds Max plugin)
2014-09-03
Miroslav Andel - Development of immersive real-time applications
76
Scene graph
• Tree structure of nodes
• Intelligent structure
– Visibility & occlusion culling
2014-09-03
Miroslav Andel - Development of immersive real-time applications
77
OSG example
2014-09-03
Miroslav Andel - Development of immersive real-time applications
78
Audio
• Positional 3D audio
– OpenAL
– Fmod Ex
2014-09-03
Miroslav Andel - Development of immersive real-time applications
79
Next time
• Video pipeline
• Offline rendering for the dome
2014-09-03
Miroslav Andel - Development of immersive real-time applications
Download