Construction of an Open Geometry Server for Client-Server Virtual Environments Chris Faisstnauer,...

18
Construction of an Construction of an Open Geometry Server for Open Geometry Server for Client-Server Virtual Client-Server Virtual Environments Environments Chris Faisstnauer, Chris Faisstnauer, Werner Purgathofer Werner Purgathofer Vienna University of Vienna University of Technology Technology Jean-Dominique Gascuel Imagis, Grenoble Michael Gervautz Imagination, Vienna
  • 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

17 / 18

Examples - OfflineExamples - Offline

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