Panda3D Manual: Panda Filename Syntax
<<prev | top | next>> |
For easier portability, Panda3D uses Unix-style pathnames, even on Microsoft Windows. This means that the directory separator character is always a forward slash, not the Windows backslash character, and there is no leading drive letter prefix. (Instead of a leading drive letter, Panda uses an initial one-letter directory name to represent the drive.) There is a fairly straightforward conversion from Windows filenames to panda filenames. Always be sure to use Panda filename syntax when using a Panda3D library function, or one of the panda utility programs:
# WRONG: loader.loadModel("c:\\Program Files\\My Game\\Models\\Model1.egg") # CORRECT: loader.loadModel("/c/Program Files/My Game/Models/Model1.egg")
Panda uses the `Filename` class to store Panda-style filenames; many Panda functions expect a Filename object as a parameter. The Filename class also contains several useful methods for path manipulation and file access, as well as for converting between Windows-style filenames and Panda-style filenames; see the API reference for a more complete list. To convert a Windows filename to a Panda pathname, use code similar to the following:
from pandac.PandaModules import Filename winfile = "c:\\MyGame\\Model1.egg" pandafile = Filename.fromOsSpecific(winfile) print pandafile
To convert a Panda filename into a Windows filename, use code not unlike this:
from pandac.PandaModules import Filename pandafile = Filename("/c/MyGame/Model1.egg") winfile = pandafile.toOsSpecific() print winfile
The Filename class can also be used in combination with python's built-in path manipulation mechanisms. Let's say, for instance, that you want to load a model, and the model is in the "model" directory that is in the same directory as the main program's "py" file. Here is how you would load the model:
import sys,os from pandac.PandaModules import Filename # get the location of the 'py' file I'm running: mydir = os.path.abspath(sys.path[0]) # convert that to panda's unix-style notation mydir = Filename.fromOsSpecific(mydir).getFullpath() # now load the model model = loader.loadModel(mydir + "/models/mymodel.egg")
<<prev | top | next>> |