ENTERTAINMENT COMPUTING

addition, our long-term plans include providing support for game consoles The Panda3D and Macs running OS X. NETWORKED We designed Panda to support a Graphics Engine range of networked applications in- cluding multiuser design scenarios, Mike Goslin and Mark R. Mine, Walt Disney Internet Group multiplayer games, and multiple syn- chronized displays powered by multi- ple PCs. In addition, developers can use Panda to deliver downloadable experiences over the Internet.

isney’s VR Studio developed Panda3D, a graphics engine Disney’s new engine has and programming environ- D ment, to be flexible enough to already proven useful for support everything from real- internal and external time graphics applications to the development of high-end virtual real- projects. ity theme park attractions or video games. The acronym itself lists Panda’s primary features as a platform-agnos- ity. The system represents services Designers thoroughly leverage tic, networked, display architecture. such as rendering, audio, peripheral Panda’s networked features in the As a result of its powerful and flexi- devices, graphical user interfaces, and development of massively multiplayer ble design, much of the Panda system’s scripting languages in an abstract online games. In Toontown Online, for architecture reflects the occasionally form so that it can use different plat- example, Panda’s small memory foot- opposing goals of performance and ver- forms and external software packages print makes it possible to support the satility. A full-featured engine, Panda interchangeably. online delivery of large content. As includes the following subsystems: How Panda employs a scene graph Figure 1 shows, an application can for rendering provides a good exam- begin running and then continue • particle systems, ple of abstraction layer use. All code downloading content in the back- • physics and collisions, specific to rendering on a particular ground as needed. In addition, the in- • soft- and hard-skin character ani- platform is contained within a well- game requirements for a massively mation, defined class called a graphics state multiplayer game include built-in con- • 2D and 3D nonuniform rational guardian. After the system transforms cepts of distributed objects, visibility, B-spline support, and culls the scene graph, it hands off and efficient network communications. • 2D graphical user interface sup- the graphics entities to the GSG for port, rendering. A game or application only DISPLAY ARCHITECTURE • multipass rendering, and needs to interact with the scene graph, Panda can drive a range of displays • a real-time shader framework. which means the only part of the code from low-end PCs up to high-end mul- that the system must port and optimize tiscreen immersive theater environ- Since its release as an open for a particular hardware platform is ments. Configuring applications that software project in 1999, Panda has the local version of the GSG class require multiple windows, even if they served as the platform for many inter- itself. require synchronization across hard- nal theme park design projects as well Panda currently runs on a wide array ware platforms, is relatively easy. as Disney’s Toontown Online (www. of graphics cards for all flavors of The ability to specify the state of toontown.com), released for the PC Windows PCs, PCs, and Silicon nodes internal to the scene graph in 2002. Graphics workstations running Irix. means that an object’s state depends on The engine offers rendering support for an ordered accumulation of all the PLATFORM-AGNOSTIC DirectX, OpenGL, and Pixar’s Render- states in that object’s ancestor nodes, Panda makes extensive use of ab- man (S. Upsill, The RenderMan Com- up to the scene graph’s root. To avoid straction layers to facilitate portabil- panion, Addison-Wesley, 1990). In having to aggregate this state every

112 Computer rendering frame, Panda includes an efficient caching mechanism. The sys- tem initially determines an object’s properties by doing a full traversal of the scene graph, caching the results, and storing the cumulative results at each node. After doing this, the engine only recomputes a node’s properties when an intervening state changes. Panda supports several methods of dynamically scaling content to take advantage of different hardware capa- bilities. The system implements sev- eral visibility algorithms to eliminate unnecessary rendering, including cell portal visibility (D.P. Luebke and C. Georges, “Portals and Mirrors: Sim- ple, Fast Evaluation of Potentially Visible Sets,” Proc. 1995 Symp. Inter- active 3-D Graphics, ACM Press, 1995, pp. 105-106) and another cell visibility algorithm based on adja- Figure 1. Online content delivery. Panda’s small memory footprint enables background cency. Panda also supports fading downloading of content for graphics-intensive applications such as Disney’s Toontown between levels of detail. As a result, Online. the same Panda application can look good on a high-end graphics work- station and yet still run at high frame rates on an older PC. Development is also underway on a distributed rendering system for Panda, Pandamonium, which developers will use for multidisplay rendering on PC graphics clusters. Similar in spirit to WireGL (G. Humphreys et al., “WireGL: A Scalable Graphics System for Clusters,” Proc. ACM Siggraph 2001, ACM Press, pp. 129-140), Chromium (G. Humphreys et al., “Chromium: A Stream Processing Framework for Interactive Graphics on Clusters,” Proc. ACM Siggraph 2002, ACM Press, pp. 693-712), and Blue-c (M. Gross et al., “Blue-c: A Spatially Immersive Display and 3D Video Figure 2. Interface generation. Panda can generate 2D GUIs using Python’s Tkinter/Pmw Portal for Telepresence,” Proc. ACM wrappers around the Tcl/Tk API. Siggraph 2003, ACM Press, 2003, pp. 819-827), Pandamonium distributes Standard tools in C++ and ensured that it takes advan- low-level scene graph changes across a Wherever possible, Panda uses stan- tage of the Standard Template Library. network. dard programming tools and tech- As Figure 2 shows, developers can use niques. This decreases the learning curve Python’s Tkinter/Pmw wrappers around KEY FEATURES for new Panda programmers and makes the Tcl/Tk API to generate graphical In addition to the attributes that the engine more adaptable to advances user interfaces. They can use the Cg Panda’s name represents, several other in compilers, graphics, and other related high-level shader language to create prominent features deserve mention. components. We wrote much of Panda advanced rendering effects.

October 2004 113 Entertainment Computing

To integrate with the variety of input standard for simulation and game guages other than Python. This system devices that virtual reality applications development. Since 2002, Carnegie works with any interpreted language require, Panda supports the Virtual Mellon University’s Entertainment and that has a foreign function interface Reality Peripheral Network API (www. Technology Center has become a cen- that allows calls to C libraries. Inter- cs.unc.edu/research/vrpn). Developed tral repository for information related rogate works like a compiler, scanning at the University of North Carolina at to Panda and the Panda community and parsing C++ code. Instead of cre- Chapel Hill, VRPN has become a de (http://etc.cmu.edu/panda3d). ating object libraries, however, it facto standard for the tracker and input creates a database of entities such as device drivers common to interactive Rapid prototyping objects, methods, and global variables simulations. Panda uses the Python scripting lan- that are contained in the correspond- Panda also facilitates flexible content guage (www.python.org) as an inter- ing C++ library. creation. It can import models and ani- face to C++ libraries. Developers can The system can then query this data- mations from common programs such use Python, an interpreted language, base to discover the functional elements as Maya, MultiGen, 3Dstudio Max, to make changes to their code without and their interfaces. To use the data- Softimage, and Lightwave. The engine recompiling. This allows for rapid pro- base, the developer creates an auto- also supports most common image and totyping, which can shorten develop- matic code generator in the scripting sound file formats. ment time and improve quality— language. The generator scans the making Panda particularly useful for Interrogate database and generates Open source research projects and mockups during scripting-language wrapper calls that Panda benefits from having a thriv- game development. Because Python execute the C library calls via the script- ing open source community for docu- also resembles C, most programmers ing language’s foreign function inter- mentation, testing, and development will recognize familiar rules and struc- face. Interrogate imposes no restric- of new features. Its performance char- tures and can get started relatively tions on exactly how a scripting lan- acteristics and free availability as an quickly. guage interfaces with the C libraries; open source software project position With the built-in Interrogate system, the libraries can interface in whatever Panda as a potential graphics engine Panda can be used with scripting lan- way best fits their language’s natural environment.

evelopers have already used Panda to release and support mul- D tiple professional, production- quality applications (http://sourceforge. net/projects/panda3d/). They have used omputeromputer the engine to design both theme parks and theme park attractions, as the plat- CC form for a variety of research and Computer is always looking for interesting editor - development projects, and as the engine ial content. In addition to our theme articles, we for the successful massively multiplayer online Toontown game. Panda is cur- have other feature rently being used for several research sections such as Perspectives, Computing and game projects, both inside and out- side Disney. Practices, and Research Features as well as numerous columns to which Mike Goslin and Mark R. Mine are you can contribute. Check out our author developers at the Walt Disney Internet Group, VR Studio. Contact Goslin at guidelines at [email protected] and Mine at [email protected].

Editor: Michael Macedonia, Georgia Tech Research Institute, Atlanta; [email protected]

114 Computer