xenial (1) rholo.1.gz

Provided by: radiance_4R1+20120125-1.1_amd64 bug

NAME

       rholo - generate/view a RADIANCE holodeck

SYNOPSIS

       rholo [ -n npr ][ -o dev ][ -w ][ -i ][ -f | -r ] hdkfile [ varfile | + | - [ VAR=value ..  ] ]

DESCRIPTION

       Rholo is a program for generating and viewing holodeck files.  Similar to rvu(1), rholo can compute views
       interactively, but unlike rvu, it reuses any and all information that was previously computed in this  or
       earlier runs using the given holodeck file, hdkfile.

       The  -n option sets the number of rtrace(1) processes to start for the calculation.  It defaults to zero,
       which means that no new rays will be calculated.  In general, it is unwise to start more  processes  than
       there  are  processors on the system.  On a multiprocessing system with 4 or more processors, a value one
       less than the total should yield optimal interactive rates on a lightly loaded system.

       The -o option sets the output device to use for display.  Currently,  there  are  at  least  two  display
       drivers  available,  x11  and  glx.   If  no  output  device is specified, then rholo will start a global
       calculation of the holodeck, filling it in as time goes by.  The  quality  of  the  final  holodeck  will
       depend  on  how  long rholo runs before it is interrupted or runs out of file space or time, according to
       the variable settings described in the control variable section, below.   If  no  output  device  and  no
       processes are specified, rholo creates an empty holodeck using the given varfile, if present.

       The  -i  option provides for reading from the standard input.  Without a display driver, the input should
       consist only of views, which will be used to limit which parts of the holodeck are rendered  in  a  batch
       calculation.   With  a display driver, most of the commands understood by the driver can be issued either
       from the operating window or the standard input.  These commands are described together with their window
       equivalents in the display driver section following the control variable section.

       The  -f option permits the given holodeck to be clobbered.  Without this option, giving both the holodeck
       file and a variable file (or "-") will result in an error message if the holodeck  exists,  since  giving
       both  implies  that  a  new  holodeck is being created.  (When reusing an existing holodeck, the variable
       values are taken from the holodeck header, though some may be overriden by giving a "+" in place  of  the
       variable  file.)   Also,  attempts  to clear the holodeck using the interactive "clobber" command will be
       permitted only if the -f option is given on the initial command line.

       The -r option tells rholo to open the holodeck file read-only, which is the default if there are  no  ray
       calculation  processes.  If one or more rtrace processes are started with the -n option and the -r option
       is given or the specified holodeck is not writable by the user, then any additional rays computed  during
       the session will be discarded rather than saved to the holodeck file.

       One  or more holodeck section boundaries are defined along with other parameters in the holodeck file or,
       if the holodeck is being created, the rholo control variable file,  varfile.   These  section  boundaries
       define  where  you  may  move,  or  at  least,  where you will be able to see, since they determine where
       computed rays are stored.  Additional variable settings may be added or overridden on  the  command  line
       following  varfile.   If  no  varfile  is  needed, a holodeck may still be created by giving a "-" on the
       command line in place of the variable file.  If you wish to override some of the variable settings in  an
       existing  holodeck,  use  a  "+", followed by the new settings on the command line.  Upper case variables
       specified more than once will result in a warning message (unless the -w option is present), and the last
       value  given  will  be the one used, unless it would conflict with something in an existing holodeck that
       cannot be changed, such as the section boundaries.  Changing section boundaries requires creating  a  new
       holodeck  using rholo without a -n or -o option, then running rhcopy(1) to fill the new holodeck with the
       old holodeck's contents.

       The -w option turns off warnings about multiply and misassigned variables.

       Rendering variable assignments appear one per line in varfile.  The name of the variable is  followed  by
       an  equals sign ('=') and its value(s).  The end of line may be escaped with a backslash ('\'), though it
       is not usually necessary.  Variables that should have only one value are given in upper case.   Variables
       that may have multiple values are given in lower case.  Variables may be abbreviated by their first three
       letters.  Comments in varfile start with a pound sign ('#') and proceed to the end of line.

CONTROL VARIABLES

       The control variables, their interpretations and default values are given below.

       OCTREE    The name of the octree file.  The default name is the same  as  hdkfile  but  with  any  suffix
                 replaced  by  ".oct".  This variable may also be read from rad(1) if the "RIF" variable is set.
                 (See below.)

       RIF       This variable specifies a rad input file to use as a source  of  rendering  options  and  other
                 variable  settings.   If  given,  rholo will execute rad and get the rendering options to later
                 pass to rtrace.  Besides prepending the  render  variable,  rholo  will  also  extract  default
                 settings for the common "OCTREE" variable, and the "EYESEP" variable.  Following the file name,
                 overriding variable settings may be given, which will be passed to rad  on  the  command  line.
                 Settings  with  spaces  in  them  should be enclosed in quotes.  The execution of rad will also
                 update the contents of the octree, if necessary.  There is no default value for this variable.

       EYESEP    The interocular spacing for stereo viewing.  I.e., the world distance between the pupils of the
                 left and right eyes.  There is no default value for this variable.

       section   A  section  is  a  parallelepiped  given by an origin and three axis vectors (i.e., 12 floating
                 point values in world coordinates).  The axis vectors define the three edges  attached  to  the
                 origin vertex, and the other edges and vertices are determined by the parallel wall constraint.
                 A holodeck section is a region in which the user may freely move about to obtain a view of what
                 is  outside  that  region.   In object rendering mode, a section may instead contain a detailed
                 object to be viewed from the outside.  The grid dimensions for each axis may also be  given  by
                 three additional integer arguments following the three axes.  Otherwise, if the grid dimensions
                 are left out or any are unspecified or zero, the "GRID" variable will be used to determine them
                 from  the section axis lengths.  (See below.)  There is no default value for this variable, and
                 it is required.  If multiple values are  given,  they  will  be  used  for  multiple  rendering
                 sections,  which  may  or may not be connected, but should generally not overlap.  The starting
                 view for interactive display will be the center of the first  section  facing  the  positive  X
                 direction  unless "OBSTRUCTIONS" is set to True, when the view will be placed outside the first
                 section.  (See below for this variable's definition.)  The third axis of the first  section  is
                 also used as the default "view up" vector.

       geometry  This variable is used to associate geometry from an octree file with one or more sections.  The
                 specified octree will be used by certain drivers (e.g., the "ogl" driver) to display simplified
                 geometry using hardware lighting during motion.  If this variable is not set, such drivers will
                 use the main octree file, which contains all the scene geometry.  This can be slow if the scene
                 is complex, so use simplified geometry with portals (described below) or specify a non-existent
                 file to turn geometry rendering off.  If there is just one setting of this variable, it will be
                 used  for  all  sections.   If  there  are  multiple settings, they will correspond to multiple
                 sections.

       portals   This variable is used to associate portal geometry with one or more sections, as  required  for
                 simplified  geometry in some drivers (e.g., "ogl").  The portal geometry itself is given in one
                 or more RADIANCE scene files or quoted commands beginning with an exclamation mark  ('!'),  and
                 the  input  may or may not include material definitons.  (I.e., the surfaces may be modified by
                 "void" if there are no materials.)  A portal is an imaginary surface that intervenes between  a
                 view  and  some  detailed  geometry  not  included in the current section.  (See the "geometry"
                 variable definition, above.)  Portals are often placed in doorways, windows  and  in  front  of
                 mirrors.   Portal geometry may also be placed around local geometry that has been culled due to
                 its complexity.  This specification is necessary in order that the  detail  geometry  be  drawn
                 correctly,  and  that  mirrors  will  work  with  virtual  distances.   (See  the definition of
                 "VDISTANCE," below.)  The orientation of the portal surface geometry is ignored, so  they  have
                 effect  no matter which way they are facing.  If there is just one setting of this variable, it
                 will be used for all sections.  If  there  are  multiple  settings,  they  will  correspond  to
                 multiple sections.

       GRID      The  default  section  grid  size  in  world  distance  units.   If  any  section  axis grid is
                 unspecified, the length of the axis will be divided by this number and rounded up to  the  next
                 larger  integer.   The  grid size is a very important determiner of holodeck performance, since
                 the holodeck beam index is proportional to average axis grid dimension to the fourth power!  If
                 the  beam  index is too large, poor file and memory performance will result.  If the beam index
                 is too small, the holodeck resolution will suffer and  objects  will  tend  to  break  up.   In
                 general,  the  grid  size  should  divide  each section wall into 64 or fewer cells for optimal
                 performance.  The default value for this variable is the maximum section axis length divided by
                 8.

       OBSTRUCTIONS
                 This  boolean  variable tells rholo whether or not to compute intersections with objects inside
                 holodeck sections.  If it is set to "False", then only objects outside  the  holodeck  sections
                 will  be  visible.  This is appropriate when you know all sections to be devoid of geometry, or
                 when some secondary method is available for rendering geometry inside each section.  If  it  is
                 set  to  "True,"  all  inside geometry will be visible.  There is no default for this variable,
                 which means that rays will be started at random points within each holodeck  section,  allowing
                 interior geometry to be partially sampled.

       VDISTANCE This  boolean  variable  determines  whether the actual distance to objects is computed, or the
                 virtual distance.  If it is set to "True," the virtual distance will be used, which  will  make
                 reflections and refractions through smooth, flat objects clear, but will blur the boundaries of
                 those objects.  Note that some  drivers  cannot  render  virtual  samples  without  the  proper
                 placement of "portals" in the scene.  (See above for the definition of the "portals" variable.)
                 If it is set to "False," the reflections and refractions will be blurred, but object boundaries
                 will remain sharp.  The default value for this variable is "False."

       CACHE     The  memory cache size to use for ray samples during interactive rendering, in Megabytes.  This
                 tuning parameter  determines  the  tradeoff  between  memory  use  and  disk  access  time  for
                 interactive  display.  This value will not affect memory use or performance for global holodeck
                 rendering if there is no  display  process.   The  default  cache  is  effectively  set  to  16
                 Megabytes.   If  this  variable  is  set to zero, no limit will be placed on memory use and the
                 process will grow to accommodate all the beams that have been accessed.

       DISKSPACE Specifies the maximum holodeck file size, in Megabytes.  Once the holodeck  file  reaches  this
                 size,  rtrace  will  exit.   If there is no display process, rholo will also exit.  The default
                 value for this variable is 0, which is interpreted as no size limit.

       TIME      Sets the maximum time to run rtrace, in decimal hours.  After this length of time, rtrace  will
                 exit.   If  there  is no display process, rholo will also exit.  If there is a display process,
                 and rtrace is restarted with the "restart" command, then the time clock will  be  restarted  as
                 well.  The default value for this variable is 0, which is interpreted as no time limit.

       REPORT    This variable may be used to specify a interval for progress reports in minutes.  If this value
                 is zero, then progress reports will not be given in intervals, but a final report of  the  file
                 size  and  fragmentation  will  be issued when the program terminates, along with the number of
                 rays and packets computed.  If a filename is given after the interval, it will be used  as  the
                 error  file  for reports and error messages instead of the standard error.  There is no default
                 value for this variable.

       render    This variable may be used to specify additional options to rtrace.  These options  will  appear
                 after the options set automatically by rad, and thus will override the default values.

DISPLAY DRIVER

       Rholo  may  be  started  in  interactive  mode  using  the -o option to specify an output display driver.
       Currently, three drivers are supported on most machines, glx, ogl  and  x11.   (In  addition,  there  are
       variations on the first two drivers for stereo displays, local objects and human tone mapping.  These are
       accessed with some combination of the 's', 'o' and 'h' suffixes, always in that order.  E.g., the  OpenGL
       stereo  driver  with  human  tone  mapping  would  be "oglsh".)  Each driver accepts simple one-character
       commands and mouse view control in its operating window.  If the -i option is also given, then the driver
       will  also  listen  for  commands entered on the standard input.  (It is unwise to use the -i option when
       rholo is run in the background, because it will occassionally stop the process when input is available on
       the controlling terminal.)  The commands and their single-key window equivalents are given below.

       VIEW=    (mouse)
                 Modify  the  current  view  with  the  specified  parameters.  (See the -v* view options in the
                 rpict(1) manual page for parameter details.)  There is no  one-character  equivalent  for  this
                 command  in  the display window.  Instead, the mouse is used to control the current view in the
                 following ways:

                 CONTROL   MOUSE     ACTION
                 (none)    left Move forward towards cursor position
                 (none)    middle    Rotate in place (usually safe)
                 (none)    right     Move backward away from cursor position
                 shift     left Orbit left around cursor position
                 shift     middle    Orbit skyward
                 cntl middle    Orbit earthward
                 shift     right     Orbit right around cursor position
                 cntl+shift     any       Frame focus by dragging rectangle

                 For all movements but rotating in place, the cursor must be placed over  some  bit  of  visible
                 geometry,  otherwise  the driver has no reference point from which to work.  It is best to just
                 experiment with these controls until you learn to fly safely in your model.   And  if  you  run
                 into trouble, the "last" command is very useful.  (See below.)

       last    'l'
                 Return  to  the  previous view.  Some drivers will save up multiple views in a history, but you
                 are guaranteed at least one.

       where    'v'
                 Print the current view parameters to the standard output.  This is useful for finding out where
                 you are, or for saving specific views in a keyframe file for animations or returning to later.

       frame     'f'
                 Change  the  calculation  focus.   If  the  "frame"  command  is given with no arguments on the
                 standard input, it is equivalent to the interactive 'F' command,  which  releases  the  current
                 calculation  focus.   If  the "frame" command is followed by a relative horizontal and vertical
                 position (specified as floating point values between 0 and 1), then the new focus is about this
                 position  on the screen (where 0 0 is at the lower left of the display).  This is equivalent to
                 the interactive 'f' command, which sets the focus about the current window cursor position.  If
                 four  relative  coordinates  are  given,  they  are  assumed to mean the minimum horizontal and
                 vertical positon, and the maximum horizontal and vertical position, in  that  order.   This  is
                 equivalent to dragging the mouse over a rectangular area with the 'cntl+shift' keys held down.

       pause    'p'
                 Pause the ray calculation temporarily.

       resume    <cr>
                 Resume the ray calculation.

       redraw    ^L
                 Redraw  the current view from values calculated and stored in the holodeck.  When executed from
                 the display window via '^L', the effect may be slightly different, since all stored information
                 will be flushed.

       kill    'K'
                 Terminate  the  ray  calculation  process.   This  is  usually unnecessary, but is provided for
                 special purpose applications.

       restart    'R'
                 Restart the ray calculation process.  If the "RIF" variable has been set, rad will be run first
                 to assure that the octree is up to date.

       clobber    'C'
                 Clobber  the  holodeck  contents,  deleting  all  that  has  been calculated before.  To get an
                 interactive dissolve of changes to the scene description, use the sequence  "kill,"  "clobber,"
                 "restart."  This command will be honored by rholo only if it was started with the -f option.

       quit    'q'
                 Quit  rholo.   The  ray  tracing  calculation  is  terminated and all values are flushed to the
                 holodeck file.  This is the normal way to exit the program.

       In addition to these standard commands, all drivers offer the following supplimentary controls.

       'h'       Fix the head height.  All mouse-controlled view motions will  be  adjusted  so  that  the  head
                 height does not change (where vertical is determined by the current view up vector).

       'H'       Release the head height, allowing it to change again during mouse-controlled movements.

       ^R        Redraw  the  current  view, recomputing the tone mapping in the process.  This is useful if the
                 current view is too light or too dark.  (On an 8-bit display, it may be necessary to redraw the
                 screen  a  couple  of  times  to  get  the best image.)  The "^L" command is a stronger type of
                 redraw, since it will use only rays in the current view to determine the tone  mapping,  rather
                 than a history of rays drawn from the rholo server.

EXAMPLES

       The following shows a minimal holodeck control variable file:

          RIF= sample.rif                       # rad input file
          section= 2 2 4  5 0 0  0 7 0  0 0 3   # section parallelepiped origin & vectors

       Technically,  the  "RIF"  setting is not necessary, but the results are much better when rholo is used in
       association with rad to control the rendering parameters.

       Here is a slightly more sophisticated example:

          RIF=electric.rif
          section= 7 4 3.5  15 0 0  0 10 0  0 0 5
          GRID= .75
          CACHE= 20 # cache size in megabytes
          TIME= 120 # maximum time in hours
          DISK= 200 # maximum file size in megabytes
          REPORT= 60 elect.her
          OBST= False
          VDIST= False

       We can invoke rholo on the above file to compute a hologram overnight in batch mode:

         rholo -n 1 elect.hdk elect.hif TIME=12 &

       This will report progress every hour to "elect.her".

       The next morning, we can look at the holodeck interactively:

         rholo-n 1 -o x11 elect.hdk &

       If the previous command were still running, the above command would fail because the permissions  on  the
       holodeck  would  not  grant  access.  To terminate rholo without losing any computed information, use the
       kill(1) command to send an interrupt or terminate signal to the rholo process listed by  ps(1).   If  the
       system goes down or something dire happens to rholo, it may be necessary to restore read/write permission
       on the holodeck using chmod(1).  Do not do this, however, unless you are absolutely sure that rholo is no
       longer  running  on  the holodeck.  (See the ps man page on how to check for running processes.  The file
       modification date as reported by ls(1) is another clue.)

       To view the holodeck without invoking a new ray calculation, leave off the -n  option.   To  compute  the
       holodeck  with  multiple  processes  on  a multiprocessing system, use a higher number for the -n option.
       (Don't use more processes than you have processors, though, because you'll only slow things down.)

       To allow interactive control of rholo from another process, the following invocation  will  override  the
       file size limit and permit the holodeck to be clobbered by a command entered on the standard input:

         rholo -n 1 -o x11 -i -f elect.hdk + DISK=0

       To create an empty holodeck from settings on the command line:

         rholo new.hdk - RIF=sample.rif "section=2 2 4  8 0 0  0 10 0  0 0 3"

NOTES

       Each  time  rays  are  added  to  a beam, that beam's position in the holodeck file is released and a new
       position is found.  After substantial computation on  a  holodeck,  especially  over  several  runs,  the
       holodeck  file  may  become  fragmented,  leaving  holes  that  take up space without contributing useful
       information.  The percentage fragmentation  is  reported  when  the  REPORT  variable  is  set  and  some
       calculation has taken place.  When this percentage gets high on a large holodeck (above 15% or so), it is
       a good idea to run the rhoptimize(1) program once batch rendering is  complete  to  close  the  gaps  and
       collect  beams  into  groups  for  quicker rendering access.  Rholo will print periodic warnings when the
       fragmentation exceeds 20%.

AUTHOR

       Greg Ward Larson

ACKNOWLEDGMENT

       This work was supported by Silicon Graphics, Inc.

BUGS

       Global participating media are not handled correctly, though local participating media will usually work.

SEE ALSO

       chmod(1), ls(1), ps(1), rad(1), ranimate(1), rhcopy(1), rhinfo(1),  rhoptimize(1),  rhpict(1),  rpict(1),
       rtrace(1), rvu(1)