URBAN
WP4: Efficient visualisation and streaming
Tasks 4.1 + 4.2
Efficient visualization and streaming
◦ Problem: huge datasets
Guarantee interactive framerates
Data transfer from servers
Status
◦ Interactive City Viewer demo
Both on desktop and Mobile (iPhone) systems
Streaming data from server
Using TeleAtlas 3D city data
Horizon Culling
WP4: Task 4.1
Quadtree
◦ Splitting rule: number of buildings
◦ Leaf cells store building data
Geometry
Collision geometry
Segments for horizon culling (building tops)
Each cell can be requested separately
3D Building Data structure
Paris
◦ Geometry: 1.4 GB
◦ Collision geometry: 89 MB
◦ Texture Atlas: 5 texture atlas files (2048x2048)
106 MB (.dds format with mipmap levels)
◦ Segments: 40 MB
Barcelona
◦ Geometry: 600 MB
◦ Collision geometry: 31 MB
◦ Texture Atlas: 4 texture atlas files (2048x2048)
87 MB (.dds format with mipmap levels)
◦ Segments: 14 MB
Example data sizes
Texture Atlas Example
Interactive City Viewer
(Desktop)
Interactive City Viewer (iPod)
Horizon Culling Results
1 14 27 40 53 66 79 92 105 118
131 144
157 170
183 196
209 222
235 248
261 274
287 300
313 326
339 0
10 20 30 40 50 60 70 80
Framerate
Horizon OFF Horizon ON
1 14 27 40 53 66 79 92 105 118
131 144
157 170
183 196
209 222
235 248
261 274
287 300
313 326
339 0
100000 200000 300000 400000 500000 600000
Triangle Count
Horizon OFF Horizon ON
“A Flexible and Extensible Architecture for Visibility Culling”
Miquel À. Rújula, Jeroen Dierckx, Tom
Jehaes, Peter Quax, Wim Lamotte and Pere A. Palmer
Conference on Computer Game Design and Technology
Paper Accepted for GDTW
2008
Further experimentation with different splitting strategies for building the quadtree
◦ Important factors: render performance, download size per cell, segment count, …
Experiment with different strategies for building the texture atlas
◦ One for the whole city <-> one for each cell
Build on previous experience with LoD solutions
◦ Combinations of traditional 3D models with image-based and procedurally generated models
Leverage the existing quadtree data model for LoD
◦ Parent nodes store a lower resolution version of the merged children
Procedurally generated data?
WP4: Task 4.1 planning
Interaction framework
◦ Flexible interaction specification
Status
◦ Scripting completely integrated into the existing framework
◦ Application interaction is defined by writing scripts
◦ Visual world editor preliminary version
WP4: Task 4.2
Scripting Example
-- Key bindings
function onKeyPressed(event)
if event.key == Keyboard.KC_1 then billboard1.URL = “controls.swf"
elseif event.key == Keyboard.KC_2 then
billboard1.URL = "http://www.youtube.com/v/lcCAh-j_Kvg&hl=en&fs=1&rel=0&autoplay=1"
elseif event.key == Keyboard.KC_3 then
billboard1.URL = "http://www.youtube.com/v/8BGbOpm9dyk&hl=en&fs=1&rel=0&autoplay=1"
elseif event.key == Keyboard.KC_3 then
billboard1.URL = "http://japonyol.net/maps/swf/slider.swf"
end end
listener = InputManager:createKeyboardListener() listener.keyPressed = onKeyPressed
-- Create the demo billboard settings = BillboardSettings()
settings.sceneMgr = Application:getCamera().sceneManager
settings.mesh = "../../data/Ogre/meshes/billboards/wall-billboard.mesh"
settings.subMesh = 2 settings.zoomTime = 0.5 settings.width = 800 settings.height = 600
settings.startURL = “controls.swf"
settings.position = OgreVector3(-48, 2, -61)
billboard1 = BillboardManager:createBillboard(1, settings)