Skip to content
Snippets Groups Projects
partiview.txt 70.8 KiB
Newer Older
  • Learn to ignore specific revisions
  • teuben's avatar
    teuben committed
      Partiview (PC-VirDir)
    
    teuben's avatar
    teuben committed
      Peter Teuben, Stuart Levy
    
      30 August 2001
    
      partiview is a program that enables you to visualize and animate par-
      ticle data. partiview runs on relatively simple desktops and laptops,
      but is mostly compatible with its big brother VirDir.  This document
      helps you installing and running the development version of partiview.
      Quite a few things in this manual have not been fleshed out, in par-
      ticular the detailed description of all the commands.
    
    teuben's avatar
    teuben committed
      ______________________________________________________________________
    
      Table of Contents
    
    
    
    teuben's avatar
    teuben committed
      1. Installation
    
         1.1 MESA/OpenGL
         1.2 FLTK
         1.3 partiview
    
    teuben's avatar
    teuben committed
         1.4 CVS
    
    teuben's avatar
    teuben committed
    
      2. Directory structure
    
      3. Running the program
    
    
         3.1 Example 1: Hipparcos Bright Star Catalogue 3-D viewing
    
    teuben's avatar
    teuben committed
         3.2 Top Row
    
         3.3 Group row (optional)
         3.4 Time Animation rows (Optional)
         3.5 Camera (path) Animation row
         3.6 Logfile window
         3.7 Command window
         3.8 Viewing window
         3.9 Example 2: a (starlab) animation
         3.10 Example 3: stereo viewing
    
    teuben's avatar
    teuben committed
    
    
      4. Commands
    
    teuben's avatar
    teuben committed
    
    
         4.1 Control Commands
         4.2 I/O commands
         4.3 Object group commands
         4.4 View commands
         4.5 Particle Display Commands
         4.6 Particle subsetting & statistics
         4.7 Boxes
         4.8 Data commands
    
    slevy's avatar
    slevy committed
         4.9 Kira/Starlab
            4.9.1 Kira particle attributes
            4.9.2 Hertzsprung-Russell diagram
            4.9.3 kira control commands
         4.10 Textures
         4.11 Coordinates and Coordinate Transformations
    
    
      5. Viewing Window Keyboard Shortcuts
    
    teuben's avatar
    teuben committed
    
    
      6. Partiview and NEMO
    
      7. Tips
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
      8. Bugs, Features and Limitations
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
         8.1 Limitations w.r.t. VirDir:
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
    
    
    
      ______________________________________________________________________
    
    teuben's avatar
    teuben committed
      11..  IInnssttaallllaattiioonn
    
    
    
    slevy's avatar
    slevy committed
      This assumes you have the July 2001 release (version 0.6 or later) of
      ppaarrttiivviieeww, not the earlier "ggvviieeww" release that was described in
    
      earlier versions of this document. We keep copies of some Linux
      support files (Mesa, FLTK) on our current
      http://www.astro.umd.edu/nemo/amnh website. Although more current
      versions of support libraries may be available, they may not have been
      tested out. Note that this current development release is only
      documented for work under Linux (redhat 6.2 and 7.1 have been tested),
      although we expect it to work for at least SGI and maybe Solaris too.
    
      partiview needs two libaries to compile: OpenGL (or MESA) for the
      drawing operations, and FLTK for the window makeup.
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
      11..11..  MMEESSAA//OOppeennGGLL
    
    
    teuben's avatar
    teuben committed
      First make sure Mesa is installed, for redhat6.2 there are rpm files
      available.  Check if you have the following:
    
    
    
    
           ______________________________________________________________________
                  % rpm -qa | grep Mesa
                  Mesa-3.2-2
                  Mesa-devel-3.2-2
    
                  % rpm -i Mesa-3.2-2.i686.rpm Mesa-devel-3.2-2.i686.rpm
           ______________________________________________________________________
    
    teuben's avatar
    teuben committed
    
    
      You should have both installed. Some packages will use libMesaGL,
      others libGL. The configure script (see below) should take care of the
      two possible options.
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
      Homepage: http://mesa3d.sourceforge.org
    
    
      Redhat packages: (part of powertools I believe)
    
    teuben's avatar
    teuben committed
    
    
    
      Mesa3D is under continuous development. As of this writing the stable
      release is 3.4.2, but it has not been tested with the current
      partiview release.  Redhat 7.1 comes with Mesa-3.4 and also works with
      partiview.
    
    
    
    teuben's avatar
    teuben committed
      11..22..  FFLLTTKK
    
      Also make sure fltk is installed.  If you got my version, do this (as
      root)
    
    
    
    
    teuben's avatar
    teuben committed
           ______________________________________________________________________
    
                  % locate libfltk.a
                  % locate Fl_Slider.h
    
    
    teuben's avatar
    teuben committed
                  % cd <where-ever>/fltk-1.0.9
                  % make install
    
    teuben's avatar
    teuben committed
           ______________________________________________________________________
    
    
    
    
      (you only need it if you want to recompile the program at some point,
      not if you just want to run it)
    
      Homepage: http://www.fltk.org/
    
    
    teuben's avatar
    teuben committed
      Redhat packages: http://www.cs.cornell.edu/nogin/RPM/fltk-devel.html
    
    
      Find rpms: http://rpmfind.net
    
    
      FLTK is under continuous development. As of this writing the latest
      release is 1.0.10, but has not been tested with the current partiview
      release.
    
    
    
    teuben's avatar
    teuben committed
    
      11..33..  ppaarrttiivviieeww
    
    
    
      Extract the tarball, and install the program from within the src
      directory:
    
    teuben's avatar
    teuben committed
    
    
           ______________________________________________________________________
    
    slevy's avatar
    slevy committed
                  % tar zxf partiview-0.6.tar.gz
    
    teuben's avatar
    teuben committed
    
    
                  % make clean                (if you really must compile a new executable)
                  % ./configure               (GNU autoconf toolset to ease installation)
                  % make depend               (might need to make new local dependancies)
                  % make partiview            (should not have to edit Makefile anymore)
           ______________________________________________________________________
    
    teuben's avatar
    teuben committed
      11..44..  CCVVSS
    
    
      Since version 0.5 partiview is under CVS control, and occasionally we
      will stamp out a new release when we deem it stable. Anonymous or
      read-only CVS access is also offered. Currently the CVS repository
      machine is cvs.astro.umd.edu and you will need to setup your
      developers account with Peter (teuben@astro.umd.edu). Here's a sample
      session with some commonly used CVS commands:
    
    
    teuben's avatar
    teuben committed
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
      ______________________________________________________________________
       setenv CVSROOT   :pserver:myname@cvs.astro.umd.edu:/home/cvsroot
       setenv CVSEDITOR emacs
       setenv CVS_RSH   ssh           (not needed for pserver access though)
    
       cvs login                      (only needed once, and only for pserver type access)
    
       cvs checkout partiview              # get a new local sandbox to work in, or
    
       cvs -n -q update partiview          # check if others had made any changes
       cvs update partiview                # if so, update your sandbox and/or resolve conflicts
    
       cd partiview/src
       ./configure
       emacs partibrains.c                 # edit some files
       make all                            # compile the program
       ./partiview                         # test the program
       emacs kira_parti.cc                 # edit another file
       make all                            # check if it still compiles
    
       cvs -n -q update                    # check if anybody else made changes
       cvs update                          # if so, update your sandbox again, resolve conflicts
    
       cvs commit                          # and commit your changes
      ______________________________________________________________________
    
    
    
    teuben's avatar
    teuben committed
      22..  DDiirreeccttoorryy ssttrruuccttuurree
    
    
    
      Here is the directory structure, as per version 0.1:
    
    teuben's avatar
    teuben committed
    
    
    
    teuben's avatar
    teuben committed
                partiview/             root directory
                partiview/src          source code
    
                partiview/data         sample datafiles (e.g. Hipparcos Bright Star Catalogue)
    
    teuben's avatar
    teuben committed
                partiview/doc          manual (sgml, and derived  html, txt, ps/dvi)
                partiview/nemo         NEMO specific converters/code
                partiview/starlab      STARLAB specific converters/code
    
    teuben's avatar
    teuben committed
                partiview/tutor        examples of tutorial type code (added in 0.2)
    
    teuben's avatar
    teuben committed
                partiview/windows      windows executables/support (old)
    
    
    
    teuben's avatar
    teuben committed
      33..  RRuunnnniinngg tthhee pprrooggrraamm
    
    
    teuben's avatar
    teuben committed
      First we describe a simple example how to run partiview with a
      supplied sample dataset. Then we describe the different windows that
      partiview is made up of, and the different commands and keystrokes it
      listens to.
    
    
    
      33..11..  EExxaammppllee 11:: HHiippppaarrccooss BBrriigghhtt SSttaarr CCaattaalloogguuee 33--DD vviieewwiinngg
    
    teuben's avatar
    teuben committed
    
    
    
      Start the program using one of the sample  "speck" files in the data
      directory:
    
    teuben's avatar
    teuben committed
    
    
           ______________________________________________________________________
                  % cd partiview/data
                  % ./hipbright
           or
    
    slevy's avatar
    slevy committed
                  % partiview hipbright
    
           ______________________________________________________________________
    
    slevy's avatar
    slevy committed
      and this should come up with a display familiar to most of us who
      watch the skies. You should probably enlarge the window a bit. Mine
      comes up in roughly a 300 by 300 display window, which may be a bit
      small (certainly on my screen :-) (Hint: the .partiviewrc file may
      contain commands like eval winsize 600 400.)
    
    teuben's avatar
    teuben committed
    
    
    
      Hit the TAB key to bring focus to the (one line) command window
    
    teuben's avatar
    teuben committed
      inbetween the log screen (top) and viewing screen (bottom). Type the
      commands
    
           ______________________________________________________________________
                   fov 50                          (field of view 50 degrees)
                   jump 0 0 0 80 70 60             (put yourself in the origin
                                                   and look at euler angles
                                                   RxRyRz (80,70,60)
           ______________________________________________________________________
    
    slevy's avatar
    slevy committed
    
    
    
    
      and it should give another nice comfy view :-)  If you ever get lost,
      use the jump command to go back to a known position and/or viewing
      angle.
    
    teuben's avatar
    teuben committed
    
    
                                  partiview view
    
    
    
      Note that spatial units for this dataset are parsecs, though angular
      units are degrees for any data in partiview.
    
    teuben's avatar
    teuben committed
    
      Now play with the display, use the 't', 'r', 'f' and 'o' keys in the
      viewing window and use the left and mouse buttons down to (carefully)
      move around a bit, and make yourself comfortable with moving around.
      Using the 't' button you get some idea of the distance of the stars by
      moving back and forth a little (the parallax trick). In fact, if you
      't' around a little bit, you may see a green line flashing through the
    
      display. This is one of the  RGB (xyz) axes attached to the (0,0,0)
    
    teuben's avatar
    teuben committed
      [our sun] position.  You should see Procyon and Sirius exhibit pretty
      large parallaxes, but Orion is pretty steady since it is several
      hundred parsecs away.  If you move the right mouse button you will
    
    teuben's avatar
    teuben committed
      zoom in/out and should see our Sun flash by with the red-green-blue
      axes.
    
    
      The RGB axes represent the XYZ axes in a cartesian system. For the
    
    teuben's avatar
    teuben committed
      Hipparcos data the X (red) axis points to RA=0h, Y (green) axis to
    
      RA=6h, both in the equatorial plane, and the Z (blue) axis points to
      the equatorial north pole.
    
    
    teuben's avatar
    teuben committed
      Try and use the middle mouse button (or the 'p' key)  to click on
      Sirius or Procyon, and see if you can get it to view its properties.
      Now use the 'P' key to switch center to rotation to that star. Sirius
      is probably a good choice. Move around a bit, and try and get the sun
      and orion in the same view :-)
    
      [NOTE: these Hipparcos data do not have reliably distance above
      100-200 pc, so Orion's distances are probably uncertain to 30%]
    
    teuben's avatar
    teuben committed
    
    
    
    teuben's avatar
    teuben committed
      A little bit on the types of motion, and what the mouse buttons do
    
    
    
    
           ______________________________________________________________________
    
    teuben's avatar
    teuben committed
    
    
                         |     left            middle          right
                         |     Button-1        Button-2        Button-3         Shift Button-1
           ------------------------------------------------------------------------------------
           f (fly)       |     fly             'pick'          zoom
           o (orbit)     |     orbit           'pick'          zoom
           r (rotate)    |     rotate X/Y      'pick'          rotate Z (+bug?)    translate
           t (translate) |     translate       'pick'          zoom
           ______________________________________________________________________
    
    teuben's avatar
    teuben committed
    
    
    
    
      The point of origin for rotations can be changed with the 'P' button.
    
      First you can try and pick ('p' or Button-2) a point, and if found,
    
    teuben's avatar
    teuben committed
      hit 'P' to make this point the new rotation center default.
    
    
    
    
    
           ______________________________________________________________________
           red   = X axis
           green = Y axis
           blue  = Z axis
           ______________________________________________________________________
    
    
    
    teuben's avatar
    teuben committed
      33..22..  TToopp RRooww
    
      The top row, from left to right, shows the following buttons:
    
    
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
          MMoorree
    
            Offers some mode switches as toggles: inertia for continues spin
            or motion, and a H-R Diagram to invoke a separate H-R diagram
            window.
    
    teuben's avatar
    teuben committed
    
    
          [[gg11]]
    
            Pulldown g1, g2, ... (or whichever group) is the currently
            selected group. See  object command to make aliases which group
            is defined to what object. If multiple groups are defined, the
            next row below this contains a list of all the groups, and their
            aliases, so you can toggle them to be displayed.
    
    teuben's avatar
    teuben committed
    
    
          [[ff]]llyy
    
            Pulldown to select fly/orbit/rot/tran, which can also be
    
    teuben's avatar
    teuben committed
            activate by pressing the f/o/r/t keys inside the viewing window.
    
          ppooiinntt
    
            Toggle to turn the points on/off. See also the points command.
    
    teuben's avatar
    teuben committed
    
    
          ppoollyy
    
            Toggle to turn polygons on/off. See also the polygon command.
    
    teuben's avatar
    teuben committed
    
    
          llbbll
    
            Toggle to turn labels on/off. See also the label command.
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
          tteexx
    
            Toggle to turn textures on/off. See also the texture command.
    
    
    
    teuben's avatar
    teuben committed
          bbooxx
    
            Toggle to turn boxes on/off. See also the boxes command.
    
    
          ##..######
    
            The current displayed value of the logslum lum slider (see
            below)
    
    teuben's avatar
    teuben committed
    
    
          llooggsslluumm lluumm
    
            Slider controlling the logarithm of the ddaattaavvaarr variable
            selected as luminosity (with the lum command).
    
    teuben's avatar
    teuben committed
    
    
    
      33..33..  GGrroouupp rrooww ((ooppttiioonnaall))
    
    teuben's avatar
    teuben committed
    
    
      When more than one group has been activated (groups of particles or
      objects can have their own display properties, and be turned on and
    
      off at will), a new Group Row will appear as the 2nd row.
    
      Left-clicking (button 1) on a button toggles the display of that
      group; right-clicking (button 3) enables display of the group, and
      also selects it as the current group for GUI controls and text
      commands.
    
    
    teuben's avatar
    teuben committed
    
    
      33..44..  TTiimmee AAnniimmaattiioonn rroowwss ((OOppttiioonnaall))
    
    
      For time-dependent data, the third and fourth row from the top control
      the currently displayed data-time.  This time-control bar is only
      visible when the object has a nonzero time range.
    
          TT Shows the current time (or offset from the tripmeter).  The
            absolute time is the sum of the TT and ++ fields.  Both are
            editable.  See also the step control command.
    
         ttrriipp
            Press to mark a reference point in time.  The T field becomes
            zero, and the + field (below) is set to current time.  As time
            passes, T shows the offset from this reference time.
    
    
         bbaacckk
            Press to return to reference time (sets T to 0).
    
    
    
          ++ Current last time where tripmeter was set. You can reset to the
            first frame with the command step 0
    
    
    
          ddiiaall
            Drag to adjust the current time.  Sensitivity depends on the
            speed setting; dragging by one dial-width corresponds to 0.1
            wall-clock second of animation, i.e. 0.1 * _s_p_e_e_d in data time
            units.
    
    
          ||<<
    
          >>||
            Step time backwards or forwards by 0.1 * _s_p_e_e_d data time units.
            See also the < and > keyboard shortcuts.
    
            toggle movie move forwards in time Toggle animating backwards or
            forwards in time, by 1 * _s_p_e_e_d data time units per real-time
            second.  See also the {, ~, and } keyboard shortcuts.
    
          ##..########
            (Logarithmic) value denoting _s_p_e_e_d of animation.  See also the
            speed control command.
    
    
    
    
    
    
      33..55..  CCaammeerraa ((ppaatthh)) AAnniimmaattiioonn rrooww
    
    
      The fifth (or 4th or 3rd, depending if Group and/or Time rows are
    
      present) row from the top controls loading and playing sequences of
    
    teuben's avatar
    teuben committed
            Brings up a filebrowser to load a ..wwff path file. This is a file
            with on each line 7 numbers: xyz location, RxRyRz viewing
    
            direction, and FOV (field of view).  The rdata command loads
            such path files too.
    
    teuben's avatar
    teuben committed
    
    
          PPllaayy
    
            Play the viewpoint along the currently loaded path, as the play
            command does.  Right-click for a menu of play-speed options.
    
    teuben's avatar
    teuben committed
    
    
          <<<< << [[######]] >>>>>>
    
            Step through camera-path frames.  See also frame control
            command.
    
    teuben's avatar
    teuben committed
    
    
          sslliiddeerr
    
            Slides through camera path, and displays current frame.
    
      33..66..  LLooggffiillee wwiinnddooww
    
    teuben's avatar
    teuben committed
    
    
      The third window from the top contains a logfile of past commands and
      responses to them, and can be resized by dragging the bar between
      command window and viewing window.  The Logfile window also has a
      scroll bar on the left. You can direct the mouse to any previous
      command, and it will show up in the command window. Using the arrow
      keys this command can then be edited.
    
    
    
    
      33..77..  CCoommmmaanndd wwiinnddooww
    
      The Command window is a single line entry window, in which Control
    
      Commands can be given.  Their responses appear in the Logfile window
    
      and on the originating console. (unlike Data Commands, which show no
      feedback). You can still give Data Commands in this window by
      prefixing them with the add command.  The Up- and Down-arrow keys (not
      those on the keypad) scroll through previous commands, and can be
      edited using the arrow keys and a subset of the emacs control
      characters.
    
    
    
    
      33..88..  VViieewwiinngg wwiinnddooww
    
      The (OpenGL) Viewing window is where all the action occurs.  Typically
      this is where you give single keystroke commands and/or move the mouse
      for an interactive view of the data.  It can be resized two ways:
      either by resizing the master window, or by picking up the separator
      between Viewing window and Command window above.
    
    
      33..99..  EExxaammppllee 22:: aa ((ssttaarrllaabb)) aanniimmaattiioonn
    
      Setting up a small animation in for example Starlab can be done quite
    
      simply as follows: (see also the primbim16.mk makefile to create a
      standard one):
    
    slevy's avatar
    slevy committed
           ______________________________________________________________________
    
             % makeplummer -i -n 20 | makemass -l 0.5 -u 10.0 | scale -s | kira -d 2 -D x10 > run1
             % partiview run1.cf
             % cat run1.cf
    
             kira run1
             eval every
             eval lum mass 0 0.01
             eval psize 100
             eval cment 1  1 .7 .3
             eval color clump exact
    
    slevy's avatar
    slevy committed
           ______________________________________________________________________
    
    
    
    
    
      Alternatively, if you had started up partiview without any arguments,
      the following Control Command (see below) would have done the same
    
    
    
    
    
    
    
      ______________________________________________________________________
        read run1.cf
    
      ______________________________________________________________________
    
      33..1100..  EExxaammppllee 33:: sstteerreeoo vviieewwiinngg
    
    teuben's avatar
    teuben committed
    
    
      The 's' key within the viewing window toggles stereo viewing. By
      default each object is split in a blue and a red part, that should be
    
      viewed with a pair of red(left)/blue(right) glasses. Red/green glasses
      will probably work too.  See sstteerreeoo and ffooccaalllleenn in the View Commands
      section.
    
    
    
    
    teuben's avatar
    teuben committed
    
    
    
      44..  CCoommmmaannddss
    
    teuben's avatar
    teuben committed
    
    
      There are two types of commands in partiview: Control Commands and
      Data Commands.  Probably the most important difference between the two
      is that Control Commands return feedback to the user, whereas Data
    
      Commands are interpreted without comment.  The command window expects
      to receive Control Commands.  However, it is possible to enter a Data
      Command where a Control Command is expected, using the add command
    
      prefix. Likewise, a Control Command may be given where data is
      expected, using the eval prefix, e.g. in a data (or .cf) file.
    
    
    
    
    
    
      44..11..  CCoonnttrrooll CCoommmmaannddss
    
    
    
      (see partibrains.c::specks_parse_args)
    
    
      Control Commands are accepted in the Command window, and in some other
      contexts.  Generally, partiview gives a response to every Control
      Command, reporting the (possibly changed) status.
    
      Typically, if parameters are omitted, the current state is reported.
    
      Some commands apply to particles in the current group (see Object
      group commands); others affect global things, such as time or display
      settings.
    
      Data Commands can also be given, if prefixed with add.
    
    teuben's avatar
    teuben committed
    
    
      44..22..  II//OO ccoommmmaannddss
    
         rreeaadd _s_p_e_c_k_s_-_f_i_l_e
            Read a file containing Data Commands (typical suffix .cf or
            .speck).
    
    teuben's avatar
    teuben committed
    
    
         aassyynncc _u_n_i_x_-_c_o_m_m_a_n_d
    
    teuben's avatar
    teuben committed
            Run an arbitrary unix command (invoked via /bin/sh) as a
            subprocess of partiview.  Its standard output is interpreted as
            a stream of control commands.  Thus partiview can be driven
            externally, e.g. to record an animation (using the snapshot
            command), or to provide additional GUI controls.  Several async
    
            commands can run concurrently.  Examples are given later.
            Warning: you cannot interrupt a started command, short of
            hitting ESC to exit partiview.
    
         aadddd _d_a_t_a_-_c_o_m_m_a_n_d
            Enter a Data Command where a Control Command is expected, e.g.
            in the text input box.  For example,
    
    teuben's avatar
    teuben committed
    
    
    
         adds a new label "blah" at 10 15 -1, or
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
    
    
    
         loads a kira (starlab) output file.
    
    teuben's avatar
    teuben committed
    
    
    
         eevvaall _c_o_n_t_r_o_l_-_c_o_m_m_a_n_d
            Processes that control command just as if the eval prefix
            weren't there.  Provided for symmetry: wherever either a control
            command or a data command is expected, entering eval _c_o_n_t_r_o_l_-
            _c_o_m_m_a_n_d ensures that it's taken as a control command.
    
    teuben's avatar
    teuben committed
    
    
         aadddd ffiilleeppaatthh ((ddaattaa--ccoommmmaanndd))
            Determines the list of directories where all data files, color
            maps, etc.  are sought.  See the filepath entry under Data
            Commands.
    
    teuben's avatar
    teuben committed
    
    
      44..33..  OObbjjeecctt ggrroouupp ccoommmmaannddss
    
    teuben's avatar
    teuben committed
    
    
      Partiview can load multiple groups of particles, each with independent
      display settings, colormaps, etc.  When more than one group is loaded,
      the Group Row appears on the GUI, with one toggle-button for each
      group.  Toggling the button turns display of that group on or off.
    
    teuben's avatar
    teuben committed
      Right-clicking turns the group unconditionally on, and selects that
      group as the current one for other GUI controls.
    
    teuben's avatar
    teuben committed
    
    
      Many Control Commands apply to the _c_u_r_r_e_n_t_l_y _s_e_l_e_c_t_e_d group.
    
    teuben's avatar
    teuben committed
    
    
      Groups always have names of the form g_N for some small positive _N;
      each group may also have an alias.
    
         gg_N Select group g_N.  Create a new group if it doesn't already
            exist.
    
    slevy's avatar
    slevy committed
            Assign name _a_l_i_a_s to group g_N.  Note no blanks around the =
            sign.
    
         oobbjjeecctt _o_b_j_e_c_t_n_a_m_e
            Likewise, select object _o_b_j_e_c_t_n_a_m_e, which may be either an alias
            name or g_N.
    
    teuben's avatar
    teuben committed
    
    
    
         gg_N _c_o_n_t_r_o_l_-_c_o_m_m_a_n_d
    
    teuben's avatar
    teuben committed
    
    
         oobbjjeecctt _o_b_j_e_c_t_n_a_m_e _c_o_n_t_r_o_l_-_c_o_m_m_a_n_d
            Either form may be used as a _p_r_e_f_i_x to any control command to
            act on the specified group, e.g. object fred poly on
    
    teuben's avatar
    teuben committed
    
    
         ggaallll _c_o_n_t_r_o_l_-_c_o_m_m_a_n_d
            Invoke the given _c_o_n_t_r_o_l_-_c_o_m_m_a_n_d in all groups.  For example, to
            turn display of group 3 on and all others off, use:
    
         eennaabbllee
            Enable display of currently selected group (as it is by
            default).
    
         ddiissaabbllee
            Turn off display of current group.
    
      44..44..  VViieeww ccoommmmaannddss
    
    teuben's avatar
    teuben committed
    
    
      View commands affect the view; they aren't specific to data groups.
    
         ffoovv _f_l_o_a_t
            Angular field of view (in degrees) in Y-direction.
    
    teuben's avatar
    teuben committed
    
    
    
         cceenn[[tteerr]] _X _Y _Z [_R_A_D_I_U_S]
            Set point of interest.  This is the center of rotation in
            [o]rbit and [r]otate modes.  Also, in [o]rbit mode, translation
            speed is proportional to the viewer's distance from this point.
            The optional _R_A_D_I_U_S (also set by censize) determines the size of
            the marker crosshair, initially 1 unit.
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
    
    
         cceenn[[tteerr]] [[_X _Y _Z [_R_A_D_I_U_S]]
            int[erest] [_X _Y _Z [_R_A_D_I_U_S]]" Set point of interest.  This is the
            center of rotation in [o]rbit and [r]otate modes.  And, in
            [o]rbit mode, translation speed is proportional to the viewer's
            distance from this point.  The optional _R_A_D_I_U_S (also set by
            censize) determines the size of the marker crosshair, initially
            1 unit.
    
            ****  why is center/interest commented out in the first example.
            Originally this command was documented twice, the first one has
            /interest commented out.
    
         cceennssiizzee [[_R_A_D_I_U_S]
            Set size of point-of-interest marker.
    
    teuben's avatar
    teuben committed
    
    
         wwhheerree  _(_a_l_s_o_)  w
            Report the 3-D camera position and forward direction vector.
    
    teuben's avatar
    teuben committed
    
    
    
         cclliipp _N_E_A_R _F_A_R
            Clipping distances.  The computer graphics setup always requires
            drawing only objects in some finite range of distances in front
            of the viewpoint.  Both values must be strictly positive, and
            their ratio is limited; depending on the graphics system in use,
            distant objects may appear to blink if the _F_A_R/_N_E_A_R ratio
            exceeds 10000 or so.
    
    teuben's avatar
    teuben committed
    
    
            To set the far clip range without changing the near, use a non-
            numeric near clip value, e.g. clip - 1000.
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
    
    
         jjuummpp [[_X _Y _Z] [_R_x _R_y _R_z]
            Get or set the current position (XYZ) and/or viewing (RxRyRz)
    
            angle.  NOTE: there may be a bug with the command jump 0 0 0 on
            redhat7.1, it will crash the X server!
    
    teuben's avatar
    teuben committed
    
    
         rreeaaddppaatthh
            Read a Wavefront (.wf) file describing a path through space.
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
    
         rrddaattaa
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
    
    
         ppllaayy _s_p_e_e_d[f]
            Play the currently loaded (from readpath/rdata) camera animation
            path, at _s_p_e_e_d times normal speed, skipping frames as needed to
            keep up with wall-clock time.  (Normal speed is 30 frames per
            second.)  With "f" suffix, displays every _s_p_e_e_d-th frame,
            without regard to real time.
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
    
    
         ffrraammee [[_f_r_a_m_e_n_o]
            Get or set the current frame the _f_r_a_m_e_n_o-th.
    
    teuben's avatar
    teuben committed
    
    
         uuppddaattee
            Ensures the display is updated, as before taking a snapshot.
            Probably only useful in a stream of control commands from an
            async subprocess.
    
    teuben's avatar
    teuben committed
    
    
    slevy's avatar
    slevy committed
         wwiinnssiizzee [[_X_S_I_Z_E [_Y_S_I_Z_E]]
            Resize graphics window.  With no arguments, reports current
            size.  With one argument, resizes to given width, preserving
            aspect ratio.
    
    
    
         bbggccoolloorr _R _G _B
            Set window background color (three R G B numbers or one
            grayscale value).
    
    teuben's avatar
    teuben committed
    
    
    
    teuben's avatar
    teuben committed
    
    
         ffooccaalllleenn _d_i_s_t_a_n_c_e
            Focal length: distance from viewer to a typical object of
            interest.  This affects stereo display (see below) and
            navigation: the speed of motion in [t]ranslate and [f]ly modes
            is proportional to this distance.
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
    
    
         sstteerreeoo [[oonn||ooffff||rreeddccyyaann||ggllaasssseess]] [[_s_e_p_a_r_a_t_i_o_n]
    
    slevy's avatar
    slevy committed
            Stereo display.  Also toggled on/off by typing 's' key in
    
            graphics window.  Where hardware allows it, stereo glasses
            selects CrystalEyes-style stereo.  All systems should be capable
    
    slevy's avatar
    slevy committed
            of stereo redcyan, which requires wearing red/green or red/blue
    
            glasses.  Useful _s_e_p_a_r_a_t_i_o_n values might be 0.02 to 0.1, or
            -0.02 to -0.1 to swap eyes.  See also focallen command, which
            gives the distance to a typical object of interest: left- and
            right-eye images of an object at that distance will coincide on
            the screen.
    
    teuben's avatar
    teuben committed
    
    
    
    slevy's avatar
    slevy committed
         ssnnaappsseett [[-n _F_R_A_M_E_N_O] _F_I_L_E_S_T_E_M [_F_R_A_M_E_N_O]
    
            Set parameters for future snapshot commands.  _F_I_L_E_S_T_E_M may be a
            printf format string with frame number as argument, e.g. snapset
            pix/%04d.ppm, generating image names of pix/0000.ppm,
            pix/0001.ppm, etc.  If _F_I_L_E_S_T_E_M contains no % sign, then
            .%03d.ppm.gz is appended to it, so snapset ./pix/fred yields
            snapshot images named ./pix/fred.000.ppm.gz etc.
    
    teuben's avatar
    teuben committed
    
    
            Frame number _F_R_A_M_E_N_O (default 0) increments with each snapshot
            taken.
    
         ssnnaappsshhoott [[_F_R_A_M_E_N_O]
            Capture a snapshot image of the current view.  Use snapset to
            specify the output image name.  Default format is snap.%03d.tif.
    
    teuben's avatar
    teuben committed
    
    
            Partiview generally invokes the ImageMagick program convert(1),
            which must be installed and be on the user's $PATH.  Convert
            determines the type of image (jpeg, sgi, bmp, etc.) based on the
            file suffix.
    
            Convert is not needed if the snapset _F_I_L_E_S_T_E_M ends in .ppm.gz
            (invokes gzip rather than convert) or .ppm (no external program
            required).
    
    teuben's avatar
    teuben committed
    
    
    teuben's avatar
    teuben committed
    
    
      44..55..  PPaarrttiiccllee DDiissppllaayy CCoommmmaannddss
    
    teuben's avatar
    teuben committed
    
    
      These commands affect how particles (in the current group) are
      displayed.
    
    teuben's avatar
    teuben committed
    
    
    
         ppssiizzee _s_c_a_l_e_f_a_c_t_o_r
            All particle luminosities (as specified by lum command) are
            scaled by the product of two factors: a _l_u_m_v_a_r-specific factor
            given by slum, and a global factor given by psize.  So the
            intrinsic brightness of a particle is _v_a_l_u_e_-_s_p_e_c_i_f_i_e_d_-_b_y_-lum *
            _s_l_u_m_-_f_o_r_-_c_u_r_r_e_n_t_-_l_u_m_v_a_r * _p_s_i_z_e_-_s_c_a_l_e_f_a_c_t_o_r.
    
    teuben's avatar
    teuben committed
    
    
    
         sslluumm _s_l_u_m_f_a_c_t_o_r
            Data-field specific luminosity scale factor, for current choice
            of _l_u_m_v_a_r as given by the lum command.  A _s_l_u_m_f_a_c_t_o_r is recorded
            independently for each data field, so if data fields mass and
            energy were defined, one might say
    
    teuben's avatar
    teuben committed
    
    
    
              lum mass
              slum 1000
              lum energy
              slum 0.25
    
    teuben's avatar
    teuben committed