|
| 1 | +OpenCOVER and COVISE collaborative setup |
| 2 | +======================================== |
| 3 | + |
| 4 | +This directory contains the VRB client/server code that OpenCOVER uses for |
| 5 | +collaborative sessions. The VRB server is the central connection point. It manages clients and can host |
| 6 | +multiple sessions in which states are shared between clients. Clients can be |
| 7 | +OpenCOVER instances, coviseDaemons, and COVISE instances. |
| 8 | + |
| 9 | +What you need |
| 10 | +------------- |
| 11 | + |
| 12 | +- A working COVISE/OpenCOVER build |
| 13 | +- One VRB server endpoint that all clients can reach |
| 14 | +- A valid COCONFIG |
| 15 | + |
| 16 | +Collaborative configuration |
| 17 | +--------------------------- |
| 18 | + |
| 19 | +OpenCOVER, VRB, COVISE, and coviseDaemon use COCONFIG for connection details: |
| 20 | + |
| 21 | + <System> |
| 22 | + <VRB> |
| 23 | + <Server value="host_url" tcpPort="31253" udpPort="49999" /> |
| 24 | + <RemoteFetch value="on" path="/var/tmp/$USER/remoteFetch" hash="on" /> |
| 25 | + <CheckConnectionTimeout value="5" /> |
| 26 | + </VRB> |
| 27 | + </System> |
| 28 | + |
| 29 | +Remote fetch allows OpenCOVER to copy loaded files from the source machine. |
| 30 | +If hash is enabled, the source file system path is hashed to create individual |
| 31 | +file names. |
| 32 | + |
| 33 | +Warning: This does not work for non-VRML files that implicitly depend on other |
| 34 | +files. |
| 35 | + |
| 36 | +Client information for OpenCOVER can be configured in the COVER section: |
| 37 | + |
| 38 | + <COVER> |
| 39 | + <Collaborative> |
| 40 | + <UserName value="your_name" /> |
| 41 | + <Email value="your_email" /> |
| 42 | + <Icon value="path_to_your_icon" /> |
| 43 | + </Collaborative> |
| 44 | + </COVER> |
| 45 | + |
| 46 | +The icon (for example, .obj) is shown on the floor panel of the VR avatar. |
| 47 | + |
| 48 | +Connecting two OpenCOVER instances |
| 49 | +---------------------------------- |
| 50 | + |
| 51 | +After the configuration is set up: |
| 52 | + |
| 53 | +1. Start VRB on the configured endpoint that all clients can reach. |
| 54 | +2. Start OpenCOVER on machine A: Opencover -g your_session_name ... |
| 55 | +3. Start OpenCOVER on machine B: Opencover -g your_session_name ... |
| 56 | + |
| 57 | +Collaboration modes (Collaborate menu) |
| 58 | +-------------------------------------- |
| 59 | + |
| 60 | +The Collaborate menu is available as long as you are in a collaborative |
| 61 | +session with at least one other OpenCOVER instance. |
| 62 | + |
| 63 | +Collaboration modes: |
| 64 | + |
| 65 | +- Loose: each client moves independently and is represented to others by a VR avatar. |
| 66 | +- Master/Slave: the master perspective is forced on clients; head tracking still works. |
| 67 | +- Tight: clients share the perspective; navigation is enabled only if no other client is navigating. |
| 68 | + |
| 69 | +Using coviseDaemon |
| 70 | +------------------ |
| 71 | + |
| 72 | +The coviseDaemon signals that a client is ready to be invited to OpenCOVER or |
| 73 | +COVISE sessions. |
| 74 | + |
| 75 | +In OpenCOVER, use File -> Launch remote COVER. In COVISE, use CSCW -> manage |
| 76 | +partners. All coviseDaemons connected to the same VRB are listed and can be |
| 77 | +selected to add that client to the remote session. |
| 78 | + |
| 79 | +COVISE specifics |
| 80 | +---------------- |
| 81 | +Since COVISE objects can be quite large the VRB tries to setup peer-to-peer connections between the master client and it's slaves. If that failes the objects are tunneld through the VRB. |
| 82 | + |
| 83 | +For developers |
| 84 | +-------------- |
| 85 | + |
| 86 | +Use the SharedState template class to synchronize variables via VRB. |
| 87 | + |
| 88 | +VRML specifics |
| 89 | +-------------- |
| 90 | + |
| 91 | +TUI nodes (TUIButton, TUIToggleButton, TUISlider, TUIFloatSlider, |
| 92 | +TUIComboBox, TUIListBox) are not shared by default. Set shared TRUE to |
| 93 | +synchronize them, for example: |
| 94 | + |
| 95 | + TUIFloatSlider |
| 96 | + { |
| 97 | + elementName "your_slider_name" |
| 98 | + pos 0 14 |
| 99 | + max 100.0 |
| 100 | + min 0.0 |
| 101 | + value 0.0 |
| 102 | + shared TRUE |
| 103 | + } |
| 104 | + |
| 105 | + |
| 106 | + |
| 107 | + |
| 108 | + |
0 commit comments