Browse Source

more clarifications, section about mayacopy etc.

David Rose 21 years ago
parent
commit
a234645d69
1 changed files with 104 additions and 1 deletions
  1. 104 1
      panda/src/doc/ppremake-models.txt

+ 104 - 1
panda/src/doc/ppremake-models.txt

@@ -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
 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
 the directory with the models (or in the directory above the SoftImage
 tree in the case of SoftImage models).
@@ -411,4 +423,95 @@ filter_char_egg - Similar to filter_egg, above, except that one
       #defer COMMAND \
         egg-topstrip -i -t joint_pelvis -d $[TARGET_DIR] $[sources]
     #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.
+
+
+