| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885 |
- ///////////////////////////////////////////////////////////////////////
- // Caution: there are two separate, independent build systems:
- // 'makepanda', and 'ppremake'. Use one or the other, do not attempt
- // to use both. This file is part of the 'ppremake' system.
- ///////////////////////////////////////////////////////////////////////
- Panda3D Install --- using the 'ppremake' system.
- This document describes how to compile and install Panda 3D on a
- system for the first time. Panda is a complex project and is not
- trivial to install, although it is not really very difficult. Please
- do take the time to read this document before starting.
- Panda is known to build successfully on Linux, SGI Irix, and Windows
- NT/2000/XP. It should also be easily portable to other Unix-based
- OpenGL systems with little or no changes (please let us know if you
- try this). When compiled by Windows NT/2000/XP, it will then run on a
- Windows 98 system, but we have found that Windows 98 is not itself
- stable enough to compile the codebase without crashing.
- Before you begin to compile Panda, there are a number of optional
- support libraries that you may wish to install. None of these are
- essential; Panda will build successfully without them, but possibly
- without some functionality.
- * Python. Panda is itself a C++ project, but it can generate a
- seamless Python interface layer to its C++ objects and function
- calls. Since Python is an interpreted language with a command
- prompt, this provides an excellent way to get interactive control
- over the 3-D environment. However, it is not necessary to use the
- Python interface; Panda is also perfectly useful without Python, as
- a C++ 3-D library.
- Other scripting language interfaces are possible, too, in theory.
- Panda can generate an interface layer for itself that should be
- accessible by any scripting language that can make C function calls
- to an external library. We have used this in the past, for
- instance, to interface Panda with Squeak, an implementation of
- Smalltalk. At the present, the Python interface is the only one we
- actively maintain. We use Python 2.2, but almost any version should
- work; you can get Python at http://www.python.org .
- * NSPR. This is the Netscape Portable Runtime library, an OS
- compatibility layer written by the folks at Mozilla for support of
- the Netscape browser on different platforms. Panda takes advantage
- of NSPR to implement threading and network communications. At the
- present, if you do not have NSPR available Panda will not be able to
- fork threads and will not provide a networking interface. Aside
- from that, the PStats analysis tools (which depend on networking)
- will not be built without NSPR. We have compiled Panda with NSPR
- version 3 and 4.0, although other versions should also work. You
- can download NSPR from http://www.mozilla.org/projects/nspr/ .
- * VRPN, the "Virtual Reality Peripheral Network," a peripheral
- interface library designed by UNC. This is particularly useful for
- interfacing Panda with external devices like trackers and joysticks;
- without it, Panda can only interface with the keyboard and mouse.
- You can find out about it at http://www.cs.unc.edu/Research/vrpn .
- * libjpeg, libtiff, libpng. These free libraries provide support to
- Panda for reading and writing JPEG, TIFF, and PNG image files, for
- instance for texture images. Even without these libraries, Panda
- has built-in support for pbm/pgm/ppm, SGI (rgb), TGA, BMP, and a few
- other assorted image types like Alias and SoftImage native formats.
- Most Linux systems come with these libraries already installed, and
- the version numbers of these libraries is not likely to be
- important. You can download libjpeg from the Independent JPEG group
- at http://www.ijg.org , libtiff from SGI at
- ftp://ftp.sgi.com/graphics/tiff , and libpng from
- http://www.libpng.org .
- * zlib. This very common free library provides basic
- compression/decompression routines, and is the basis for the Unix
- gzip tool (among many other things). If available, Panda uses it to
- enable storing compressed files within its native multifile format,
- as well as in a few other places here and there. It's far from
- essential. If you don't have it already, you can get it at
- http://www.gzip.org/zlib .
- * Fmod. This is a free sound library that our friends at CMU have
- recently integrated into Panda. It provides basic support for
- playing WAV files, MP3 files, and MIDI files within Panda. Get it
- at http://www.fmod.org .
- * Freetype. This free library provides support for loading TTF font
- files (as well as many other types of font files) directly for
- rendering text within Panda (using Panda's TextNode interface, as
- well as the whole suite of DirectGui 2-d widgets in direct). If you
- do not have this library, you can still render text in Panda, but
- you are limited to using fonts that have been pre-generated and
- stored in egg files. There are a handful of provided font files of
- this nature in the models directory (specifically, cmr12, cmss12,
- and cmtt12); these were generated from some of the free fonts
- supplied with TeX. This can be found at http://www.freetype.org ;
- you will need at least version 2.0.
- * OpenSSL. This free library provides an interface to secure SSL
- communications (as well as a normal, unsecured TCP/IP library). It
- is used to implement the HTTP client code in Panda for communicating
- with web servers and/or loading files directly from web servers, in
- both normal http and secure https modes. It also provides some
- basic encryption services, allowing encrypted files to be stored in
- metafiles (for instance). If you do not have any need to contact
- web servers with your Panda client, and you have no interest in
- encryption, you do not need to install this library. Find it at
- http://www.openssl.org . We used version 0.9.6 or 0.9.7, but if
- there is a more recent version it should be fine.
- * FFTW, the "Fastest Fourier Transform in the West". This free
- whimsically-named library provides the mathematical support for
- compressing animation tables into Panda's binary bam format. If
- enabled, animation tables can be compressed in a lossy form similar
- to jpeg, which provides approximately a 5:1 compression ratio better
- than gzip alone even at the most conservative setting. If you don't
- need to have particularly small animation files, you don't need this
- library. Get it at http://www.fftw.org .
- * Gtk--. This is a C++ graphical toolkit library, and is only used
- for one application, the PStats viewer for graphical analysis of
- real-time performance, which is part of the pandatool package.
- Gtk-- only compiles on Unix, and primarily Linux; it is possible to
- compile it with considerable difficulty on Irix. (On Windows, you
- don't need this, since you will use the pstats viewer built in the
- win-stats subdirectory instead.) We have used version 1.2.1. You
- can find it at http://www.gtkmm.org .
- PANDA'S BUILD PHILOSOPHY
- Panda is divided into a number of separate packages, each of which
- compiles separately, and each of which generally depends on the ones
- before it. The packages are, in order:
- dtool - this defines most of the build scripts and local
- configuration options for Panda. It also includes the program
- "interrogate," which is used to generate the Python interface, as
- well as some low-level libraries that are shared both by
- interrogate and Panda. It is a fairly small package.
- panda - this is the bulk of the C++ Panda code. It contains the 3-D
- engine itself, as well as supporting C++ interfaces like
- networking, audio, and device interfaces. Expect this package to
- take from 30 to 60 minutes to build from scratch. You must build
- and install dtool before you can build panda.
- direct - this is the high-level Python interface to Panda. Although
- there is some additional C++ interface code here, most of the code
- in this package is Python; there is no reason to install this
- package if you are not planning on using the Python interface.
- DIRECT is an acronym, and has nothing to do with DirectX.
- You must build and install dtool and panda before you can build
- direct.
- pandatool - this is a suite of command-line utilities, written in
- C++ using the Panda libraries, that provide useful support
- functionality for Panda as a whole, like model-conversion
- utilities. You must build and install dtool and panda before you
- can build pandatool, although it does not depend on direct.
- pandaapp - this holds a few sample applications that link with panda
- (and pandatool), but are not generally useful enough to justify
- putting them in pandatool. Most of these are not actually
- graphical applications; they just take advantage of the various
- support libraries (like HTTPClient) that Panda provides. At the
- moment, most people probably won't find anything useful here, but
- you're welcome to browse; and we will probably add more
- applications later. You must build and install dtool, panda, anda
- pandatool before you can build pandaapp.
- In graphical form, here are the packages along with a few extras:
- +------------------------------+
- | Your Python Application Here |
- +------------------------------+
- |
- | +-----------+
- | | pandaapp |
- | +-----------+
- | |
- V V
- +--------+ +-----------+ +---------------------------+
- | direct | | pandatool | | Your C++ Application Here |
- +--------+ +-----------+ +---------------------------+
- | | |
- +-------------+-------------------/
- V
- +-------+
- | panda |
- +-------+
- |
- V
- +-------+
- | dtool |
- +-------+
- The arrows above show dependency.
- Usually, these packages will be installed as siblings of each other
- within the same directory; the build scripts expect this by default,
- although other installations are possible.
- In order to support multiplatform builds, we do not include makefiles
- or project files with the sources. Instead, all the compilation
- relationships are defined in a series of files distributed throughout
- the source trees, one per directory, called Sources.pp.
- A separate program, called ppremake ("Panda pre-make") reads the
- various Sources.pp files, as well as any local configuration
- definitions you have provided, and generates the actual makefiles that
- are appropriate for the current platform and configuration. It is
- somewhat akin to the idea of GNU autoconf ("configure"), although it
- is both less automatic and more general, and it supports non-Unix
- platforms easily.
- HOW TO CONFIGURE PANDA FOR YOUR ENVIRONMENT
- When you run ppremake within a Panda source tree, it reads in a number
- of configuration variable definitions given in the file Config.pp in
- the root of the dtool package, as well as in a custom Config.pp file
- that you specify. Many of the variables in dtool/Config.pp will
- already have definitions that are sensible for you; some will not.
- You must customize these variables before you run ppremake.
- Normally, rather than modifying dtool/Config.pp directly, you should
- create your own, empty Config.pp file. By default, this file should
- be stored in the root of the Panda install directory, as specified
- when you built ppremake, but you may put it elsewhere if you prefer by
- setting the environment variable PPREMAKE_CONFIG to its full filename
- path (more on this in the platform-specific installation notes,
- below).
- The definitions you give in your personal Config.pp file will override
- those given in the file within dtool. It is also possible simply to
- modify dtool/Config.pp, but this is not recommended as it makes it
- difficult to remember which customizations you have made, and makes
- installing updated versions of Panda problematic.
- The syntax of the Config.pp file is something like a cross between the
- C preprocessor and Makefile syntax. The full syntax of ppremake input
- scripts is described in more detail in another document, but the most
- common thing you will need to do is set the value of a variable using
- the #define statement (or the mostly equivalent #defer statement).
- Look in dtool/Config.pp for numerous examples of this.
- Some of the variables you may define within the Config.pp file hold a
- true or a false value by nature. It is important to note that you
- indicate a variable is true by defining it to some nonempty string
- (e.g. "yes" or "1"), and false by defining it to nothing. For
- example:
- #define HAVE_DX9 1
- Indicates you have the DirectX SDK installed, while
- #define HAVE_DX9
- Indicates you do not. Do not be tempted to define HAVE_DX9 to no or 0;
- since these are both nonempty strings, they are considered to
- represent true! Also, don't try to use a pair of quotation marks to
- represent the empty string, since the quotation marks become part of
- the string (which is thus nonempty).
- The comments within dtool/Config.pp describe a more complete list of
- the variables you may define. The ones that you are most likely to
- find useful are:
- INSTALL_DIR - this is the prefix of the directory hierarchy into
- which Panda should be installed. If this is not defined, the
- default value is compiled into ppremake. A full description on
- setting this parameter is given below in the section describing
- how to build ppremake. On Unix systems this is taken from the
- --prefix parameter to configure (usually /usr/local/panda); for
- Windows users it is specified in config_msvc.h, and is set to
- C:\Panda3d unless you modify it.
- OPTIMIZE - define this to 1, 2, 3, or 4. This is not the same thing
- as compiler optimization level; our four levels of OPTIMIZE define
- broad combinations of compiler optimizations and debug symbols:
- 1 - No compiler optimizations, full debug symbols
- Windows: debug heap
- 2 - Full compiler optimizations, debug symbols
- Windows: debug heap
- 3 - Full compiler optimizations,
- Unix: no debug symbols
- Windows: non-debug heap, debug symbols available in pdb files
- 4 - Full optimizations, no debug symbols, and asserts removed
- Windows: non-debug heap
- Usually OPTIMIZE 3 is the most appropriate choice for development
- work. We recommend OPTIMIZE 4 only for final QA and/or
- distribution of a shippable product, never for any development or
- alpha testing; and we recommend OPTIMIZE levels 1 and 2 only for
- active development of the C++ code within Panda.
- PYTHON_IPATH / PYTHON_LPATH / PYTHON_LIBS - the full pathname to
- Python header files, if Python is installed on your system. As of
- Python version 2.0, compiling Python interfaces doesn't require
- linking with any special libraries, so normally PYTHON_LPATH and
- PYTHON_LIBS are left empty. You definitely need to set
- PYTHON_IPATH, however, if you wish to compile Panda so that it can
- be used from Python.
- NSPR_IPATH / NSPR_LPATH / NSPR_LIBS - the full pathname to NSPR
- header and library files, and the name of the NSPR library, if
- NSPR is installed on your system.
- VRPN_IPATH / VRPN_LPATH / VRPN_LIBS - the full pathname to VRPN
- header and library files, and the name of the VRPN libraries, if
- VRPN is installed on your system.
- DX9_IPATH / DX9_LPATH / DX9_LIBS - the full pathname to the
- DirectX 9 SDK header and library files, if you have installed
- this SDK. (You must currently install this SDK in order to
- build DirectX9 support for Panda.)
- GL_IPATH / GL_LPATH / GL_LIBS - You get the idea. (Normally, OpenGL
- is installed in the standard system directories, so you can leave
- GL_IPATH and GL_LPATH empty. But if they happen to be installed
- somewhere else on your machine, you can fill in the pathnames
- here.)
- Similar *_IPATH / *_LPATH / *_LIBS variables for other optional
- third-party libraries.
- HOW TO BUILD PANDA ON A UNIX SYSTEM
- First, make a subdirectory to hold the Panda sources. This can be
- anywhere you like; in these examples, we'll assume you build
- everything within a directory called "panda3d" in your home directory.
- mkdir ~/panda3d
- You should also create the directory into which panda should be
- installed. The default installation directory is /usr/local/panda.
- You may choose an alternate installation directory by using the
- --prefix parameter to the ppremake configure script, described below.
- We recommend giving yourself write permission to this directory, so
- that you can run 'make install' and similar scripts that will need to
- write to this installation directory, without having to be root.
- su root
- mkdir /usr/local/panda
- chown <your-user-name> /usr/local/panda
- exit
- Whatever you choose for your installation directory, you should make
- sure the bin directory (e.g. /usr/local/panda/bin) is included on your
- search path, and the lib directory (e.g. /usr/local/panda/lib) is on
- your LD_LIBRARY_PATH. If you use a C-shell derivative like tcsh, the
- syntax for this is:
- set path=(/usr/local/panda/bin $path)
- setenv LD_LIBRARY_PATH /usr/local/panda/lib:$LD_LIBRARY_PATH
- If you have a Bourne-shell derivative, e.g. bash, the syntax is:
- PATH=/usr/local/panda/bin:$PATH
- LD_LIBRARY_PATH=/usr/local/panda/lib:$LD_LIBRARY_PATH
- export LD_LIBRARY_PATH
- You must now compile ppremake before you can begin to compile Panda
- itself. Generally, you do something like the following:
- cd ~/panda3d/ppremake
- ./configure
- make
- make install
- If the configure script does not already exist, read the document
- BUILD_FROM_CVS.txt in the ppremake source directory.
- As mentioned above, the default installation directory is
- /usr/local/panda. Thus, ppremake will install itself into
- /usr/local/panda/bin. If you prefer, you can install Panda into
- another directory by doing something like this:
- ./configure --prefix=/my/install/directory
- make
- make install
- Now you should create your personal Config.pp file, as described
- above, and customize whatever variables are appropriate. By default,
- ppremake will look for this file in the root of the install directory,
- e.g. /usr/local/panda/Config.pp. If you want to put it somewhere
- else, for instance in your home directory, you must set the
- PPREMAKE_CONFIG environment variable to point to it:
- setenv PPREMAKE_CONFIG ~/Config.pp
- In bash:
- PPREMAKE_CONFIG=~/Config.pp
- export PPREMAKE_CONFIG
- You may find it a good idea to make this and other environment
- settings in your .cshrc or .bashrc file so that they will remain set
- for future sessions.
- Now you can test the configuration settings in your Config.pp file:
- cd ~/panda3d/dtool
- ppremake
- When you run ppremake within the dtool directory, it will generate a
- file, dtool_config.h (as well as all of the Makefiles). This file
- will be included by all of the Panda3D sources, and reveals the
- settings of many of the options you have configured. You should
- examine this file now to ensure that your settings have been made the
- way you expect.
- Note that ppremake will also try to create several subdirectories in
- the install directory, so you must have write access to the install
- directory in order for ppremake to run completely successfully. If
- you did not choose to give yourself write access to the install
- directory, you may run ppremake as root; in this case we recommend
- running ppremake first as a normal user in order to compile, and then
- running ppremake again as root just before running make install as
- root.
- Now that you have run ppremake, you can build the Panda3D sources.
- Begin with dtool (the current directory):
- make
- make install
- Once you have successfully built and installed dtool, you can then
- build and install panda:
- cd ~/panda3d/panda
- ppremake
- make
- make install
- After installing panda, you are almost ready to run the program
- "pview," which is a basic model viewer program that demonstrates some
- Panda functionality (see HOW TO RUN PANDA, below). Successfully
- running pview proves that Panda is installed and configured correctly
- (at least as a C++ library).
- If you wish, you may also build direct. You only need to build this
- if you intend to use the Python interfaces.
- cd ~/panda3d/direct
- ppremake
- make
- make install
- And you may build pandatool. You only need to build this if you want
- to take advantage of model conversion utilities for Panda like
- maya2egg and egg2bam, or if you want to use other tools like pstats.
- cd ~/panda3d/pandatool
- ppremake
- make
- make install
- HOW TO BUILD PANDA ON A WINDOWS SYSTEM, USING CYGWIN
- Cygwin is a set of third-party libraries and tools that present a very
- Unix-like environment for Windows systems. If you prefer to use a
- Unix environment, Cygwin is the way to go. You can download Cygwin
- for free from http://www.cygwin.com.
- Panda can build and run within a Cygwin environment, but it does not
- require it. Note that Cygwin is used strictly as a build environment;
- the Cygwin compiler is not used, so no dependency on Cygwin will be
- built into Panda. The Panda DLL's that you will generate within a
- Cygwin environment will be exactly the same as those you would
- generate in a non-Cygwin environment; once built, Panda will run
- correctly on any Win32 machine, with or without Cygwin installed.
- If you do not wish to install Cygwin for your build environment, see
- the instructions below.
- If you wish to use Cygwin, there is one important point to keep in
- mind. Panda internally uses a Unix-like filename convention; that is,
- forward slashes (instead of backslashes) separate directory
- components, and there is no leading drive letter on any filename.
- These Unix-like filenames are mapped to Windows filenames (with drive
- letters and backslashes) when system calls are made.
- Cygwin also uses a Unix-like filename convention, and uses a series of
- mount commands to control the mapping of Unix filenames to Windows
- filenames. Panda is not itself a Cygwin program, and does not read
- the Cygwin mount definitions.
- That's important enough it's worth repeating. Panda is not aware of
- the Cygwin mount points. So a Unix-like filename that makes sense to
- a Cygwin command may not be accessible by the same filename from
- within Panda.
- However, you can set things up so that most of the time, Cygwin and
- Panda agree, which is convenient. To do this, it is important to
- understand how Panda maps Unix-like filenames to Windows filenames.
- * Any relative pathname (that is, a pathname that does not begin
- with a leading slash) is left unchanged, except to reverse the
- slashes.
- * Any full pathname whose topmost directory component is *not* a
- single letter is prepended with the contents of the environment
- variable PANDA_ROOT.
- * Any full pathname whose topmost directory component *is* a single
- letter is turned into a drive letter and colon followed by the
- remainder of the path. For example, /c/windows/system is turned
- into C:\windows\system.
- The expectation is that most of the files you will want to access
- within Panda will all be within one directory structure, which you
- identify by setting the PANDA_ROOT variable. Generally, when you are
- using Cygwin, you will want to set this variable to be the same thing
- as the root of your Cygwin tree.
- For instance, typically Cygwin installs itself in C:\Cygwin. This
- means that when you reference the directory /usr/local/bin within
- Cygwin, you are actually referring to C:\Cygwin\usr\local\bin. You
- should therefore set PANDA_ROOT to C:\Cygwin, so that /usr/local/bin
- within Panda will also refer to C:\Cygwin\usr\local\bin.
- To sum up: to use Panda within a Cygwin environment,
- In tcsh:
- setenv PANDA_ROOT 'C:\Cygwin'
- or in bash:
- PANDA_ROOT='C:\Cygwin'
- export PANDA_ROOT
- (In fact, you do not actually have to set PANDA_ROOT if Cygwin is
- installed into C:\Cygwin, since this is Panda's default behavior if
- C:\Cygwin exists. But it's important to understand what Panda is
- doing to remap directories, and in particular that there is no
- relationship to any actual Cygwin mount points.)
- There is one additional point: you will need to ensure that the Visual
- Studio command-line utilities (like cl.exe) are available on your
- path. Set your path appropriately to point to them, if necessary (or
- run vcvars32.bat to do it for you; see the paragraph below.)
- Follow the instructions under HOW TO BUILD PANDA FOR A UNIX
- ENVIRONMENT, above.
- HOW TO BUILD PANDA ON A WINDOWS SYSTEM, WITHOUT CYGWIN
- You will have to make sure that you installed the command-line
- utilities on your system path when you installed Visual Studio, or you
- can run the batch file vcvars32.bat to put these utilities on your
- path for the current session (this batch file is in a directory like
- c:\Program Files\Microsoft Visual Studio .Net\Vc7\bin).
- Microsoft provides a command-line make utility with Visual Studio
- called nmake, although it's nowhere near as robust as the GNU make
- utility provided with Cygwin. But Panda can generate Makefiles that
- follow the nmake convention, and will do so by default if your
- ppremake was not built with the Cygwin tools.
- You will need a directory for holding the installed Panda. This can
- be anywhere you like; the default is C:\Panda3d. If you choose to
- specify otherwise you should modify the INSTALL_DIR line in
- ppremake\config_msvc.h before you build ppremake (below).
- (Alternatively, you can leave ppremake alone and simply redefine
- INSTALL_DIR in your Config.pp file, but then you will also need to
- define the environment variable PPREMAKE_CONFIG to point to your
- Config.pp.)
- md C:\Panda3d
- You will first need to build a copy of ppremake.exe. There is a
- Microsoft VC7 project file in the ppremake directory that will build
- this. Once it is built, copy it to the Panda bin directory (which you
- will have to make yourself). This will be a directory called "bin"
- below the root of the installed directory you created above; for
- instance, C:\Panda3d\bin.
- Make sure the Panda bin and lib directories are on your path, and set
- a few environment variables for building. We suggest creating a file
- called PandaEnv.bat to hold these commands; then you may invoke this
- batch file before every Panda session to set up your environment
- properly. Alternatively, you may make these definitions in the
- registry.
- path C:\Panda3d\bin;C:\Panda3d\lib;%PATH%
- set PANDA_ROOT=C:\
- Setting PANDA_ROOT is optional; it specifies the default drive Panda
- will search for file references. (Panda internally uses a Unix-like
- filename convention, which does not use leading drive letters. See
- the bullet points in the Cygwin section, above, describing the rules
- Panda uses to map its Unix-like filenames to Windows filenames.)
- Now make a directory for building Panda. This may be different from
- the directory, above, that holds the installed Panda files; or it may
- be the same. In this example we assume you will be building in the
- same directory, C:\Panda3d.
- Now set up your personal Config.pp file to control your local
- configuration settings, as described above. By default, ppremake will
- look for this file in the root of the install directory,
- e.g. C:\Panda3d\Config.pp; if you want to put it somewhere else you
- should define the environment variable PPREMAKE_CONFIG to the full
- path to your Config.pp.
- Use your favorite text editor to add the appropriate lines to your
- Config.pp to define the correct paths to the various third-party
- packages you have installed on your system. See HOW TO CONFIGURE
- PANDA FOR YOUR ENVIRONMENT, above.
- edit C:\Panda3d\Config.pp
- Now you can test the configuration settings in your Config.pp file:
- C:
- cd \Panda3d\dtool
- ppremake
- When you run ppremake within the dtool directory, it will generate a
- file, dtool_config.h (as well as all of the Makefiles). This file
- will be included by all of the Panda3D sources, and reveals the
- settings of many of the options you have configured. You should
- examine this file now to ensure that your settings have been made the
- way you expect.
- Now that you have run ppremake, you can build the Panda3D sources.
- Begin with dtool (the current directory):
- nmake
- nmake install
- Once you have successfully built and installed dtool, you can then
- build and install panda:
- cd \Panda3d\panda
- ppremake
- nmake
- nmake install
- After installing panda, you are almost ready to run the program
- "pview," which is a basic model viewer program that demonstrates some
- Panda functionality (see HOW TO RUN PANDA, below). Successfully
- running pview proves that Panda is now installed and configured
- correctly (at least as a C++ library).
- If you wish, you may also build direct. You only need to build this
- if you intend to use the Python interfaces.
- cd \Panda3d\direct
- ppremake
- nmake
- nmake install
- And you may build pandatool. You only need to build this if you want
- to take advantage of model conversion utilities for Panda like
- maya2egg and egg2bam, or if you want to use other tools like pstats.
- cd \Panda3d\pandatool
- ppremake
- nmake
- nmake install
- HOW TO RUN PANDA
- Once Panda has been successfully built and installed, you should be
- able to run pview to test that everything is working (you might need
- to type rehash first if you use csh):
- pview
- If you get an error about some shared library or libraries not being
- found, check that your LD_LIBRARY_PATH setting (on Unix) or your PATH
- (on Windows) includes the directory in which all of the Panda
- libraries have been installed. (This is normally $INSTALL_DIR/lib, or
- whatever you set INSTALL_DIR to followed by "lib". On Unix, this
- defaults to /usr/local/panda/lib. If you have redefined
- INSTALL_LIB_DIR in your Config.pp, for instance to define Panda as a
- native Python module, you should use that directory instead.)
- If all goes well, pview should open up a window with a blue triangle.
- You can use the mouse to move the triangle around. You can also pass
- on the command line the name of an egg or bam file, if you have one
- (look in the models directory for some sample egg files), and pview
- will load up and display the model.
- There are several files in the $INSTALL_DIR/etc directory with the
- filename extension .prc; these are Panda Runtime Configuration files.
- These are different from the Config.pp file, which controls the way
- Panda is compiled and is only used at build time. The prc files are
- read in every time Panda is started and control the way Panda behaves
- at runtime.
- The system-defined prc files begin with digits, so that they sort to
- the top of the list and are read first (and so that you may define one
- or more additional files that are read afterwards and that will
- therefore override the values specified in these system files). The
- digits also imply an ordering between the prc files. We recommend
- that you name your own prc file(s) beginning with letters, unless for
- some reason you need a file to be loaded before one of the
- system-defined prc files.
- We suggest creating a file in $INSTALL_DIR/etc called Config.prc, into
- which you will put your own custom configuration options. For
- instance, if you want to run using OpenGL instead of the Windows
- default of DirectX9, you can add the line:
- load-display pandagl
- to your Config.prc file. If you choose not to do this at this time,
- you can just leave this file empty for now; however, we do recommend
- creating at least an empty Config.prc file as a placeholder into which
- you can add your custom configuration options later.
- The complete list of available configuration options is very large and
- is not fully documented; but there are other documents that list
- several particularly useful config variables. These are sometimes
- referred to as "Configrc" variables because an older Panda convention
- named this file Configrc instead of Config.prc.
- If you want to load Config.prc from other than the compiled-in default
- directory of $INSTALL_DIR/etc, set the environment variable:
- PRC_DIR=/my/home/directory
- export PRC_DIR
- Where /my/home/directory is the name of your home directory (or
- wherever you put the Config.prc file). Note that if you redefine
- PRC_DIR, you will no longer automatically load the standard prc files
- that were installed into $INSTALL_DIR/etc (so you should consider
- copying these files into the same directory). It is possible to
- configure Panda to search for prc files in more than one directory,
- but that's a little more complicated and is outside the scope of this
- document.
- HOW TO BUILD THE PYTHON INTERFACES
- You may stop now if you only intend to use Panda as a C++ library.
- However, if you wish to use Panda from within Python, you must now
- generate the Python interfaces.
- There are two parts to the Python interface for Panda. The first part
- is a series of wrapper functions that are compiled into the Panda
- libraries themselves, along with associated *.in files that describe
- the class hierarchy. If you defined PYTHON_IPATH correctly in your
- Config.pp file, then Python should have been detected by ppremake, and
- it would have generated makefiles to build these wrappers
- automatically. (You would have seen the program "interrogate" running
- within each directory as panda was building, and you will have a
- number of *.in files now installed into $INSTALL_DIR/etc.)
- If, for some reason, the interrogate program did not run, perhaps
- because you defined an invalid directory in PYTHON_IPATH, you can go
- back and fix this now, and simply re-run ppremake and make install
- again in each of dtool, panda, and direct.
- To make Panda accessible to Python, you will need to add
- $INSTALL_DIR/lib to your PYTHONPATH variable, e.g.:
- setenv PYTHONPATH ${PYTHONPATH}:/usr/local/panda/lib
- Or, on Windows:
- set PYTHONPATH=%PYTHONPATH%;C:\Panda3d\lib
- We recommend the PYTHONPATH approach for most users, since it keeps
- all of the Panda files within one directory and doesn't clutter up the
- Python distribution. However, if you only intend to use Panda from
- Python, and especially if you want to make it accessible to multiple
- users, it may be more attractive to install the Panda libraries as a
- standard Python module, so that it is not necessary to modify your
- PYTHONPATH variable; see "Installing Panda as a standard Python
- module", below.
- The second part to the Python interface is a series of generated
- Python wrapper classes, for each C++ class detected by interrogate.
- These classes must be generated after all of the C++ code has been
- compiled and installed. Execute the following command (you might need
- to type rehash first if you use csh):
- genPyCode
- This is a script that was installed into $INSTALL_DIR/bin as part of
- the build of direct. It invokes Python to read the *.in files
- generated by interrogate, and generates the appropriate wrapper
- functions, which are then written into $INSTALL_DIR/lib/pandac.
- (There will be several hundred generated Python modules, which are
- normally "squeezed" into a single file called PandaModules.pyz using
- PythonWare's SqueezeTool. This squeeze step gives a significant
- load-time speedup, especially on Windows; but if it causes problems,
- you can use the option -n, e.g. 'genPyCode -n', to avoid it.)
- You will need to re-run this script only if the Panda interface
- changes, e.g. if a class is added or a method's parameters change.
- You should certainly re-run it any time you update and install a new
- version of Panda.
- Installing Panda as a native Python module
- Panda can be optionally configured to install its run-time interfaces
- into the Python installation directory, instead of into the normal
- $INSTALL_DIR/lib directory. This means you can run Panda from Python
- without having to set your PYTHONPATH variable, but it does clutter up
- your Python distribution a bit.
- To do this, simply add something like the following line to your
- Config.pp:
- #define INSTALL_LIB_DIR /usr/lib/python2.2/site-packages
- Where you give the actual path to the site-packages directory for your
- particular installation of Python. On Windows, this will probably
- look something like this:
- #define INSTALL_LIB_DIR C:\Python22\Lib\site-packages
- Then go back and re-run ppremake and make install in each of dtool,
- panda, and direct, and then re-run genPyCode, to install the Panda
- libraries and Python files directly into the Python site-packages
- directory.
- You may also need to set your LD_LIBRARY_PATH (on Unix) or PATH (on
- Windows) to reference this new directory instead of $INSTALL_DIR/lib,
- especially if you want to be able to run any of the Panda standalone
- programs occasionally, like pview or any of the model converters.
- Unix users should note that you must have write permission to the
- site-packages directory in order to install files there. You may
- choose to run these install steps (ppremake, make install, genPyCode)
- as root to avoid this problem. If you encounter difficulty running
- genPyCode as root, make sure that you still have LD_LIBRARY_PATH
- defined appropriately once you have become root.
- Testing the Python interface
- Assuming that you have already set up your Config.prc file and tested
- that pview works, as described above in HOW TO RUN PANDA, you should
- now be ready to try to run Panda from within Python. Start up a
- Python shell and type the following command:
- Python 2.2.2 (#37, Feb 10 2003, 18:00:06) [MSC 32 bit (Intel)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import direct.directbase.DirectStart
- You should see a graphics window come up, very similar to the one you
- saw when you ran pview. To load a particular model file into the
- scene, try something like this:
- >>> m = loader.loadModel('/c/Panda3d/models/smiley.egg')
- >>> m.reparentTo(render)
- >>> run()
- Note that Panda expects a forward-slash convention for pathnames, with
- no leading drive letter, even on a Windows system. See the full
- description of how Panda maps these pathnames to Windows pathnames in
- HOW TO BUILD PANDA ON A WINDOWS SYSTEM, USING CYGWIN, above.
- You can now move the scene around with the mouse, just as in pview
- (you may need to pull the camera back by dragging upwards while
- holding down the right mouse button in order to see the model).
- Congratulations! Panda 3D is now successfully installed. See the
- online documentation available at http://www.etc.cmu.edu/panda3d/ for
- more help about where to go next.
|