mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
more clarifications, section about mayacopy etc.
This commit is contained in:
parent
834a6423a2
commit
a234645d69
@ -38,6 +38,18 @@ perform these steps, although it currently generates only a Unix-like
|
|||||||
makefile, so the at the moment a model tree can only be built on a
|
makefile, so the at the moment a model tree can only be built on a
|
||||||
Linux or Unix machine, or on a PC with Cygwin installed.
|
Linux or Unix machine, or on a PC with Cygwin installed.
|
||||||
|
|
||||||
|
See the dmodels tree in the Panda3D repository for an example of a
|
||||||
|
simple buildable model tree. This is different from the models tree,
|
||||||
|
which is much simpler and includes only ready-to-load egg files; the
|
||||||
|
dmodels tree is set up as a full-fledged buildable model tree using
|
||||||
|
the ppremake system. With a few small exceptions, the dmodels tree
|
||||||
|
does not contain any egg files, although intermediate egg files are
|
||||||
|
generated during the make process. When you have finished building
|
||||||
|
the dmodels tree, you will have generated a number of bam files that
|
||||||
|
are fully optimized and ready to load for your current version of
|
||||||
|
Panda.
|
||||||
|
|
||||||
|
|
||||||
To set up a ppremake model tree, you must create a Sources.pp file in
|
To set up a ppremake model tree, you must create a Sources.pp file in
|
||||||
the directory with the models (or in the directory above the SoftImage
|
the directory with the models (or in the directory above the SoftImage
|
||||||
tree in the case of SoftImage models).
|
tree in the case of SoftImage models).
|
||||||
@ -411,4 +423,95 @@ filter_char_egg - Similar to filter_egg, above, except that one
|
|||||||
#defer COMMAND \
|
#defer COMMAND \
|
||||||
egg-topstrip -i -t joint_pelvis -d $[TARGET_DIR] $[sources]
|
egg-topstrip -i -t joint_pelvis -d $[TARGET_DIR] $[sources]
|
||||||
#end filter_char_egg
|
#end filter_char_egg
|
||||||
|
|
||||||
|
|
||||||
|
HOW TO POPULATE A CVS-CONTROLLED MODEL TREE
|
||||||
|
|
||||||
|
Since a model tree is really just a source tree like any other, you
|
||||||
|
can check in the source files--the .mb files or .flt files, for
|
||||||
|
instance, and all of the associated image files--as source files in a
|
||||||
|
CVS directory. Then any developer can check out the source tree,
|
||||||
|
ppremake, and make install, exactly the same way you would build
|
||||||
|
Panda. Of course, .mb files and .flt files are binary files, but CVS
|
||||||
|
(and most other revision control systems) allows you to add binary
|
||||||
|
files to the system. You just can't merge multiple changes coming in
|
||||||
|
at once to the same file, so it's important to make frequent updates
|
||||||
|
and commits in order to minimize the chance of an accidental
|
||||||
|
collision with another artist.
|
||||||
|
|
||||||
|
In order for this to work, the source files must reference texture
|
||||||
|
paths and other external filenames using relative filenames--for
|
||||||
|
instance, a model should apply a texture named "../maps/grid.tif"
|
||||||
|
rather than "/home/drose/panda3d/dmodels/maps/grid.tif", for instance.
|
||||||
|
This is because the entire model tree might be checked out by another
|
||||||
|
developer within some other directory, and only relative paths within
|
||||||
|
the model tree will be valid.
|
||||||
|
|
||||||
|
For most modeling packages, it is not difficult to ensure that all of
|
||||||
|
the external references use only relative paths. Populating a model
|
||||||
|
tree with, say, MultiGen source files may thus be as simple as copying
|
||||||
|
the MultiGen files and the image files in and then adding them to cvs
|
||||||
|
by hand (using -kb to indicate a binary file, of course).
|
||||||
|
|
||||||
|
Maya, on the other hand, for some reason insists on storing texture
|
||||||
|
references as full pathnames, even if you enter a relative path. It
|
||||||
|
is not possible using the Maya API to create an .mb file that
|
||||||
|
references its textures using relative pathnames. This makes it
|
||||||
|
impossible to add a Maya file to a CVS repository in the normal way.
|
||||||
|
|
||||||
|
However, it *is* possible to store relative paths within a Maya file
|
||||||
|
if you use an OpenMaya program to generate the Maya file. Panda
|
||||||
|
provides a utility called mayacopy that does this (among other useful
|
||||||
|
features).
|
||||||
|
|
||||||
|
In fact, Panda provides a family of utilities, with similar behavior;
|
||||||
|
at the time of this writing, the list includes mayacopy, fltcopy, and
|
||||||
|
lwocopy. (There is also a separate tool called softcvs, used for
|
||||||
|
integrating SoftImage version 4.3 databases; this works differently
|
||||||
|
from the others, because of the very different nature of a SoftImage
|
||||||
|
scene. The use of softcvs is not documented in this file.)
|
||||||
|
|
||||||
|
In general, the copy tools work like this:
|
||||||
|
|
||||||
|
cd mymodels/src/mydir
|
||||||
|
mayacopy /path/to/my/maya.mb
|
||||||
|
|
||||||
|
This copies the indicated Maya (or MultiGen, LightWave, etc.) file
|
||||||
|
from the named directory into the current directory. It also copies
|
||||||
|
in all of the texture files referenced by the Maya file, and it
|
||||||
|
modifies the Maya file to use only local pathnames to the newly copied
|
||||||
|
texture files, instead of the full pathnames that would have been
|
||||||
|
stored in the original Maya file.
|
||||||
|
|
||||||
|
A little heuristic is used to decide where to place each texture image
|
||||||
|
referenced by the Maya file. The following rules are applied:
|
||||||
|
|
||||||
|
(1) If another texture file with the same name already exists
|
||||||
|
elsewhere in the source hierarchy, assume this texture image
|
||||||
|
represents the same image (or a new version of that image) and
|
||||||
|
overwrite it. (Note that it is not a good idea to have
|
||||||
|
different texture images that are stored under the same
|
||||||
|
filename. egg-palettize also makes the assumption that any two
|
||||||
|
files with the same filename represent the same texture image.)
|
||||||
|
|
||||||
|
(2) If the texture file does not already exist, copy it into src/maps.
|
||||||
|
|
||||||
|
(3) If the src/maps directory does not exist, copy the texture file
|
||||||
|
into the same directory with the source Maya file.
|
||||||
|
|
||||||
|
As the Maya file and each texture file is copied into the source tree,
|
||||||
|
the cvs command is automatically invoked to add the file(s) to the
|
||||||
|
repository, if necessary. It is still your responsibility to issue
|
||||||
|
the cvs commit command when you are ready to make the changes
|
||||||
|
permanent.
|
||||||
|
|
||||||
|
You can use mayacopy, fltcopy, etc. to copy in a file from a
|
||||||
|
completely different hierarchy, or to update a file already within the
|
||||||
|
source tree. It is particularly important to re-run mayacopy after
|
||||||
|
modifying any .mb file using Maya, since Maya will replace all of the
|
||||||
|
local pathnames with full pathnames each time you save the file.
|
||||||
|
Re-running mayacopy on the same file will restore the relative
|
||||||
|
pathnames again.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user