INSTALL 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864
  1. Panda3D Install
  2. This document describes how to compile and install Panda 3D on a
  3. system for the first time. Panda is a complex project and is not
  4. trivial to install, although it is not really very difficult. Please
  5. do take the time to read this document before starting.
  6. Panda is known to build successfully on Linux, SGI Irix, and Windows
  7. NT/2000/XP. It should also be easily portable to other Unix-based
  8. OpenGL systems with little or no changes (please let us know if you
  9. try this). When compiled by Windows NT/2000/XP, it will then run on a
  10. Windows 98 system, but we have found that Windows 98 is not itself
  11. stable enough to compile the codebase without crashing.
  12. Before you begin to compile Panda, there are a number of optional
  13. support libraries that you may wish to install. None of these are
  14. essential; Panda will build successfully without them, but possibly
  15. without some functionality.
  16. * Python. Panda is itself a C++ project, but it can generate a
  17. seamless Python interface layer to its C++ objects and function
  18. calls. Since Python is an interpreted language with a command
  19. prompt, this provides an excellent way to get interactive control
  20. over the 3-D environment. However, it is not necessary to use the
  21. Python interface; Panda is also perfectly useful without Python, as
  22. a C++ 3-D library.
  23. Other scripting language interfaces are possible, too, in theory.
  24. Panda can generate an interface layer for itself that should be
  25. accessible by any scripting language that can make C function calls
  26. to an external library. We have used this in the past, for
  27. instance, to interface Panda with Squeak, an implementation of
  28. Smalltalk. At the present, the Python interface is the only one we
  29. actively maintain. We use Python 2.2, but almost any version should
  30. work; you can get Python at http://www.python.org .
  31. * NSPR. This is the Netscape Portable Runtime library, an OS
  32. compatibility layer written by the folks at Mozilla for support of
  33. the Netscape browser on different platforms. Panda takes advantage
  34. of NSPR to implement threading and network communications. At the
  35. present, if you do not have NSPR available Panda will not be able to
  36. fork threads and will not provide a networking interface. Aside
  37. from that, the PStats analysis tools (which depend on networking)
  38. will not be built without NSPR. We have compiled Panda with NSPR
  39. version 3 and 4.0, although other versions should also work. You
  40. can download NSPR from http://www.mozilla.org .
  41. * VRPN, the "Virtual Reality Peripheral Network," a peripheral
  42. interface library designed by UNC. This is particularly useful for
  43. interfacing Panda with external devices like trackers and joysticks;
  44. without it, Panda can only interface with the keyboard and mouse.
  45. You can find out about it at http://www.cs.unc.edu/Research/vrpn .
  46. * libjpeg, libtiff, libpng. These free libraries provide support to
  47. Panda for reading and writing JPEG, TIFF, and PNG image files, for
  48. instance for texture images. Even without these libraries, Panda
  49. has built-in support for pbm/pgm/ppm, SGI (rgb), TGA, BMP, and a few
  50. other assorted image types like Alias and SoftImage native formats.
  51. Most Linux systems come with these libraries already installed, and
  52. the version numbers of these libraries is not likely to be
  53. important. You can download libjpeg from the Independent JPEG group
  54. at http://www.ijg.org , libtiff from SGI at
  55. ftp://ftp.sgi.com/graphics/tiff , and libpng from
  56. http://www.libpng.org .
  57. * zlib. This very common free library provides basic
  58. compression/decompression routines, and is the basis for the Unix
  59. gzip tool (among many other things). If available, Panda uses it to
  60. enable storing compressed files within its native multifile format,
  61. as well as in a few other places here and there. It's far from
  62. essential. If you don't have it already, you can get it at
  63. http://www.gzip.org/zlib .
  64. * Fmod. This is a free sound library that our friends at CMU have
  65. recently integrated into Panda. It provides basic support for
  66. playing WAV files, MP3 files, and MIDI files within Panda. Get it
  67. at http://www.fmod.org .
  68. * Freetype. This free library provides support for loading TTF font
  69. files (as well as many other types of font files) directly for
  70. rendering text within Panda (using Panda's TextNode interface, as
  71. well as the whole suite of DirectGui 2-d widgets in direct). If you
  72. do not have this library, you can still render text in Panda, but
  73. you are limited to using fonts that have been pre-generated and
  74. stored in egg files. There are a handful of provided font files of
  75. this nature in the models directory (specifically, cmr12, cmss12,
  76. and cmtt12); these were generated from some of the free fonts
  77. supplied with TeX. This can be found at http://www.freetype.org ;
  78. you will need at least version 2.0.
  79. * OpenSSL. This free library provides an interface to secure SSL
  80. communications (as well as a normal, unsecured TCP/IP library). It
  81. is used to implement the HTTP client code in Panda for communicating
  82. with web servers and/or loading files directly from web servers, in
  83. both normal http and secure https modes. If you do not have any
  84. need to contact web servers with your Panda client, you do not need
  85. to install this library. Find it at http://www.openssl.org . We
  86. used version 0.9.6 or 0.9.7, but if there is a more recent version
  87. it should be fine.
  88. * FFTW, the "Fastest Fourier Transform in the West". This free
  89. whimsically-named library provides the mathematical support for
  90. compressing animation tables into Panda's binary bam format. If
  91. enabled, animation tables can be compressed in a lossy form similar
  92. to jpeg, which provides approximately a 5:1 compression ratio better
  93. than gzip alone even at the most conservative setting. If you don't
  94. need to have particularly small animation files, you don't need this
  95. library. Get it at http://www.fftw.org .
  96. * Gtk--. This is a C++ graphical toolkit library, and is only used
  97. for one application, the PStats viewer for graphical analysis of
  98. real-time performance, which is part of the pandatool package.
  99. Gtk-- only compiles on Unix, and primarily Linux; it is possible to
  100. compile it with considerable difficulty on Irix. (On Windows, you
  101. don't need this, since you will use the pstats viewer built in the
  102. win-stats subdirectory instead.) We have used version 1.2.1. You
  103. can find it at http://www.gtkmm.org .
  104. PANDA'S BUILD PHILOSOPHY
  105. Panda is divided into a number of separate packages, each of which
  106. compiles separately, and each of which generally depends on the ones
  107. before it. The packages are, in order:
  108. dtool - this defines most of the build scripts and local
  109. configuration options for Panda. It also includes the program
  110. "interrogate," which is used to generate the Python interface, as
  111. well as some low-level libraries that are shared both by
  112. interrogate and Panda. It is a fairly small package.
  113. panda - this is the bulk of the C++ Panda code. It contains the 3-D
  114. engine itself, as well as supporting C++ interfaces like
  115. networking, audio, and device interfaces. Expect this package to
  116. take from 30 to 60 minutes to build from scratch. You must build
  117. and install dtool before you can build panda.
  118. direct - this is the high-level Python interface to Panda. Although
  119. there is some additional C++ interface code here, most of the code
  120. in this package is Python; there is no reason to install this
  121. package if you are not planning on using the Python interface.
  122. DIRECT is an acronym, and has nothing to do with DirectX.
  123. You must build and install dtool and panda before you can build
  124. direct.
  125. pandatool - this is a suite of command-line utilities, written in
  126. C++ using the Panda libraries, that provide useful support
  127. functionality for Panda as a whole, like model-conversion
  128. utilities. You must build and install dtool and panda before you
  129. can build pandatool, although it does not depend on direct.
  130. pandaapp - this holds a few sample applications that link with panda
  131. (and pandatool), but are not generally useful enough to justify
  132. putting them in pandatool. Most of these are not actually
  133. graphical applications; they just take advantage of the various
  134. support libraries (like HTTPClient) that Panda provides. At the
  135. moment, most people probably won't find anything useful here, but
  136. you're welcome to browse; and we will probably add more
  137. applications later. You must build and install dtool, panda, anda
  138. pandatool before you can build pandaapp.
  139. In graphical form, here are the packages along with a few extras:
  140. +------------------------------+
  141. | Your Python Application Here |
  142. +------------------------------+
  143. |
  144. | +-----------+
  145. | | pandaapp |
  146. | +-----------+
  147. | |
  148. V V
  149. +--------+ +-----------+ +---------------------------+
  150. | direct | | pandatool | | Your C++ Application Here |
  151. +--------+ +-----------+ +---------------------------+
  152. | | |
  153. +-------------+-------------------/
  154. V
  155. +-------+
  156. | panda |
  157. +-------+
  158. |
  159. V
  160. +-------+
  161. | dtool |
  162. +-------+
  163. The arrows above show dependency.
  164. Usually, these packages will be installed as siblings of each other
  165. within the same directory; the build scripts expect this by default,
  166. although other installations are possible.
  167. In order to support multiplatform builds, we do not include makefiles
  168. or project files with the sources. Instead, all the compilation
  169. relationships are defined in a series of files distributed throughout
  170. the source trees, one per directory, called Sources.pp.
  171. A separate program, called ppremake ("Panda pre-make") reads the
  172. various Sources.pp files, as well as any local configuration
  173. definitions you have provided, and generates the actual makefiles that
  174. are appropriate for the current platform and configuration. It is
  175. somewhat akin to the idea of GNU autoconf ("configure"), although it
  176. is both less automatic and more general, and it supports non-Unix
  177. platforms easily.
  178. HOW TO CONFIGURE PANDA FOR YOUR ENVIRONMENT
  179. When you run ppremake within a Panda source tree, it reads in a number
  180. of configuration variable definitions given in the file Config.pp in
  181. the root of the dtool package, as well as in a custom Config.pp file
  182. that you specify. Many of the variables in dtool/Config.pp will
  183. already have definitions that are sensible for you; some will not.
  184. You must customize these variables before you run ppremake.
  185. Normally, rather than modifying dtool/Config.pp directly, you should
  186. create your own, empty Config.pp file. By default, this file should
  187. be stored in the root of the Panda install directory, as specified
  188. when you built ppremake, but you may put it elsewhere if you prefer by
  189. setting the environment variable PPREMAKE_CONFIG to its full filename
  190. path (more on this in the platform-specific installation notes,
  191. below).
  192. The definitions you give in your personal Config.pp file will override
  193. those given in the file within dtool. It is also possible simply to
  194. modify dtool/Config.pp, but this is not recommended as it makes it
  195. difficult to remember which customizations you have made, and makes
  196. installing updated versions of Panda problematic.
  197. The syntax of the Config.pp file is something like a cross between the
  198. C preprocessor and Makefile syntax. The full syntax of ppremake input
  199. scripts is described in more detail in another document, but the most
  200. common thing you will need to do is set the value of a variable using
  201. the #define statement (or the mostly equivalent #defer statement).
  202. Look in dtool/Config.pp for numerous examples of this.
  203. Some of the variables you may define within the Config.pp file hold a
  204. true or a false value by nature. It is important to note that you
  205. indicate a variable is true by defining it to some nonempty string
  206. (e.g. "yes" or "1"), and false by defining it to nothing. For
  207. example:
  208. #define HAVE_DX 1
  209. Indicates you have the DirectX SDK installed, while
  210. #define HAVE_DX
  211. Indicates you do not. Do not be tempted to define HAVE_DX to no or 0;
  212. since these are both nonempty strings, they are considered to
  213. represent true! Also, don't try to use a pair of quotation marks to
  214. represent the empty string, since the quotation marks become part of
  215. the string (which is thus nonempty).
  216. The comments within dtool/Config.pp describe a more complete list of
  217. the variables you may define. The ones that you are most likely to
  218. find useful are:
  219. INSTALL_DIR - this is the prefix of the directory hierarchy into
  220. which Panda should be installed. If this is not defined, the
  221. default value is compiled into ppremake. A full description on
  222. setting this parameter is given below in the section describing
  223. how to build ppremake. On Unix systems this is taken from the
  224. --prefix parameter to configure (usually /usr/local/panda); for
  225. Windows users it is specified in config_msvc.h, and is set to
  226. C:\Panda3d unless you modify it.
  227. OPTIMIZE - define this to 1, 2, 3, or 4. This is not the same thing
  228. as compiler optimization level; our four levels of OPTIMIZE define
  229. broad combinations of compiler optimizations and debug symbols:
  230. 1 - No compiler optimizations, full debug symbols
  231. Windows: debug heap
  232. 2 - Full compiler optimizations, debug symbols
  233. Windows: debug heap
  234. 3 - Full compiler optimizations,
  235. Unix: no debug symbols
  236. Windows: non-debug heap, debug symbols available in pdb files
  237. 4 - Full optimizations, no debug symbols, and asserts removed
  238. Windows: non-debug heap
  239. Usually OPTIMIZE 3 is the most appropriate choice for development
  240. work. We recommend OPTIMIZE 4 only for final QA and/or
  241. distribution of a shippable product, never for any development or
  242. alpha testing; and we recommend OPTIMIZE levels 1 and 2 only for
  243. active development of the C++ code within Panda.
  244. PYTHON_IPATH / PYTHON_LPATH / PYTHON_LIBS - the full pathname to
  245. Python header files, if Python is installed on your system. As of
  246. Python version 2.0, compiling Python interfaces doesn't require
  247. linking with any special libraries, so normally PYTHON_LPATH and
  248. PYTHON_LIBS are left empty. You definitely need to set
  249. PYTHON_IPATH, however, if you wish to compile Panda so that it can
  250. be used from Python.
  251. NSPR_IPATH / NSPR_LPATH / NSPR_LIBS - the full pathname to NSPR
  252. header and library files, and the name of the NSPR library, if
  253. NSPR is installed on your system.
  254. VRPN_IPATH / VRPN_LPATH / VRPN_LIBS - the full pathname to VRPN
  255. header and library files, and the name of the VRPN libraries, if
  256. VRPN is installed on your system.
  257. DX_IPATH / DX_LPATH / DX_LIBS - the full pathname to the DirectX 8.1
  258. SDK header and library files, if you have installed this SDK.
  259. (You must currently install this SDK in order to build DirectX
  260. support for Panda.)
  261. GL_IPATH / GL_LPATH / GL_LIBS - You get the idea. (Normally, OpenGL
  262. is installed in the standard system directories, so you can leave
  263. GL_IPATH and GL_LPATH empty. But if they happen to be installed
  264. somewhere else on your machine, you can fill in the pathnames
  265. here.)
  266. Similar *_IPATH / *_LPATH / *_LIBS variables for other optional
  267. third-party libraries.
  268. HOW TO BUILD PANDA ON A UNIX SYSTEM
  269. First, make a subdirectory to hold the Panda sources. This can be
  270. anywhere you like; in these examples, we'll assume you build
  271. everything within a directory called "panda3d" in your home directory.
  272. mkdir ~/panda3d
  273. You should also create the directory into which panda should be
  274. installed. The default installation directory is /usr/local/panda.
  275. You may choose an alternate installation directory by using the
  276. --prefix parameter to the ppremake configure script, described below.
  277. We recommend giving yourself write permission to this directory, so
  278. that you can run 'make install' and similar scripts that will need to
  279. write to this installation directory, without having to be root.
  280. su root
  281. mkdir /usr/local/panda
  282. chown <your-user-name> /usr/local/panda
  283. exit
  284. Whatever you choose for your installation directory, you should make
  285. sure the bin directory (e.g. /usr/local/panda/bin) is included on your
  286. search path, and the lib directory (e.g. /usr/local/panda/lib) is on
  287. your LD_LIBRARY_PATH. If you use a C-shell derivative like tcsh, the
  288. syntax for this is:
  289. set path=(/usr/local/panda/bin $path)
  290. setenv LD_LIBRARY_PATH /usr/local/panda/lib:$LD_LIBRARY_PATH
  291. If you have a Bourne-shell derivative, e.g. bash, the syntax is:
  292. PATH=/usr/local/panda/bin:$PATH
  293. LD_LIBRARY_PATH=/usr/local/panda/lib:$LD_LIBRARY_PATH
  294. export LD_LIBRARY_PATH
  295. You must now compile ppremake before you can begin to compile Panda
  296. itself. Generally, you do something like the following:
  297. cd ~/panda3d/ppremake
  298. ./configure
  299. make
  300. make install
  301. If the configure script does not already exist, read the document
  302. BUILD_FROM_CVS.txt in the ppremake source directory.
  303. As mentioned above, the default installation directory is
  304. /usr/local/panda. Thus, ppremake will install itself into
  305. /usr/local/panda/bin. If you prefer, you can install Panda into
  306. another directory by doing something like this:
  307. ./configure --prefix=/my/install/directory
  308. make
  309. make install
  310. Now you should create your personal Config.pp file, as described
  311. above, and customize whatever variables are appropriate. By default,
  312. ppremake will look for this file in the root of the install directory,
  313. e.g. /usr/local/panda/Config.pp. If you want to put it somewhere
  314. else, for instance in your home directory, you must set the
  315. PPREMAKE_CONFIG environment variable to point to it:
  316. setenv PPREMAKE_CONFIG ~/Config.pp
  317. In bash:
  318. PPREMAKE_CONFIG=~/Config.pp
  319. export PPREMAKE_CONFIG
  320. You may find it a good idea to make this and other environment
  321. settings in your .cshrc or .bashrc file so that they will remain set
  322. for future sessions.
  323. Now you can test the configuration settings in your Config.pp file:
  324. cd ~/panda3d/dtool
  325. ppremake
  326. When you run ppremake within the dtool directory, it will generate a
  327. file, dtool_config.h (as well as all of the Makefiles). This file
  328. will be included by all of the Panda3D sources, and reveals the
  329. settings of many of the options you have configured. You should
  330. examine this file now to ensure that your settings have been made the
  331. way you expect.
  332. Note that ppremake will also try to create several subdirectories in
  333. the install directory, so you must have write access to the install
  334. directory in order for ppremake to run completely successfully. If
  335. you did not choose to give yourself write access to the install
  336. directory, you may run ppremake as root; in this case we recommend
  337. running ppremake first as a normal user in order to compile, and then
  338. running ppremake again as root just before running make install as
  339. root.
  340. Now that you have run ppremake, you can build the Panda3D sources.
  341. Begin with dtool (the current directory):
  342. make
  343. make install
  344. Once you have successfully built and installed dtool, you can then
  345. build and install panda:
  346. cd ~/panda3d/panda
  347. ppremake
  348. make
  349. make install
  350. After installing panda, you are almost ready to run the program
  351. "pview," which is a basic model viewer program that demonstrates some
  352. Panda functionality. Successfully running pview proves that Panda is
  353. installed and configured correctly (at least as a C++ library).
  354. However, you must set up a Configrc file to set your runtime
  355. configuration options before you can run Panda and open up a graphics
  356. window. See HOW TO RUN PANDA, below.
  357. If you wish, you may also build direct. You only need to build this
  358. if you intend to use the Python interfaces.
  359. cd ~/panda3d/direct
  360. ppremake
  361. make
  362. make install
  363. And you may build pandatool. You only need to build this if you want
  364. to take advantage of model conversion utilities for Panda like
  365. maya2egg and egg2bam, or if you want to use other tools like pstats.
  366. cd ~/panda3d/pandatool
  367. ppremake
  368. make
  369. make install
  370. HOW TO BUILD PANDA ON A WINDOWS SYSTEM, USING CYGWIN
  371. Cygwin is a set of third-party libraries and tools that present a very
  372. Unix-like environment for Windows systems. If you prefer to use a
  373. Unix environment, Cygwin is the way to go. You can download Cygwin
  374. for free from http://www.cygwin.com.
  375. Panda can build and run within a Cygwin environment, but it does not
  376. require it. Note that Cygwin is used strictly as a build environment;
  377. the Cygwin compiler is not used, so no dependency on Cygwin will be
  378. built into Panda. The Panda DLL's that you will generate within a
  379. Cygwin environment will be exactly the same as those you would
  380. generate in a non-Cygwin environment; once built, Panda will run
  381. correctly on any Win32 machine, with or without Cygwin installed.
  382. If you do not wish to install Cygwin for your build environment, see
  383. the instructions below.
  384. If you wish to use Cygwin, there is one important point to keep in
  385. mind. Panda internally uses a Unix-like filename convention; that is,
  386. forward slashes (instead of backslashes) separate directory
  387. components, and there is no leading drive letter on any filename.
  388. These Unix-like filenames are mapped to Windows filenames (with drive
  389. letters and backslashes) when system calls are made.
  390. Cygwin also uses a Unix-like filename convention, and uses a series of
  391. mount commands to control the mapping of Unix filenames to Windows
  392. filenames. Panda is not itself a Cygwin program, and does not read
  393. the Cygwin mount definitions.
  394. That's important enough it's worth repeating. Panda is not aware of
  395. the Cygwin mount points. So a Unix-like filename that makes sense to
  396. a Cygwin command may not be accessible by the same filename from
  397. within Panda.
  398. However, you can set things up so that most of the time, Cygwin and
  399. Panda agree, which is convenient. To do this, it is important to
  400. understand how Panda maps Unix-like filenames to Windows filenames.
  401. * Any relative pathname (that is, a pathname that does not begin
  402. with a leading slash) is left unchanged, except to reverse the
  403. slashes.
  404. * Any full pathname whose topmost directory component is *not* a
  405. single letter is prepended with the contents of the environment
  406. variable PANDA_ROOT.
  407. * Any full pathname whose topmost directory component *is* a single
  408. letter is turned into a drive letter and colon followed by the
  409. remainder of the path. For example, /c/windows/system is turned
  410. into C:\windows\system.
  411. The expectation is that most of the files you will want to access
  412. within Panda will all be within one directory structure, which you
  413. identify by setting the PANDA_ROOT variable. Generally, when you are
  414. using Cygwin, you will want to set this variable to be the same thing
  415. as the root of your Cygwin tree.
  416. For instance, typically Cygwin installs itself in C:\Cygwin. This
  417. means that when you reference the directory /usr/local/bin within
  418. Cygwin, you are actually referring to C:\Cygwin\usr\local\bin. You
  419. should therefore set PANDA_ROOT to C:\Cygwin, so that /usr/local/bin
  420. within Panda will also refer to C:\Cygwin\usr\local\bin.
  421. To sum up: to use Panda within a Cygwin environment,
  422. In tcsh:
  423. setenv PANDA_ROOT 'C:\Cygwin'
  424. or in bash:
  425. PANDA_ROOT='C:\Cygwin'
  426. export PANDA_ROOT
  427. Follow the instructions under HOW TO BUILD PANDA FOR A UNIX
  428. ENVIRONMENT, above.
  429. HOW TO BUILD PANDA ON A WINDOWS SYSTEM, WITHOUT CYGWIN
  430. Note: although Panda can be built without Cygwin, for the moment we
  431. have dropped support for the Microsoft nmake program (which is not
  432. really supported by Microsoft either). Thus, even though you do not
  433. need to have all of Cygwin installed, you will need to have at least
  434. GNU make, as well as a few associated tools. These programs are
  435. available from Cygwin (make.exe, sh.exe, cp.exe, rm.exe); you can copy
  436. these programs from someone who has installed Cygwin. You will also
  437. need the support DLL, cygwin1.dll.
  438. You will need a directory for holding the installed Panda. This can
  439. be anywhere you like; the default is C:\Panda3d. If you choose to
  440. specify otherwise you should modify the INSTALL_DIR line in
  441. ppremake\config_msvc.h before you build ppremake (below).
  442. (Alternatively, you can leave ppremake alone and simply redefine
  443. INSTALL_DIR in your Config.pp file, but then you will also need to
  444. define the environment variable PPREMAKE_CONFIG to point to your
  445. Config.pp.)
  446. md C:\Panda3d
  447. You will first need to build a copy of ppremake.exe. There is a
  448. Microsoft VC7 project file in the ppremake directory that will build
  449. this. Once it is built, copy it to the Panda bin directory (which you
  450. will have to make yourself). This will be a directory called "bin"
  451. below the root of the installed directory you created above; for
  452. instance, C:\Panda3d\bin.
  453. Make sure the Panda bin and lib directories are on your path, and set
  454. a few environment variables for building. We suggest creating a file
  455. called PandaEnv.bat to hold these commands; then you may invoke this
  456. batch file before every Panda session to set up your environment
  457. properly. Alternatively, you may make these definitions in the
  458. registry.
  459. path C:\Panda3d\bin;C:\Panda3d\lib;%PATH%
  460. set PANDA_ROOT=C:\
  461. Setting PANDA_ROOT is optional; it specifies the default drive Panda
  462. will search for file references. (Panda internally uses a Unix-like
  463. filename convention, which does not use leading drive letters. See
  464. the bullet points in the Cygwin section, above, describing the rules
  465. Panda uses to map its Unix-like filenames to Windows filenames.)
  466. Now make a directory for building Panda. This may be different from
  467. the directory, above, that holds the installed Panda files; or it may
  468. be the same. In this example we assume you will be building in the
  469. same directory, C:\Panda3d.
  470. Now set up your personal Config.pp file to control your local
  471. configuration settings, as described above. By default, ppremake will
  472. look for this file in the root of the install directory,
  473. e.g. C:\Panda3d\Config.pp; if you want to put it somewhere else you
  474. should define the environment variable PPREMAKE_CONFIG to the full
  475. path to your Config.pp.
  476. Use your favorite text editor to add the appropriate lines to your
  477. Config.pp to define the correct paths to the various third-party
  478. packages you have installed on your system. See HOW TO CONFIGURE
  479. PANDA FOR YOUR ENVIRONMENT, above.
  480. edit C:\Panda3d\Config.pp
  481. Now you can test the configuration settings in your Config.pp file:
  482. C:
  483. cd \Panda3d\dtool
  484. ppremake
  485. When you run ppremake within the dtool directory, it will generate a
  486. file, dtool_config.h (as well as all of the Makefiles). This file
  487. will be included by all of the Panda3D sources, and reveals the
  488. settings of many of the options you have configured. You should
  489. examine this file now to ensure that your settings have been made the
  490. way you expect.
  491. Now that you have run ppremake, you can build the Panda3D sources.
  492. Begin with dtool (the current directory):
  493. make
  494. make install
  495. Once you have successfully built and installed dtool, you can then
  496. build and install panda:
  497. cd \Panda3d\panda
  498. ppremake
  499. make
  500. make install
  501. After installing panda, you are almost ready to run the program
  502. "pview," which is a basic model viewer program that demonstrates some
  503. Panda functionality. Successfully running pview proves that Panda is
  504. now installed and configured correctly (at least as a C++ library).
  505. However, you must set up a Configrc file to set your runtime
  506. configuration options before you can run Panda and open up a graphics
  507. window. See HOW TO RUN PANDA, below.
  508. If you wish, you may also build direct. You only need to build this
  509. if you intend to use the Python interfaces.
  510. cd \Panda3d\direct
  511. ppremake
  512. make
  513. make install
  514. And you may build pandatool. You only need to build this if you want
  515. to take advantage of model conversion utilities for Panda like
  516. maya2egg and egg2bam, or if you want to use other tools like pstats.
  517. cd \Panda3d\pandatool
  518. ppremake
  519. make
  520. make install
  521. HOW TO RUN PANDA
  522. Once Panda has been successfully built and installed, you should be
  523. able to run pview to test that everything is working (you might need
  524. to type rehash first if you use csh):
  525. pview
  526. The first time you run pview, if you have not yet created a Configrc
  527. file, you should see something like this:
  528. Known pipe types:
  529. No interactive pipe is available! Check your Configrc!
  530. If you get instead an error about some shared library or libraries not
  531. being found, check that your LD_LIBRARY_PATH setting (on Unix) or your
  532. PATH (on Windows) includes the directory in which all of the Panda
  533. libraries have been installed. (This is normally $INSTALL_DIR/lib, or
  534. whatever you set INSTALL_DIR to followed by "lib". On Unix, this
  535. defaults to /usr/local/panda/lib. If you have redefined
  536. INSTALL_LIB_DIR in your Config.pp, for instance to define Panda as a
  537. native Python module, you should use that directory instead.)
  538. If you do get the above error message, you will need to create a
  539. Configrc file to indicate some run-time parameters. This is different
  540. from the Config.pp file you created above, which is only used by
  541. ppremake to define compile-time parameters; the Configrc file is read
  542. every time Panda is started and it defines parameters that control
  543. run-time behavior.
  544. Create a file called Configrc in the $INSTALL_DIR/etc directory. By
  545. convention, your custom Configrc file should not have any extension,
  546. not even the extension ".txt"; this differentiates it from the
  547. standard Configrc files which are also installed into the
  548. $INSTALL_DIR/etc file (and having no extension causes your file to be
  549. sorted to the top of the list, so that your personal settings will
  550. override those in the other files).
  551. For now, add just the line:
  552. load-display pandagl
  553. Or, if you are on Windows and prefer to use DirectX instead of OpenGL,
  554. add instead the line:
  555. load-display pandadx8
  556. Later you may add additional lines here to control the default
  557. behavior of Panda in other ways. See the file Configrc in this
  558. directory for more examples.
  559. Now try to run pview again. If all goes well, it should open up a
  560. window with a blue triangle. You can use the mouse to move the
  561. triangle around. You can also pass the name of an egg file, if you
  562. have one (look in the models directory for some sample egg files), on
  563. the command line, and pview will load up and display the egg file.
  564. If you want to load the Configrc from other than the compiled-in
  565. default directory, set the environment variable:
  566. CONFIGRC_DIR=/my/home/directory
  567. export CONFIGRC_DIR
  568. Where /my/home/directory is the name of your home directory (or
  569. wherever you put the Configrc file). Note that if you redefine
  570. CONFIGRC_DIR, you will no longer automatically load the standard
  571. Configrc files that were installed into $INSTALL_DIR/etc. It is
  572. possible to configure Panda to search for Configrc files in more than
  573. one directory, but that's a little more complicated and is outside the
  574. scope of this document.
  575. HOW TO BUILD THE PYTHON INTERFACES
  576. You may stop now if you only intend to use Panda as a C++ library.
  577. However, if you wish to use Panda from within Python, you must now
  578. generate the Python interfaces.
  579. There are two parts to the Python interface for Panda. The first part
  580. is a series of wrapper functions that are compiled into the Panda
  581. libraries themselves, along with associated *.in files that describe
  582. the class hierarchy. If you defined PYTHON_IPATH correctly in your
  583. Config.pp file, then Python should have been detected by ppremake, and
  584. it would have generated makefiles to build these wrappers
  585. automatically. (You would have seen the program "interrogate" running
  586. within each directory as panda was building, and you will have a
  587. number of *.in files now installed into $INSTALL_DIR/etc.)
  588. If, for some reason, the interrogate program did not run, perhaps
  589. because you defined an invalid directory in PYTHON_IPATH, you can go
  590. back and fix this now, and simply re-run ppremake and make install
  591. again in each of dtool, panda, and direct.
  592. To make Panda accessible to Python, you will need to add
  593. $INSTALL_DIR/lib to your PYTHONPATH variable, e.g.:
  594. setenv PYTHONPATH ${PYTHONPATH}:/usr/local/panda/lib
  595. Or, on Windows:
  596. set PYTHONPATH=%PYTHONPATH%;C:\Panda3d\lib
  597. We recommend the PYTHONPATH approach for most users, since it keeps
  598. all of the Panda files within one directory and doesn't clutter up the
  599. Python distribution. However, if you only intend to use Panda from
  600. Python, and especially if you want to make it accessible to multiple
  601. users, it may be more attractive to install the Panda libraries as a
  602. standard Python module, so that it is not necessary to modify your
  603. PYTHONPATH variable; see "Installing Panda as a standard Python
  604. module", below.
  605. The second part to the Python interface is a series of generated
  606. Python wrapper classes, for each C++ class detected by interrogate.
  607. These classes must be generated after all of the C++ code has been
  608. compiled and installed. Execute the following command (you might need
  609. to type rehash first if you use csh):
  610. genPyCode
  611. This is a script that was installed into $INSTALL_DIR/bin as part of
  612. the build of direct. It invokes Python to read the *.in files
  613. generated by interrogate, and generates the appropriate wrapper
  614. functions, which are then written into $INSTALL_DIR/lib/pandac.
  615. (There will be several hundred generated Python modules, which are
  616. normally "squeezed" into a single file called PandaModules.pyz using
  617. PythonWare's SqueezeTool. This squeeze step gives a significant
  618. load-time speedup, especially on Windows; but if it causes problems,
  619. you can use the option -n, e.g. 'genPyCode -n', to avoid it.)
  620. You will need to re-run this script only if the Panda interface
  621. changes, e.g. if a class is added or a method's parameters change.
  622. You should certainly re-run it any time you update and install a new
  623. version of Panda.
  624. Installing Panda as a native Python module
  625. Panda can be optionally configured to install its run-time interfaces
  626. into the Python installation directory, instead of into the normal
  627. $INSTALL_DIR/lib directory. This means you can run Panda from Python
  628. without having to set your PYTHONPATH variable, but it does clutter up
  629. your Python distribution a bit.
  630. To do this, simply add something like the following line to your
  631. Config.pp:
  632. #define INSTALL_LIB_DIR /usr/lib/python2.2/site-packages
  633. Where you give the actual path to the site-packages directory for your
  634. particular installation of Python. On Windows, this will probably
  635. look something like this:
  636. #define INSTALL_LIB_DIR C:\Python22\Lib\site-packages
  637. Then go back and re-run ppremake and make install in each of dtool,
  638. panda, and direct, and then re-run genPyCode, to install the Panda
  639. libraries and Python files directly into the Python site-packages
  640. directory.
  641. You may also need to set your LD_LIBRARY_PATH (on Unix) or PATH (on
  642. Windows) to reference this new directory instead of $INSTALL_DIR/lib,
  643. especially if you want to be able to run any of the Panda standalone
  644. programs occasionally, like pview or any of the model converters.
  645. Unix users should note that you must have write permission to the
  646. site-packages directory in order to install files there. You may
  647. choose to run these install steps (ppremake, make install, genPyCode)
  648. as root to avoid this problem. If you encounter difficulty running
  649. genPyCode as root, make sure that you still have LD_LIBRARY_PATH
  650. defined appropriately once you have become root.
  651. Testing the Python interface
  652. Assuming that you have already set up your Configrc file and tested
  653. that pview works, as described above in HOW TO RUN PANDA, you should
  654. now be ready to try to run Panda from within Python. Start up a
  655. Python shell and type the following command:
  656. Python 2.2.2 (#37, Feb 10 2003, 18:00:06) [MSC 32 bit (Intel)] on win32
  657. Type "help", "copyright", "credits" or "license" for more information.
  658. >>> import direct.directbase.DirectStart
  659. You should see a graphics window come up, very similar to the one you
  660. saw when you ran pview. To load a particular model file into the
  661. scene, try something like this:
  662. >>> m = loader.loadModel('/c/Panda3d/models/smiley.egg')
  663. >>> m.reparentTo(render)
  664. >>> run()
  665. Note that Panda expects a forward-slash convention for pathnames, with
  666. no leading drive letter, even on a Windows system. See the full
  667. description of how Panda maps these pathnames to Windows pathnames in
  668. HOW TO BUILD PANDA ON A WINDOWS SYSTEM, USING CYGWIN, above.
  669. You can now move the scene around with the mouse, just as in pview
  670. (you may need to pull the camera back by dragging upwards while
  671. holding down the right mouse button in order to see the model).
  672. Congratulations! Panda 3D is now successfully installed. See the
  673. online documentation available at http://www.etc.cmu.edu/panda3d/ for
  674. more help about where to go next.