Panda3D in the CAVE / WinXP Cluster / Linux Prism ?

There are a few forum posts regarding using Panda3D in a CAVE system, but no concrete answer to if it has been done.

Does anyone know of any implementations or could point me to them? I assume it’s not provided out of the box …

We have two setups that we can swap between to drive the CAVE displays:

  1. A Windows cluster driving each screen (3 walls and 1 floor)
  2. Prism running SUSE Linux


I don’t know what Prism refers to, and I’m not sure precisely what you mean by “a windows cluster driving each screen”. So please forgive me if I answer your question naively.

Panda is actively used within Disney to drive a CAVE environment. I don’t know much about the architecture in that system, but they have multiple PC’s all showing different views into the same scene, each driving a different projector. To make this work requires starting up a different Panda process on each PC, loading up the same scene into each one, and ensuring that all the cameras and animations etc. are in sync. There are a handful of tools in direct/src/directd and direct/src/directdServer that provide support for synchronizing different Panda processes in this way–the tools provide mechanisms to send commands between processes, but you have to write the glue code.

If, of course, you can drive all of your rendering from a single PC, it’s much easier and Panda can do it without blinking.


OK, by cluster, I mean that we have a total of 5 machines running WinXP. One of them is the master and the remaining 4 are the slaves. Each slave outputs to one of the projectors (CAVE walls).

By Prism, this is an SGI machine that is capable of driving ALL projectors at once. Therefore we just have one process on one machine as opposed to what you describe above.

Either way would work. By what you say, the latter seems simpler. Do you have any examples you can point to?


One driving computer is certainly simpler, although the downside is that one CPU has to process lots of viewpoints and can become a bottleneck. This may or may not be a problem based on the nature of your scenes; it’s probably in any case be the easiest way to get started.

In the Prism case, how do you control which projector a window opens onto? Is there one virtual desktop with each projector mapped into a particular region? If so, it’s easy to open a number of windows, one for each projector region; or even to open one large window (if this works in this model) covering the entire desktop, with a different DisplayRegion for each projector region. Not sure which approach will be lower overhead in your situation; you can try them both.

I don’t have any specific examples of doing this for a CAVE, but there are examples in the forums of opening multiple windows and/or multiple DisplayRegions.