Construction of an Open Geometry Server for Client-Server Virtual Environments Chris Faisstnauer,...
-
date post
19-Dec-2015 -
Category
Documents
-
view
216 -
download
0
Transcript of Construction of an Open Geometry Server for Client-Server Virtual Environments Chris Faisstnauer,...
Construction of an Construction of an Open Geometry Server for Open Geometry Server for
Client-Server Virtual EnvironmentsClient-Server Virtual Environments
Chris Faisstnauer, Chris Faisstnauer,
Werner PurgathoferWerner Purgathofer
Vienna University of TechnologyVienna University of TechnologyJean-Dominique Gascuel
Imagis, GrenobleMichael Gervautz
Imagination, Vienna
2 / 18
IntroductionIntroduction Client-server architecture to integrate of incompatible Client-server architecture to integrate of incompatible
graphics systems/applicationsgraphics systems/applications Detailed explaination of construction processDetailed explaination of construction process
Put together system based on known techniquesPut together system based on known techniques Case study - Provide help in construction of such systems Case study - Provide help in construction of such systems
Categorization of clearly distinct default componentsCategorization of clearly distinct default components Provide insights about design decisionsProvide insights about design decisions Good relation between cost/performance concerning Good relation between cost/performance concerning
development and implementation)development and implementation) "Implementation" talk/paper "Implementation" talk/paper
3 / 18
The PAVR-projectThe PAVR-project European union project: 10 universitiesEuropean union project: 10 universities Ease collaboration and exchange of know-how concerning Ease collaboration and exchange of know-how concerning
virtual reality / animationvirtual reality / animation (Software-) “Platform for Animation and Virtual Reality”(Software-) “Platform for Animation and Virtual Reality” Problem:Problem:
Incompatible systems (software/hardware)Incompatible systems (software/hardware) Stand-alone applicationsStand-alone applications
Goal:Goal: Link (existing) applications into common environmentLink (existing) applications into common environment Little effort, minor code changesLittle effort, minor code changes
4 / 18
ApproachApproach Existing systemsExisting systems
RING, NPSNET, DIVE, SPLINE, SPLINE,RING, NPSNET, DIVE, SPLINE, SPLINE,NETEFFECT, PARADISE, AVIARY,...NETEFFECT, PARADISE, AVIARY,...
Client-server systemClient-server system Common communication protocolCommon communication protocol Clients replicate environment using Clients replicate environment using
own routines / data structuresown routines / data structures Integration: translate data structures Integration: translate data structures
protocol protocol client client ComponentsComponents
Simple/generic protocolSimple/generic protocol Flexible parser (easy integration into clients)Flexible parser (easy integration into clients) Efficient server (geometric data / transmission service)Efficient server (geometric data / transmission service)
C OM M U NIC ATIO N LAYER
COM MONSCENEDATABASE
C OM M UN ICATIO N LAY ER
C OM M UN ICATIO N LAY ER
5 / 18
Geometry Server Components 1/2Geometry Server Components 1/2
Communication layer: provide network connectionsCommunication layer: provide network connections Easy to integrate, small (Sockets, TCP/IP)Easy to integrate, small (Sockets, TCP/IP)
Communication protocolCommunication protocol Transmit geometry objects + commands modify propertiesTransmit geometry objects + commands modify properties Easy to interpret for server / clients Easy to interpret for server / clients
Lexical parser / pre-determined callback functionsLexical parser / pre-determined callback functions Defined headers, proprietary implementation server/clientsDefined headers, proprietary implementation server/clients Modify protocol without changes in program codeModify protocol without changes in program code
Scene database: Scene database: Hierarchical scene graph (nodes describe objects)Hierarchical scene graph (nodes describe objects) History list (describe graph changes)History list (describe graph changes)
Client list:Client list:
6 / 18
Geometry Server Components 2/2Geometry Server Components 2/2
Flow controlFlow control Message filteringMessage filtering Time management: online vs. offline modeTime management: online vs. offline mode
SCEN EDA TA BA SE
CLIEN T LISTCOMMUNICATION
LAYER
PARSER
7 / 18
Online Vs. Offline ModeOnline Vs. Offline Mode Online mode:Online mode:
"Real-Time" mode (typical for VR-applications)"Real-Time" mode (typical for VR-applications) Time continuously progressing (controlled by server)Time continuously progressing (controlled by server) Scene modification processed / distributed immediatelyScene modification processed / distributed immediately Animation / scene viewing happen at same timeAnimation / scene viewing happen at same time No history of scene changes requiredNo history of scene changes required
Offline mode:Offline mode: No progressing/actual timeNo progressing/actual time Query/modify scene graph at any specific point on time-lineQuery/modify scene graph at any specific point on time-line Animation / scene viewing happen at different timesAnimation / scene viewing happen at different times Must store whole history of scene graph changesMust store whole history of scene graph changes E.g. collaborative construction keyframing animation / CADE.g. collaborative construction keyframing animation / CAD
8 / 18
Communication protocolCommunication protocol
Receive / transmit messages: common protocolReceive / transmit messages: common protocol Environment described using nodes Environment described using nodes node tree (graph) node tree (graph)
Describe concrete / abstract objectsDescribe concrete / abstract objects Node type/name, field type/name/valueNode type/name, field type/name/value
Geometry of objects: subset of VRML (descriptive language)Geometry of objects: subset of VRML (descriptive language) Commands to modify scene graphCommands to modify scene graph
UPDATE: modify node field ('value' VS. 'pointer')UPDATE: modify node field ('value' VS. 'pointer') ADD / REMOVE: add node/tree to 'grouping' node ADD / REMOVE: add node/tree to 'grouping' node SETTIME: specify time of modification (offline mode)SETTIME: specify time of modification (offline mode) GETTIME: specify time of query (offline mode)GETTIME: specify time of query (offline mode) SET: setting flagsSET: setting flags
9 / 18
Data Structures – Scene NodesData Structures – Scene Nodes Scene graph implemented Scene graph implemented
as node treeas node tree Create/insert nodes: Create/insert nodes:
ADD, UPDATEADD, UPDATE Node descriptionNode description Check node tableCheck node table
Remove/delete nodes: Remove/delete nodes: REMOVEREMOVE 'Empty' UPDATE 'Empty' UPDATE
Online mode: actual state Online mode: actual state creation time = actual time creation time = actual time Offline mode: no actual state Offline mode: no actual state creation time = SETTIME creation time = SETTIME
No nodes deleted: assign 'lifespan'No nodes deleted: assign 'lifespan'
10 / 18
Data Structures – History ListData Structures – History List Each element corresponds to ADD / REMOVE / UPDATEEach element corresponds to ADD / REMOVE / UPDATE Modification of a determined node fieldModification of a determined node field
Creating: referencing / creatingCreating: referencing / creating Removing: referencing/ destroyingRemoving: referencing/ destroying Modify pointer -> reference counterModify pointer -> reference counter Timestamp=actual time (online) / SETTIME (offline)Timestamp=actual time (online) / SETTIME (offline) Traversed to generate update messages for clientsTraversed to generate update messages for clients
1
ptr to node ptr to node
11 / 18
Integration ParserIntegration Parser
Data structures client communication protocolData structures client communication protocol Translate incoming commands Translate incoming commands trigger callback-functions trigger callback-functions Parser platform independent Parser platform independent fixed set of callback headers fixed set of callback headers
Make:Make: Create node of given type/nameCreate node of given type/name Called by 'creating' add/updateCalled by 'creating' add/update
Add:Add: Append child-node to parent-node Append child-node to parent-node Remove:Remove: Remove child-node from scene graph Remove child-node from scene graph Update:Update: Change determined node field to specific value Change determined node field to specific value
Field types: pointer, boolean, float, stringField types: pointer, boolean, float, string Callbacks generate element in history listCallbacks generate element in history list
Timestamp: actual time (online) / SETTIME (offline)Timestamp: actual time (online) / SETTIME (offline) History list sorted by timestampHistory list sorted by timestamp
12 / 18
Server Main Loop - OnlineServer Main Loop - Online
On message receipt: collect/send outstanding messagesOn message receipt: collect/send outstanding messages New client:New client:
Transmit scene graphTransmit scene graph Generate entry in client-listGenerate entry in client-list
Existing client:Existing client: Generate updates since last triggerGenerate updates since last trigger Traverse history-list (from last transmitted message)Traverse history-list (from last transmitted message)
Parse message (ADD/REMOVE/UPDATE)Parse message (ADD/REMOVE/UPDATE) Modify scene graphModify scene graph Generate history elementGenerate history element
Delete history-elements sent to all clientsDelete history-elements sent to all clients Remove nodes from scene graph ('destroying remove')Remove nodes from scene graph ('destroying remove')
13 / 18
Server Main Loop - OfflineServer Main Loop - Offline Parse incoming message
GETTIME time: Update scene graph of client (as specified by last query) Match state of common scene graph at time Traverse scene graph/collect messages: Timestamp [last query,time] From last sent message: direction specified by time
SETTIME time: Use as timestamp for future ADD/REMOVE/UPDATE
ADD/REMOVE/UPDATE: Generate history element (Scene graph reflects state specified by SETTIME)
Store whole history - memory bottleneck
14 / 18
Examples - Online 1/3Examples - Online 1/3
Integration heterogeneous applicationsIntegration heterogeneous applications Facial models (Photogrammetry)Facial models (Photogrammetry) Human model (Keyframe animation)Human model (Keyframe animation) Human model (SoftImage)Human model (SoftImage) Cartoon model (CreaToon)Cartoon model (CreaToon) Animated facial modelAnimated facial model Body reconstructionBody reconstruction Boundary recovery algorithm Boundary recovery algorithm
(visualize evolution of potentials)(visualize evolution of potentials) Animated robot (Inventor)Animated robot (Inventor)
Time needed to integrate into environment: Time needed to integrate into environment: 1 evening ! 1 evening !
15 / 18
Examples - Online 2/3Examples - Online 2/3
Optimization techniques:Optimization techniques: Remove redundant updates from history-listRemove redundant updates from history-list Visibility culling (PVS: potentially visible set)Visibility culling (PVS: potentially visible set)
100 objects100 objects Movement along randomized pathsMovement along randomized paths Translated 5 times per secondTranslated 5 times per second Duration 100 seconds Duration 100 seconds 50.000 history elements generated50.000 history elements generated
Client requests updates 2 / 3 times per secondClient requests updates 2 / 3 times per second 30000 / 20000 history elements redundant30000 / 20000 history elements redundant
16 / 18
Examples - Online 3/3Examples - Online 3/3
Without redundant Without redundant messagesmessages
With redundant With redundant messagesmessages
Without visibility cullingWithout visibility culling 19.495 / 28.80119.495 / 28.801 50.000 / 50.00050.000 / 50.000
With visibility cullingWith visibility culling 3.167 / 4.7663.167 / 4.766 8.070 / 8.0788.070 / 8.078
18 / 18
ConclusionConclusion
Construction simple / generic geometry serverConstruction simple / generic geometry server "User's manual": implementation aid"User's manual": implementation aid Reflecting design decisionsReflecting design decisions Categorizing default componentsCategorizing default components Future work:Future work:
Include Levels of Detail (LOD)Include Levels of Detail (LOD) Prioritized management of update messagesPrioritized management of update messages Evaluation of perceptual error metricsEvaluation of perceptual error metrics
Sponsor: TMR Network of European CommunitySponsor: TMR Network of European Community