scripting.txt
上传用户:kellyonhid
上传日期:2013-10-12
资源大小:932k
文件大小:6k
源码类别:

3D图形编程

开发平台:

Visual C++

  1. Scripting scanalyze
  2. magi@cs, last update 5/2/99
  3. Table of contents:
  4. 0.  Prerequisites
  5. 1.  Starting scanalyze
  6. 2.  Configuration and defaults
  7. 3.  Basic scripting
  8. 3a. Loading scans
  9. 3b. Listing scans
  10. 3c. Saving scans
  11. 0.  Prerequisites
  12.   This document assumes you already know Tcl scripting.
  13.   You'll do best if you already know how to use scanalyze (interactively)
  14.   to perform the task you want to script, because you'll have an idea of
  15.   the steps involved and if you want you can just go through the scanalyze
  16.   Tcl source (publicly visible in the scanalyze directory) to see what the 
  17.   UI does to accomplish the task.
  18. 1.  Starting scanalyze
  19.   syntax: scanalyze [-noui] [somescript.tcl] [scanfile1] [scanfileN...]
  20.   All parameters are optional.
  21.   -noui, which allows you to run with no X display set, must be the first
  22.   argument on the command line.  Note that in -noui mode many commands
  23.   will be unavailable; this document mostly pertains to -noui mode, but
  24.   major differences will be explained below.
  25.   If you specify a script on the command line, scanalyze will execute it
  26.   as arbitrary Tcl script after startup, then exit, even if your script
  27.   does not end with the exit command.  There's no way that I know to have
  28.   scanalyze load, process a given script, and then stay loaded for
  29.   interactive use (although you could put such a script in your
  30.   ~/scanalyzerc file).
  31.   If you load scan files from the command line, these filenames must be
  32.   at the end of the command line.
  33. 2.  Configuration and defaults
  34.   The latest public versions of scanalyze live in
  35.   /usr/graphics/project/scanner/scanalyze/[target type].
  36.   The version of scanalyze that will run if you execute 'scanalyze'
  37.   depends on the environment variable SCANALYZE_DIR, which you can set to
  38.   force a specific copy of scanalyze to be used (ie, if you are a
  39.   developer and build your own copy).  If this variable is not set,
  40.   scanalyze will look for the variable SCANALYZE_VERSION, which corresponds
  41.   to one of the target types in the above-named directory.  If this is not 
  42.   set, a default version will be chosen based on the machine you are running 
  43.   on.  In most cases you should not need either of these variables, and the
  44.   right thing will happen.
  45.   At startup, scanalyze reads configuration settings from
  46.   ~/scanalyzedefaults, which it maintains automatically with preferences
  47.   information.
  48.   Scanalyze also processes ~/scanalyzerc, if present, as arbitrary Tcl
  49.   script, for further customization options.
  50. 3.  Basic scripting
  51.   This section lists how to load and save scan files, as well as find out
  52.   what's loaded in a way that you can refer back to it.
  53.   3a.  Loading files
  54.     Load files using the 'readfile' command.  readfile takes any number of 
  55.     arguments, which can contain the normal wildcards.  Note that [ and ] are
  56.     special to Tcl, so if you want to use a filespec such as [mf]*/*.sd, you
  57.     will have to escape the [ character, as in `readfile [mf]*/*.sd`.
  58.     readfile will load all given files into scanalyze, and return a list
  59.     of scan identifiers naming all the scans it just loaded.
  60.     Scan identifiers are how scanalyze refers to scans internally, and
  61.     how you will name them in scripting commands.  They are the same names 
  62.     that you see in the Mesh Controls window if running with the UI.
  63.     Unlike filenames, they are guaranteed unique (if you load the same file
  64.     twice, it will have different scan identifiers each time.)
  65.   3b.  Listing loaded scans
  66.     You can obtain a list of the scan identifiers for all loaded scans
  67.     with the plv_listscans command (which takes no arguments).
  68.     If running with the UI, there are also a couple of additional
  69.     functions that return the same information: getMeshList will return the
  70.     list of all scan identifiers, and getVisibleMeshes will return only the
  71.     scan identifiers for visible meshes (visibility is a concept that is
  72.     largely meaningless in -noui mode).  Note that these commands will NOT
  73.     work on -noui mode.
  74.     You can also obtain the scan list sorted by various criteria with
  75.     plv_sort_scan_list (which needs arguments) or its easier wrapper
  76.     getSortedMeshList, which returns the scans sorted in the same order as
  77.     the MeshControls window.
  78.   3c.  Saving scans
  79.     There are various ways you can save a scan: in its native format, a
  80.     complete copy of all resolutions written as triangle meshes in .ply
  81.     format, a single mesh written in .ply format, or even a single
  82.     rendering in .rgb format.
  83.     For all these methods, you need at least two things: the scan
  84.     identifier for the scan you want to save, and an output filename.  If you
  85.     want to know the filename that the scan was loaded from, either to
  86.     overwrite it or as a base name for further munging, use the
  87.     plv_get_scan_filename command, which takes the scanid as its argument.
  88.     Writing a scan in its native format:
  89.     plv_write_scan scanid [outputname]
  90.     If outputname is omitted, the scan will attempt to overwrite the file
  91.     it was loaded from.  If the scan was not loaded from a file (ie, was
  92.     created by cliipping) this will fail.
  93.     Writing a scan as a multires .ply set:
  94.     saveScanAsPlySetToDir scanid dirname
  95.     A directory called dirname will be created, containing scanid.set and
  96.     one or more .ply files corresponding to the various resolutions of the
  97.     scan that you saved.
  98.     Writing a single resolution of a scan as a .ply file:
  99.     plv_write_resolutionmesh scanid resolution filename.ply
  100.     Resolution should be the number of polygons in the resolution you want 
  101.     to save, and can be obtained from the 'plv_getreslist scanid' command.
  102.     Writing an .rgb file of the current rendering:
  103.     (not applicable in -noui mode)
  104.     plv_writeiris renderwindow filename.rgb
  105.     Will save the contents of renderwindow to filename.rgb.  The name of
  106.     the main rendering window can be obtained with [globalset toglPane];
  107.     only a few other things (like line-depth analysis windows) will
  108.     require a different renderwindow.
  109.     Saving everything as multires .ply sets:
  110.     Finally, if you want to export the entire dataset loaded into
  111.     scanalyze as multires .ply sets with a minimum of effort, there's the
  112.     saveAllScansAsPlySets command, which executes saveScanAsPlySetToDir
  113.     automatically for each scan using scanid as the directory name.
  114. *** more to come. ***