Title: State of the Art Commercial Systems
1State of the Art Commercial Systems
- JunHyeok Heo
- HyungSeok Kim
- Computer Sciene Dept. of KAIST
2Levels on Tools
VR Tools
3D Graphics API
Performer Inventor VRML Browser OGL Optimizer DX
3D RMode ...
Vega OpenGVS WTK SuperScape ...
GL/OpenGL DX 3D IMode ...
Glide DX 3D IMode ...
Application-specific processing
Pixel processing
Polygon processing
Scene processing
Special Effects Input Devices Network Sound Dynami
c Behaviors
Hidden pixel removing Texture mapping Color
interpolation (?) Antialiasing
Geometric Transformation Clipping Lighting (?)
Culling LoD
Depth buffer
Texture memory
3Commercial Systems - with mind of Culling/LOD
- Runtime libraries
- Performer, Inventor, Java3D, OpenGL Optimizer
- VRML97 based libaries
- VR systems
- WTK
- OpenGVS, Vega
- VRT
- Modeling Systems
- MultiGen
- SoftImage
- 3DS Max / Maya
4Practical Usability of Cull/LOD
Desired Draw Time
Time
DRAW
1 processor
SAVED
CULL
LOD
DRAW
Success
CULL
LOD
SAVED
DRAW
Fail
Success
3 processors
DRAW
CULL
LOD
SAVED
5Practical Usability of Cull/LOD
- 1 Processor
- Possibility of practically unusable algorithms
- decrease less DRAW time than the increased
overhead of computation time (negative gain) - gain saved time - compuational overhead in time
- 3 Processors
- Possibility of practically unusable algorithms
- takes more computational time than the desired
DRAW time (frame time) - Possible delay of the scene update
6Culling
- PerformerTM
- View frustum culling
- using scene graph hierarchy
- Grouping node type
- pfGroup,pfSCS, pfDCS,...
- Two levels of bounding volume
- Bounding sphere of pfGeode
- Bounding box of pfGeoSet
- User can specify bounding volume
- No automatic updates
- Dynamic objects
- (eg. merry-go-around)
7Image excerpt from IRIS PerformerTM Programming
Guide
8Culling
- OpenGL OptimizerTM
- View frustum culling using scene graph hierarchy
- bounding box of csGeoSet
- Occlusion culling
- eliminate objects for which a specified fraction
of their bounding boxes are occluded by
foreground objects - partial occlusion control
9without culling
with view frustum culling
Images excerpt from OpenGL OptimizerTM
Programmers Guide
with view frustum culling and occlusion
culling
10Culling
- VRML97
- View frustum culling using scene graph hierarchy
- Bounding box defined in local coordinate for all
grouping nodes - Anchor, Billboard, Collision, Group, Inline,
Switch, Transform
Transform eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField SFVec3f center 0 0 0 (- ?, ?)
exposedField MFNode children exposedField
SFRotation rotation 0 0 1 0 -1,1,(- ?, ?)
exposedField SFVec3f scale 1 1 1 (0, ?)
exposedField SFRotation scaleOrientation 0 0 1 0
-1,1,(- ?, ?) exposedField
SFVec3f translation 0 0 0 (- ?, ?) field
SFVec3f bboxCenter 0 0 0 (- ?, ?)
field SFVec3f bboxSize -1 -1 -1 (0, ?)
or -1,-1,-1
11Culling
- WTKTM
- View frustum culling using scene graph hierarchy
- Grouping nodes
- Anchor, Group, Inline, LOD, ROOT, Separator,
Switch, Transform - leaf nodes
- Geometry, Fog, Light, Transform
- Two levels of bouding volume
- Extents of node
- world axis aligned bounding box
- Radius and Midpoint of node
- Bounding sphere
Z axis
Y axis
radius
extents1Z
extents0Y
midpoint
extents1Y
extents0Z
X axis
extents0X
extents1X
Image excerpt from WTKTM Reference Manual Release
6
12Culling
- OpenGVSTM
- View frustum culling using objects hierarchical
bounding boxs - GV_obi_set_bbox_local()
- GV_obi_inq_bbox_local()
- GV_obi_inq_bbox_full()
- GV_obi_inq_bbox_full_world()
- Turn on or off culling
- GV_obi_set_culling_state()
- GV_obi_inq_culling_state()
- No special grouping nodes for the hierarchy
- GV_obi_dettach_child()
- GV_obi_attach_child()
- GV_scn_add_object()
Scene
objects
obd
obd
obi
obi
obi
obd
obd
obd
13Culling
- Why view frustum culling using the hierarchy of
bounding volumes - Big gain big saved time - small computational
overhead - If the uniformly distribution of objects and 60o
field of view - then more than 80 objects are culled
14LOD in Commercial system
- General process of the Virtual World management
- World creation (Modeling)
- World running (Runtime management)
- Multiresolution model generation
- In the modeling stage
- Generating models with multiple details from the
original most detailed one - LOD selection
- In runtime management stage
- Selecting an appropriate detail of the
multiresolution model
15LOD in Commercial System
- Commercial systems with the modeling stage
- General Purpose 3D Modeling Tools
- MayaTM / 3DS MaxTM / SoftImageTM
- VR Oriented Tools
- MultiGenTM / VRTTM (SuperscapeTM )
- Commercial systems with the runtime management
stage - General 3D libraries
- PerformerTM / InventorTM / Java3DTM / OpenGL
Optimizer / VRML 97TM based libraries - VR runtime systems
- WTKTM / OpenGVSTM / VegaTM / VRTTM
(SuperscapeTM )
16LOD in modeling stage
- MayaTM
- Multiresolution creation is supported
- Nurbs based surface modeling
- Multiresolution through Nurbs tessellation
resolutions - Multiresolution selecting in preview rendering
mode - Discrete selection
- Based on the distance
17LOD in modeling stage
- MultiGenTM
- Multiresolution Creation is supported as a basic
feature - Grid subsampling methods
- Discrete set of
- different detail models
- Morphing Mechanism
Images excerpt from MultiGen II ProTM Users Guide
18LOD in modeling stage
- 3DS MaxTM
- Multiresolution Creation is supported as a basic
feature - Face removing methods
- Face size / Edge angle / Edge length / Smooth
based simplification - Discrete set of different detail models
19LOD in modeling stage
- SoftImageTM
- Multiresolution Creation is supported as a basic
feature - Three methods
- Rule based
- Angle / Radius / Length / Area / Height
- Optimization based
- Choosing points from the generated point clouds
- Filter based
- Discrete set of different detail models
20LOD in modeling stage
Images excerpt from SoftImageTM 3D 3.5 Users
Guide
21LOD in modeling stage
Images excerpt from SoftImageTM 3D 3.5 Users
Guide
22LOD in modeling stage
Images excerpt from SoftImageTM 3D 3.5 Users
Guide
23Other LOD generator
- OpenGL OptimizerTM
- Built-in LOD generator
- Decimation Method
- vertexWeight W 0 distance W 1
normalDeviation W 2 curvature - Lattice Method
Images excerpt from OpenGL OptimizerTM
Programmers Guide
24Images excerpt from OpenGL OptimizerTM
Programmers Guide
25LOD Generator
- Why the most of the tools using simple
algorithms? - Complex algorithms requires a lot of patience of
the user - Interactive control over parameters with simple
algorithms - vs. Sub-optimal algorithms with a lot of waiting
time - Alternatives Let the user may intervene the
process of the complex optimization (like
SoftImage) - Why the most of the tools using simple
representations? - Object-wise discrete detail levels
- Simple and easy to integrate in the existing
scene graph
26LOD in runtime
- PerformerTM
- LOD node Grouping and selecting different
detail geometric nodes - Selecting using distance criteria
- Fade / Blending between two different levels
Image excerpt from IRIS PerformerTM Programmers
Guide
27LOD in runtime
- PerformerTM continued
- Frame rate control
Image excerpt from IRIS PerformerTM Programmers
Guide
28LOD in runtime
- PerformerTM continued
- More sophisticated detail control For Terrain
Image excerpt from IRIS PerformerTM Programmers
Guide
29LOD in runtime
- InventorTM / Java3DTM / VRML97 / OpenGL
OptimizerTM - LOD node based selector
Images excerpt from OpenGL OptimizerTM
Programmers Guide
30LOD in runtime
- WTKTM (R8) / OpenGVSTM / VEGATM / VRTTM
(SuperScapeTM ) - Basically performer based systems
Images excerpt from WTKTM R8 Reference Manual
31LOD in runtime
- Selector in general
- Scene graph level selector
- Easy and simple representation
- Selector for the specific object type
- Terrain
- Tightly coupled with the object internal
representation mechanism