Hi,
As the price of hardware is continuously dropping more and more people can afford to buy complex systems as a CAVE system(at least this was a fact before the global financial crisis). Anyways, there are many virtual reasearch institutes which want to have a CAVE in their labs. I'm a PhD in such a virtual reality research lab. But in our lab there is already a big cubic CAVE for a few years now. It uses the BSContact control from BitManagement for rendering. It has 3 walls and for each one of it there are 2 viewports superimposed one upon the other with a certain offset for stereoscopic effect. In total the system has 6 projectors and each viewport is handled by a separate PC. All the PC's are connected to a central server. They all run though as a single application, being synchronized by the server.
Because I'm not very enchanted of using any ActiveX control as BSContact or some other things like InstantReality, but something more flexible like Ogre, I need a pluging for CAVE systems.
Here are only some discussions about this:
http://www.ogre3d.org/forums/viewtopic.php?f=1&t=14521
http://www.ogre3d.org/forums/viewtopic.php?f=3&t=32881
What we (scientists) need in order to use Ogre in our research is a working plugin for CAVE (distributed) systems so that we don't have to stay and think whether we should go straight into the business with something like InstantReality which has buil-in CAVE modules, or spend weeks or even months in addition to build a stable and efficient network architecture for the CAVE. I'm exact in this situation where I have to take this decision and believe me that I really want to stick with Ogre. It's just something that definittly should be wrapper into a plugin. In my experience I built a TCP client-server application for sending frames over the socket from server to clients and I guess it would not be very complicated to implement something like this for a variable number of clients in the network. I ask for this feature and I am willing to participate in developping this plugin within networking section, since I'm not quite experienced with Ogre.
Please take a moment to think about this than if this sound's well to you we could start doing the job.
What do you say ?
CAVE plugin
- Florin
- Kobold
- Posts: 33
- Joined: Thu Mar 19, 2009 3:15 am
Re: CAVE plugin
I've read good critics regarding Ice http://www.ogre3d.org/forums/viewtopic. ... 33&start=0. This would be a first start: using Ice for networking.
What do you think the next step could be ?
What do you think the next step could be ?
- Game_Ender
- Ogre Magi
- Posts: 1269
- Joined: Wed May 25, 2005 2:31 am
- Location: Rockville, MD, USA
Re: CAVE plugin
Coming up with a decent architecture to distribute changes to the scene graph across the network. The only idea I have right now is created a "distributed" scene manager. The distributed scene manager is really just a wrapper, on the server it would pass all state updating calls to the remote scene manager(s) as well as the real underlying scene manager. The client scene managers would the receive those calls and hand them off to local real underlying scene manager. So in essence calls that load up a mesh or move a scene node, would be sent to all the remote scene managers. Of course it requires some extra work on the client and server but that basic bit of it.Florin wrote:What do you think the next step could be ?
For the network side you could create ICE interfaces to match the ogre ones you wish to work with remotely. You would have to carefully design and use to keep it from blocking or slowing down your application but it should be possible.
The other method would be a little more high level and less general. You would work at the application level and figure out a way to propagate your object state across the network in a similar manner.
Robotics @ Maryland AUV Team - Software Lead
- madmarx
- OGRE Expert User

- Posts: 1671
- Joined: Mon Jan 21, 2008 10:26 pm
- x 51
Re: CAVE plugin
I have done it for my work with ogre (without perspective correction though).
Ogre is just one rendering engin, there is no direct link with the application logic.
I used network just to send messages about changes in the scene (but not tcp, neither ice). So the scenemanagement is recalculated for each computer.
Works perfect.
Ogre is just one rendering engin, there is no direct link with the application logic.
I used network just to send messages about changes in the scene (but not tcp, neither ice). So the scenemanagement is recalculated for each computer.
Works perfect.
Tutorials + Ogre searchable API + more for Ogre1.7 : http://sourceforge.net/projects/so3dtools/
Corresponding thread : http://www.ogre3d.org/forums/viewtopic. ... 93&start=0
Corresponding thread : http://www.ogre3d.org/forums/viewtopic. ... 93&start=0
- Florin
- Kobold
- Posts: 33
- Joined: Thu Mar 19, 2009 3:15 am
Re: CAVE plugin
Hi madmarx,
Thanks for reply.

Does the networking communication slowing down your application ?
I have tried the Ogre-RackNet binding http://www.ogre3d.org/forums/viewtopic.php?p=273201 and also an updated version available here http://www.jenkinssoftware.com/raknet/f ... pic=2342.0. That looked to me quite saccadic, though other users say it's very fast. The update was about 4 times per second. Definitely I need better performance for my project.
Do you also use interpolation ?
Don't mind for so many questions, please
... I'm a curious guy
Thanks for reply.
I'm happy for youWorks perfect.
I understand this.Ogre is just one rendering engin, there is no direct link with the application logic.
Than maybe you use UDP (recommended for games) ... or is there any alternative left ?I used network just to send messages about changes in the scene (but not tcp, neither ice).
Does the networking communication slowing down your application ?
I have tried the Ogre-RackNet binding http://www.ogre3d.org/forums/viewtopic.php?p=273201 and also an updated version available here http://www.jenkinssoftware.com/raknet/f ... pic=2342.0. That looked to me quite saccadic, though other users say it's very fast. The update was about 4 times per second. Definitely I need better performance for my project.
Do you also use interpolation ?
Don't mind for so many questions, please
- madmarx
- OGRE Expert User

- Posts: 1671
- Joined: Mon Jan 21, 2008 10:26 pm
- x 51
Re: CAVE plugin
I use UDP. There is a bunch of thread about Enet in ogre forums if you want to know more
.
Network is really the burden on this app, but in my case, the scene was less than 3000 moving objects, and so was above 30fps (I don't want to go over 30fps in order to keep the network smooth, but it could have gone much quickier). For that reason I don't need interpolation on networking data, but it can be useful for special effects like realistic motion blur (but I don't use it today).
I could have improved the network system (by using int instead of string to transmit etc....). But it was already very powerful.
Do you have some informations to make the calculation of the deformation (matrix projection) due to head tracking? I would really appreciate.
Network is really the burden on this app, but in my case, the scene was less than 3000 moving objects, and so was above 30fps (I don't want to go over 30fps in order to keep the network smooth, but it could have gone much quickier). For that reason I don't need interpolation on networking data, but it can be useful for special effects like realistic motion blur (but I don't use it today).
I could have improved the network system (by using int instead of string to transmit etc....). But it was already very powerful.
Do you have some informations to make the calculation of the deformation (matrix projection) due to head tracking? I would really appreciate.
Tutorials + Ogre searchable API + more for Ogre1.7 : http://sourceforge.net/projects/so3dtools/
Corresponding thread : http://www.ogre3d.org/forums/viewtopic. ... 93&start=0
Corresponding thread : http://www.ogre3d.org/forums/viewtopic. ... 93&start=0
- Florin
- Kobold
- Posts: 33
- Joined: Thu Mar 19, 2009 3:15 am
Re: CAVE plugin
Hi madmarx,
So you are using Enet... hmm. Maybe I will use it too. I'll think about it...
Our CAVE looks basically like this seen from the top:
http://www.postimage.org/image.php?v=gxvIEPS
Let's take the case in the picture: when you move the head tracker from the black point to the red one it means that you have been moving inside the CAVE room and of course in the virtual environment. In the new position you have new frustrums for each screen. This means that projection matrixes will have to adjust to the new frustrums, just as if you would use some input device to navigate in the virtual environment from the black point to the red one.
Secondly, the blue virtual object will lie a part in the frustrum of the right side screen and the other part in the frustrum of the front screen. There shouldn't be any discontinuity if the cameras are rotated at 90 degrees one from another. Correct me if I am wrong. You could post a picture of the problem you are experiencing though, maybe there is something that I am missing.
Regards.
So you are using Enet... hmm. Maybe I will use it too. I'll think about it...
Our CAVE looks basically like this seen from the top:
http://www.postimage.org/image.php?v=gxvIEPS
Let's take the case in the picture: when you move the head tracker from the black point to the red one it means that you have been moving inside the CAVE room and of course in the virtual environment. In the new position you have new frustrums for each screen. This means that projection matrixes will have to adjust to the new frustrums, just as if you would use some input device to navigate in the virtual environment from the black point to the red one.
Secondly, the blue virtual object will lie a part in the frustrum of the right side screen and the other part in the frustrum of the front screen. There shouldn't be any discontinuity if the cameras are rotated at 90 degrees one from another. Correct me if I am wrong. You could post a picture of the problem you are experiencing though, maybe there is something that I am missing.
Regards.
- Florin
- Kobold
- Posts: 33
- Joined: Thu Mar 19, 2009 3:15 am
Re: CAVE plugin
The new frustum should change just as if you would be looking on a window instead of a screen. Something like this http://www.postimage.org/image.php?v=aV1qkFh9 or http://www.youtube.com/watch?v=Jd3-eiid-Uw
This function takes the coordinates of the top left/ bottom right corners of the screen. I haven't worked with it before but I will in the next few days cause I also need to implement the head tracking. I'll let you know about my progress.
Regarding the network issue, I don't know why I couldn't get ENet server and client to connect. After 2 days of playing with it I give it up. Now I am playing with ZoidCom. I had more succes with this one. It has some low level networking options (Layer 2) but also very handy high level ones (bit streaming, object replication, events etc.). I like it. The only thing I don't know is which one would be the best choice. I liked Ice at the begining but soon it became kinda complex, Enet didn't worked for me
while ZoidCom seems pretty neat and straight forward. I only wonder how fast would it turn out to be.
Code: Select all
void Frustum::calcProjectionParameters(Real& left, Real& right, Real& bottom, Real& top) constThis function takes the coordinates of the top left/ bottom right corners of the screen. I haven't worked with it before but I will in the next few days cause I also need to implement the head tracking. I'll let you know about my progress.
Regarding the network issue, I don't know why I couldn't get ENet server and client to connect. After 2 days of playing with it I give it up. Now I am playing with ZoidCom. I had more succes with this one. It has some low level networking options (Layer 2) but also very handy high level ones (bit streaming, object replication, events etc.). I like it. The only thing I don't know is which one would be the best choice. I liked Ice at the begining but soon it became kinda complex, Enet didn't worked for me
- madmarx
- OGRE Expert User

- Posts: 1671
- Joined: Mon Jan 21, 2008 10:26 pm
- x 51
Re: CAVE plugin
Hi, thanks a lot for the informations about the frustum.
I think I will try to update my code later in the year or in 2010 (<=>when I got time) with stereo too.
Concerning the network issue, sorry that Enet did not work for you (
I feel bad that my advice did not help you more). I hope you will find a solution that fits your needs. I don't know ZoidCom, but from the front page it looks like it has lots of nice high level features.
Good luck
!
I think I will try to update my code later in the year or in 2010 (<=>when I got time) with stereo too.
Concerning the network issue, sorry that Enet did not work for you (
Good luck
Tutorials + Ogre searchable API + more for Ogre1.7 : http://sourceforge.net/projects/so3dtools/
Corresponding thread : http://www.ogre3d.org/forums/viewtopic. ... 93&start=0
Corresponding thread : http://www.ogre3d.org/forums/viewtopic. ... 93&start=0