Panda3D
Encyclopedia
Panda3D is a game engine
Game engine
A game engine is a system designed for the creation and development of video games. There are many game engines that are designed to work on video game consoles and personal computers...

 which includes graphics, audio, I/O, collision detection, and other abilities relevant to the creation of 3D games.

Panda3D is open source and, as of May 28, 2008, free software under the revised BSD license. Releases prior to May 28, 2008 are not considered Free Software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 due to certain errors in the design of the old Panda3D license. Despite this, these older releases of Panda3D can also be used for both free and
commercial game development at no financial cost.

Panda3D's intended game-development language is Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

. The engine itself is written
in C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

, and utilizes an automatic wrapper-generator to expose the complete functionality of the
engine in a Python interface. This approach gives a developer the advantages of Python development, such as rapid development and advanced memory management, but keeps the performance of a compiled language in the engine core. For instance, the engine is integrated with Python's garbage collector, and engine structures are automatically managed.

The manual and the sample programs use Python, although the developers are working on translating the manual to C++ and providing C++ sample programs.

A developer using Panda3D typically writes code in Python, but it is also possible to directly access the engine using C++ code.

The users of Panda3D include the developers of several large commercial games, a few open source projects, and a number of
university courses that leverage Panda3D's short learning curve. The community is small but active, and questions on the forum are generally answered quickly.

Design

Panda3D is a scene graph engine. This means that the virtual world is initially an empty Cartesian
Cartesian coordinate system
A Cartesian coordinate system specifies each point uniquely in a plane by a pair of numerical coordinates, which are the signed distances from the point to two fixed perpendicular directed lines, measured in the same unit of length...

 space
into which the game programmer inserts 3D models. Panda3D does not distinguish between "large" 3D models,
such as the model of an entire dungeon or island, and "small" 3D models, such as a model of a table or
a sword. Both large and small models are created using a standard modeling program such as Blender
Blender (software)
Blender is a free and open-source 3D computer graphics software product used for creating animated films, visual effects, interactive 3D applications or video games. The current release version is 2.60, and was released on October 19, 2011...

, 3ds Max or Maya, loaded into Panda3D, and then inserted into the Cartesian space.

The Panda3D scene graph exposes the functionality of OpenGL and DirectX in a fairly literal
form. For instance, OpenGL and DirectX both have fog capabilities. To enable fog in Panda3D, one
simply stores the fog parameters on a node in the scene graph. The fog parameters
exactly match the parameters of the equivalent calls in the underlying APIs. In this way,
Panda3D can be seen as a thin wrapper around the lower-level APIs. Where it differs from them
is that it stores the scene, whereas OpenGL and DirectX do not. Of course, it
also provides higher-level operators, such as loading models, executing animations,
detecting collisions, and the like.

Panda3D was first engineered before the existence of vertex and pixel shaders.
It acquired support for manually-written shaders in 2005. However, users have been slow
to leverage modern per-pixel lighting techniques in their games. The developers theorize
that this is because shader programming can be
quite difficult, and that many game developers want the engine to handle it automatically.

To remedy this situation, the Panda3D developers have recently given Panda3D the ability to synthesize
shaders automatically. This synthesis occurs if the 3D modeler marks a model for per-pixel lighting,
or if the modeler applies a normal map, gloss map, self-illumination map, or other capability that
exceeds the capabilities of the fixed-function pipeline.
The intent of the synthesis is to render the model as the modeler intended, without any intervention
from the programmer.

Non-Graphical Capabilities

Panda3D provides capabilities other than 3D rendering. Chief among these are:
  • Performance analysis tools.
  • Scene graph exploration tools.
  • Debugging tools.
  • A complete art export/import pipeline.
  • 3D Audio, utilizing either FMOD
    FMOD
    FMOD is a proprietary audio library made by Firelight Technologies that plays music files of diverse formats on many different operating system platforms, used in games and software applications to provide audio functionality....

    , OpenAL
    OpenAL
    OpenAL is a cross-platform audio API. It is designed for efficient rendering of multichannel three dimensional positional audio. Its API style and conventions deliberately resemble those of OpenGL.- History :...

     or Miles Sound System
    Miles Sound System
    Miles Sound System , formerly known as Audio Interface Library , is a sound software system primarily for video games and used mostly as an alternative for low-end audio chipsets. It uses little CPU time while providing adequate audio output. It was originally a middleware driver library for...

    .
  • Collision detection.
  • Physics system, and full integration for the Open Dynamics Engine
    Open Dynamics Engine
    The Open Dynamics Engine is a physics engine in C/C++. Its two main components are a rigid body dynamics simulation engine and a collision detection engine...

    , experimental PhysX
    PhysX
    PhysX is a proprietary realtime physics engine middleware SDK developed by Ageia with the purchase of ETH Zurich spin-off NovodeX in 2004...

     and Bullet integration.
  • Keyboard and Mouse support.
  • Support for I/O devices.
  • Finite state machines.
  • GUI.
  • Networking.
  • Artificial intelligence.

History

The Disney VR studio is a branch of Disney that was created to build 3D attractions for Disney theme parks. They built an attraction called "Aladdin's Magic Carpet," and the
engine they created for that was eventually to become Panda3D. The engine in its current form bears little resemblance to those early years. Over time, Panda3D was used for additional VR rides at Disney theme parks, and was eventually used in the creation of Toontown Online
Toontown Online
Disney's Toontown Online is a massively multiplayer online role-playing game created by The Walt Disney Company and billed as the first such game intended for kids and families. Designed for children as young as seven, but teens and adults also play this, the depth of the game's content has drawn...

, an online game set in a cartoon world, and later for the second MMORPG
MMORPG
Massively multiplayer online role-playing game is a genre of role-playing video games in which a very large number of players interact with one another within a virtual game world....

, Pirates of the Caribbean Online
Pirates of the Caribbean Online
Pirates of the Caribbean Online, sometimes shortened to Pirates Online or POTCO, is a MMORPG , created by the Walt Disney Company. It is based on the film series and theme park attraction of the same name...

.
In 2002, the engine was released as open source. According to the authors, this was so that they "could more easily work with universities on Virtual Reality research projects."
However, it took some time for Panda3D to take off as an open-source project. From the article:

The system, although quite usable by the team that developed it, was not quite "open source ready." There were several interested users, but building and installing the system was incredibly complex, and there was little in the way of documentation or sample code, so there was no significant open source community right away.


However, the open-sourcing of the engine allowed Carnegie Mellon's Entertainment Technology Center to join in the development of the engine. While Disney engineers continued to do the bulk of the development, the Carnegie-Mellon team built a role for itself polishing the engine for public consumption, writing documentation, and adding certain high-end features such as shaders.

Panda3D's name was once an acronym: "Platform Agnostic Networked Display Architecture." However, since that phrase has largely
lost its meaning, the word "Panda3D" is rarely thought of as an acronym any more.

Software License

In 2002, when the engine was open sourced, the goal of the developers was to create a Free Software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 license. However, the license had a few flaws that made it non-Free: it arguably required submitting changes to Panda.Project@Disney.com, and it explicitly prohibited the export of the software to various nations against which the United States had trade embargoes.

On Wednesday 28 May 2008, the trunk of Panda3D development switched to the BSD license. However, old releases still use the old license.

Panda3D makes use of several third party libraries whose licenses are also not Free Software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

, including FMOD
FMOD
FMOD is a proprietary audio library made by Firelight Technologies that plays music files of diverse formats on many different operating system platforms, used in games and software applications to provide audio functionality....

, Nvidia Cg, DirectX
DirectX
Microsoft DirectX is a collection of application programming interfaces for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with Direct, such as Direct3D, DirectDraw, DirectMusic, DirectPlay,...

, and MFC
Microsoft Foundation Class Library
The Microsoft Foundation Class Library is a library that wraps portions of the Windows API in C++ classes, including functionality that enables them to use a default application framework...

. Most of these modules can be easily excluded from the installation, however.

Users

Here is a partial list of companies and commercial products that utilize Panda3D:

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK