ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/man/man1/rholo.1
Revision: 1.3
Committed: Thu Jan 1 19:31:45 2004 UTC (20 years, 4 months ago) by greg
Branch: MAIN
CVS Tags: rad3R7P2, rad3R7P1, rad3R6, rad3R6P1, rad3R8
Changes since 1.2: +4 -4 lines
Log Message:
Renamed rview, lam, calc, and neat to rvu, rlam, icalc, and neaten

File Contents

# User Rev Content
1 greg 1.3 .\" RCSid "$Id: rholo.1,v 1.2 2003/12/09 15:59:06 greg Exp $"
2 greg 1.1 .TH RHOLO 1 1/14/99 RADIANCE
3     .SH NAME
4     rholo - generate/view a RADIANCE holodeck
5     .SH SYNOPSIS
6     .B rholo
7     [
8     .B "\-n npr"
9     ][
10     .B "\-o dev"
11     ][
12     .B \-w
13     ][
14     .B \-i
15     ][
16     .B \-f
17     |
18     .B \-r
19     ]
20     .B hdkfile
21     [
22     .B "varfile | + | -"
23     [
24     .B "VAR\=value .."
25     ]
26     ]
27     .SH DESCRIPTION
28     .I Rholo
29     is a program for generating and viewing holodeck files.
30     Similar to
31 greg 1.3 .I rvu(1),
32 greg 1.1 .I rholo
33     can compute views interactively, but unlike
34 greg 1.3 .I rvu,
35 greg 1.1 it reuses any and all information that was previously computed in
36     this or earlier runs using the given holodeck file,
37     .I hdkfile.
38     .PP
39     The
40     .I \-n
41     option sets the number of
42     .I rtrace(1)
43     processes to start for the calculation.
44     It defaults to zero, which means that no new rays will be calculated.
45     In general, it is unwise to start more processes than there are
46     processors on the system.
47     On a multiprocessing system with 4 or more processors, a value one
48     less than the total should yield optimal interactive rates on a
49     lightly loaded system.
50     .PP
51     The \-o
52     option sets the output device to use for display.
53     Currently, there are at least two display drivers available,
54     .I x11
55     and
56     .I glx.
57     If no output device is specified, then
58     .I rholo
59     will start a global calculation of the holodeck, filling it
60     in as time goes by.
61     The quality of the final holodeck will depend on how long
62     .I rholo
63     runs before it is interrupted or runs out of file space or time,
64     according to the variable settings described in the control variable
65     section, below.
66     If no output device and no processes are specified,
67     .I rholo
68     creates an empty holodeck using the given
69     .I varfile,
70     if present.
71     .PP
72     The
73     .I \-i
74     option provides for reading from the standard input.
75     Without a display driver, the input should consist only of views,
76     which will be used to limit which parts of the holodeck are rendered
77     in a batch calculation.
78     With a display driver, most of the commands understood by the driver
79     can be issued either from the operating window or the standard input.
80     These commands are described together with their window equivalents in
81     the display driver section following the control variable section.
82     .PP
83     The
84     .I \-f
85     option permits the given holodeck to be clobbered.
86     Without this option, giving both the holodeck file and a variable file (or "-")
87     will result in an error message if the holodeck exists, since giving
88     both implies that a new holodeck is being created.
89     (When reusing an existing holodeck, the variable values are taken
90     from the holodeck header, though some may be overriden by giving a "+"
91     in place of the variable file.)\0
92     Also, attempts to clear the holodeck using the interactive
93     "clobber" command will be permitted only if the
94     .I \-f
95     option is given on the initial command line.
96     .PP
97     The
98     .I \-r
99     option tells
100     .I rholo
101     to open the holodeck file read-only, which is the default if there
102     are no ray calculation processes.
103     If one or more
104     .I rtrace
105     processes are started with the
106     .I \-n
107     option and the
108     .I \-r
109     option is given or the specified holodeck is not writable by the user,
110     then any additional rays computed during the session will be discarded
111     rather than saved to the holodeck file.
112     .PP
113     One or more holodeck section boundaries are defined along with other
114     parameters in the holodeck file or,
115     if the holodeck is being created, the
116     .I rholo
117     control variable file,
118     .I varfile.
119     These section boundaries define where you may move, or at least,
120     where you will be able to see, since they determine where computed
121     rays are stored.
122     Additional variable settings may be added or overridden on the
123     command line following
124     .I varfile.
125     If no
126     .I varfile
127     is needed, a holodeck may still be created by giving a "-" on the
128     command line in place of the variable file.
129     If you wish to override some of the variable settings in an existing
130     holodeck, use a "+", followed by the new settings on the command line.
131     Upper case variables specified more than once will result in
132     a warning message (unless the
133     .I \-w
134     option is present),
135     and the last value given will be the one used, unless it would conflict
136     with something in an existing holodeck that cannot be changed, such as
137     the section boundaries.
138     Changing section boundaries requires creating a new holodeck using
139     .I rholo
140     without a
141     .I \-n
142     or
143     .I \-o
144     option, then running
145     .I rhcopy(1)
146     to fill the new holodeck with the old holodeck's contents.
147     .PP
148     The
149     .I \-w
150     option turns off warnings about multiply and misassigned variables.
151     .PP
152     Rendering variable assignments appear one per line in
153     .I varfile.
154     The name of the variable is followed by an equals sign
155     ('=') and its value(s).
156     The end of line may be escaped with a backslash ('\\'), though it is
157     not usually necessary.
158     Variables that should have only one value are given in upper case.
159     Variables that may have multiple values are given in lower case.
160     Variables may be abbreviated by their first three letters.
161     Comments in
162     .I varfile
163     start with a pound sign ('#') and proceed to the end of line.
164     .SH "CONTROL VARIABLES"
165     The control variables, their interpretations and default values
166     are given below.
167     .TP 10n
168     .BR OCTREE
169     The name of the octree file.
170     The default name is the same as
171     .I hdkfile
172     but with any suffix replaced by ".oct".
173     This variable may also be read from
174     .I rad(1)
175     if the "RIF" variable is set.
176     (See below.)\0
177     .TP
178     .BR RIF
179     This variable specifies a
180     .I rad
181     input file to use as a source of rendering options and other
182     variable settings.
183     If given,
184     .I rholo
185     will execute
186     .I rad
187     and get the rendering options to later pass to
188     .I rtrace.
189     Besides prepending the
190     .I render
191     variable,
192     .I rholo
193     will also extract default settings for the common "OCTREE" variable,
194     and the "EYESEP" variable.
195     Following the file name, overriding variable settings may be given,
196     which will be passed to
197     .I rad
198     on the command line.
199     Settings with spaces in them should be enclosed in quotes.
200     The execution of
201     .I rad
202     will also update the contents of the octree, if necessary.
203     There is no default value for this variable.
204     .TP
205     .BR EYESEP
206     The interocular spacing for stereo viewing.
207     I.e., the world distance between the pupils of the left and right eyes.
208     There is no default value for this variable.
209     .TP
210     .BR section
211     A section is a 6-sided parallel prism given by an origin and three axis
212     vectors (i.e., 12 floating point values in world coordinates).
213     The axis vectors define the three edges attached to the origin vertex,
214     and the other edges and vertices are determined by the parallel wall
215     constraint.
216     A holodeck section is a region in which the user may freely move about
217     to obtain a view of what is outside that region.
218     In object rendering mode, a section may instead contain a detailed
219     object to be viewed from the outside.
220     The grid dimensions for each axis may also be given by three additional
221     integer arguments following the prism axes.
222     Otherwise, if the grid dimensions are left out or any are unspecified
223     or zero, the "GRID" variable will be used to determine them from the
224     section axis lengths.
225     (See below.)\0
226     There is no default value for this variable, and it is required.
227     If multiple values are given, they will be used for multiple rendering
228     sections, which may or may not be connected, but should generally not
229     overlap.
230     The starting view for interactive display will be the center
231     of the first section facing the positive X direction unless
232     "OBSTRUCTIONS" is set to True, when the view will be placed
233     outside the first section.
234     (See below for this variable's definition.)\0
235     The third axis of the first section is also
236     used as the default "view up" vector.
237     .TP
238     .BR geometry
239     This variable is used to associate geometry from an
240     octree file with one or more sections.
241     The specified octree will be used by certain drivers (e.g., the "ogl" driver)
242     to display simplified geometry using hardware lighting during motion.
243     If this variable is not set, such drivers will use the main octree file,
244     which contains all the scene geometry.
245     This can be slow if the scene is complex, so use simplified geometry
246     with portals (described below) or specify a non-existent file to turn
247     geometry rendering off.
248     If there is just one setting of this variable, it will be used for all
249     sections.
250     If there are multiple settings, they will correspond to multiple sections.
251     .TP
252     .BR portals
253     This variable is used to associate portal geometry with one or more
254     sections, as required for simplified geometry in some drivers (e.g., "ogl").
255     The portal geometry itself is given in one or more RADIANCE scene files or
256     quoted commands beginning with an exclamation mark ('!'),
257     and the input may or may not include material definitons.
258     (I.e., the surfaces may be modified by "void" if there are no materials.)
259     A portal is an imaginary surface that intervenes between a view and
260     some detailed geometry not included in the current section.
261     (See the "geometry" variable definition, above.)
262     Portals are often placed in doorways, windows and in front of mirrors.
263     Portal geometry may also be placed around local geometry that has been
264     culled due to its complexity.
265     This specification is necessary in order that the detail geometry be
266     drawn correctly, and that mirrors will work with virtual distances.
267     (See the definition of "VDISTANCE," below.)
268     The orientation of the portal surface geometry is ignored, so they
269     have effect no matter which way they are facing.
270     If there is just one setting of this variable, it will be used for all
271     sections.
272     If there are multiple settings, they will correspond to multiple sections.
273     .TP
274     .BR GRID
275     The default section grid size in world distance units.
276     If any section axis grid is unspecified, the length of the axis
277     will be divided by this number and rounded up to the next larger integer.
278     The grid size is a very important determiner of holodeck performance,
279     since the holodeck beam index is proportional to average axis grid dimension
280     to the fourth power!
281     If the beam index is too large, poor file and memory performance will
282     result.
283     If the beam index is too small, the holodeck resolution will suffer and
284     objects will tend to break up.
285     In general, the grid size should divide each section wall
286     into 64 or fewer cells for optimal performance.
287     The default value for this variable is the maximum section axis length
288     divided by 8.
289     .TP
290     .BR OBSTRUCTIONS
291     This boolean variable tells
292     .I rholo
293     whether or not to compute intersections with objects inside holodeck
294     sections.
295     If it is set to "False", then only objects outside the holodeck sections
296     will be visible.
297     This is appropriate when you know all sections to be devoid of geometry,
298     or when some secondary method is available for rendering geometry inside
299     each section.
300     If it is set to "True," all inside geometry will be visible.
301     There is no default for this variable, which means that rays will be
302     started at random points within each holodeck section, allowing interior
303     geometry to be partially sampled.
304     .TP
305     .BR VDISTANCE
306     This boolean variable determines whether the actual distance to objects
307     is computed, or the virtual distance.
308     If it is set to "True," the virtual distance will be used, which will
309     make reflections and refractions through smooth, flat objects clear,
310     but will blur the boundaries of those objects.
311     Note that some drivers cannot render virtual samples without the proper
312     placement of "portals" in the scene.
313     (See above for the definition of the "portals" variable.)
314     If it is set to "False," the reflections and refractions will be blurred,
315     but object boundaries will remain sharp.
316     The default value for this variable is "False."
317     .TP
318     .BR CACHE
319     The memory cache size to use for ray samples
320     during interactive rendering, in Megabytes.
321     This tuning parameter determines the tradeoff between memory use and
322     disk access time for interactive display.
323     This value will not affect memory use or performance for global
324     holodeck rendering if there is no display process.
325     The default cache is effectively set to 16 Megabytes.
326     If this variable is set to zero, no limit will be placed on memory
327     use and the process will grow to accommodate all the beams that
328     have been accessed.
329     .TP
330     .BR DISKSPACE
331     Specifies the maximum holodeck file size, in Megabytes.
332     Once the holodeck file reaches this size,
333     .I rtrace
334     will exit.
335     If there is no display process,
336     .I rholo
337     will also exit.
338     The default value for this variable is 0, which is interpreted as no
339     size limit.
340     .TP
341     .BR TIME
342     Sets the maximum time to run rtrace, in decimal hours.
343     After this length of time,
344     .I rtrace
345     will exit.
346     If there is no display process,
347     .I rholo
348     will also exit.
349     If there is a display process, and
350     .I rtrace
351     is restarted with the "restart" command, then the time clock will
352     be restarted as well.
353     The default value for this variable is 0, which is interpreted as no
354     time limit.
355     .TP
356     .BR REPORT
357     This variable may be used to specify a interval for
358     progress reports in minutes.
359     If this value is zero, then progress reports will not be given
360     in intervals, but a final report of the file size and fragmentation
361     will be issued when the program terminates, along with the number
362     of rays and packets computed.
363     If a filename is given after the interval, it will be used as the
364     error file for reports and error messages instead of the standard error.
365     There is no default value for this variable.
366     .TP
367     .BR render
368     This variable may be used to specify additional options to
369     .I rtrace.
370     These options will appear after the options set automatically by
371     .I rad,
372     and thus will override the default values.
373     .SH "DISPLAY DRIVER"
374     .I Rholo
375     may be started in interactive mode using the
376     .I \-o
377     option to specify an output display driver.
378     Currently, three drivers are supported on most machines,
379     .I glx,
380     .I ogl
381     and
382     .I x11.
383     (In addition, there are variations on the first two drivers for
384     stereo displays, local objects and human tone mapping.
385     These are accessed with some combination of the 's', 'o' and 'h' suffixes,
386     always in that order.
387     E.g., the OpenGL stereo driver with human tone mapping would be "oglsh".)
388     Each driver accepts simple one-character commands and mouse
389     view control in its operating window.
390     If the
391     .I \-i
392     option is also given, then the driver will also listen for commands entered
393     on the standard input.
394     (It is unwise to use the
395     .I \-i
396     option when rholo is run in the background, because it will occassionally
397     stop the process when input is available on the controlling terminal.)\0
398     The commands and their single-key window equivalents are given below.
399     .TP 10n
400     .BR "VIEW= (mouse)"
401     Modify the current view with the specified parameters.
402     (See the
403     .I \-v*
404     view options in the
405     .I rpict(1)
406     manual page for parameter details.)\0
407     There is no one-character equivalent for this command in the display window.
408     Instead, the mouse is used to control the current view in the following ways:
409     .sp
410     .nf
411     CONTROL MOUSE ACTION
412     (none) left Move forward towards cursor position
413     (none) middle Rotate in place (usually safe)
414     (none) right Move backward away from cursor position
415     shift left Orbit left around cursor position
416     shift middle Orbit skyward
417     cntl middle Orbit earthward
418     shift right Orbit right around cursor position
419     cntl+shift any Frame focus by dragging rectangle
420     .fi
421     .sp
422     For all movements but rotating in place, the cursor must be placed over some
423     bit of visible geometry, otherwise the driver has no reference point from
424     which to work.
425     It is best to just experiment with these controls until you learn to fly
426     safely in your model.
427     And if you run into trouble, the "last" command is very useful.
428     (See below.)\0
429     .TP
430     .BR "last 'l'"
431     Return to the previous view.
432     Some drivers will save up multiple views in a history, but you are
433     guaranteed at least one.
434     .TP
435     .BR "where 'v'"
436     Print the current view parameters to the standard output.
437     This is useful for finding out where you are, or for saving specific
438     views in a keyframe file for animations or returning to later.
439     .TP
440     .BR "frame 'f'"
441     Change the calculation focus.
442     If the "frame" command is given with no arguments on the standard input,
443     it is equivalent to the interactive 'F' command, which releases
444     the current calculation focus.
445     If the "frame" command is followed by a relative horizontal and vertical
446     position (specified as floating point values between 0 and 1), then the
447     new focus is about this position on the screen (where 0 0 is at the lower
448     left of the display).
449     This is equivalent to the interactive 'f' command, which sets the focus
450     about the current window cursor position.
451     If four relative coordinates are given, they are assumed to mean the
452     minimum horizontal and vertical positon, and the maximum horizontal and
453     vertical position, in that order.
454     This is equivalent to dragging the mouse over a rectangular area
455     with the 'cntl+shift' keys held down.
456     .TP
457     .BR "pause 'p'"
458     Pause the ray calculation temporarily.
459     .TP
460     .BR "resume <cr>"
461     Resume the ray calculation.
462     .TP
463     .BR "redraw ^L"
464     Redraw the current view from values calculated and stored in the holodeck.
465     When executed from the display window via '^L', the effect may be slightly
466     different, since all stored information will be flushed.
467     .TP
468     .BR "kill 'K'"
469     Terminate the ray calculation process.
470     This is usually unnecessary, but is provided for special purpose applications.
471     .TP
472     .BR "restart 'R'"
473     Restart the ray calculation process.
474     If the "RIF" variable has been set,
475     .I rad
476     will be run first to assure that the octree is up to date.
477     .TP
478     .BR "clobber 'C'"
479     Clobber the holodeck contents, deleting all that has been calculated before.
480     To get an interactive dissolve of changes to the scene description,
481     use the sequence "kill," "clobber," "restart."
482     This command will be honored by
483     .I rholo
484     only if it was started with the
485     .I \-f
486     option.
487     .TP
488     .BR "quit 'q'"
489     Quit
490     .I rholo.
491     The ray tracing calculation is terminated and all values are flushed to
492     the holodeck file.
493     This is the normal way to exit the program.
494     .PP
495     In addition to these standard commands, all
496     drivers offer the following supplimentary controls.
497     .TP 10n
498     .BR "'h'"
499     Fix the head height.
500     All mouse-controlled view motions will be adjusted so that the head height
501     does not change (where vertical is determined by the current
502     view up vector).
503     .TP
504     .BR "'H'"
505     Release the head height, allowing it to change again during mouse-controlled
506     movements.
507     .TP
508     .BR "^R"
509     Redraw the current view, recomputing the tone mapping in the process.
510     This is useful if the current view is too light or too dark.
511     (On an 8-bit display, it may be necessary to redraw the
512     screen a couple of times to get the best image.)\0
513     The "^L" command is a stronger type of redraw, since it will use
514     only rays in the current view to determine the tone mapping, rather
515     than a history of rays drawn from the
516     .I rholo
517     server.
518     .SH EXAMPLES
519     The following shows a minimal holodeck control variable file:
520     .IP "" .3i
521     .nf
522     RIF= sample.rif # rad input file
523     section= 2 2 4 5 0 0 0 7 0 0 0 3 # section prism boundaries
524     .fi
525     .PP
526     Technically, the "RIF" setting is not necessary, but the results are
527     much better when
528     .I rholo
529     is used in association with
530     .I rad
531     to control the rendering parameters.
532     .PP
533     Here is a slightly more sophisticated example:
534     .IP "" .3i
535     .nf
536     RIF=electric.rif
537     section= 7 4 3.5 15 0 0 0 10 0 0 0 5
538     GRID= .75
539     CACHE= 20 # cache size in megabytes
540     TIME= 120 # maximum time in hours
541     DISK= 200 # maximum file size in megabytes
542     REPORT= 60 elect.her
543     OBST= False
544     VDIST= False
545     .fi
546     .PP
547     We can invoke
548     .I rholo
549     on the above file to compute a hologram overnight in batch mode:
550     .IP "" .2i
551     rholo -n 1 elect.hdk elect.hif TIME=12 &
552     .PP
553     This will report progress every hour to "elect.her".
554     .PP
555     The next morning, we can look at the holodeck interactively:
556     .IP "" .2i
557     rholo -n 1 -o x11 elect.hdk &
558     .PP
559     If the previous command were still running, the above command would
560     fail because the permissions on the holodeck would not grant access.
561     To terminate
562     .I rholo
563     without losing any computed information, use the
564     .I kill(1)
565     command to send an interrupt or terminate signal to the
566     .I rholo
567     process listed by
568     .I ps(1).
569     If the system goes down or something dire happens to
570     .I rholo,
571     it may be necessary to restore read/write permission on the holodeck using
572     .I chmod(1).
573     Do not do this, however, unless you are absolutely sure that
574     .I rholo
575     is no longer running on the holodeck.
576     (See the
577     .I ps
578     man page on how to check for running processes.
579     The file modification date as reported by
580     .I ls(1)
581     is another clue.)\0
582     .PP
583     To view the holodeck without invoking a new ray calculation, leave off the
584     .I \-n
585     option.
586     To compute the holodeck with multiple processes on a multiprocessing system,
587     use a higher number for the
588     .I \-n
589     option.
590     (Don't use more processes than you have processors, though, because
591     you'll only slow things down.)\0
592     .PP
593     To allow interactive control of
594     .I rholo
595     from another process, the following invocation will override
596     the file size limit and permit the holodeck
597     to be clobbered by a command entered on the standard input:
598     .IP "" .2i
599     rholo -n 1 -o x11 -i -f elect.hdk + DISK=0
600     .PP
601     To create an empty holodeck from settings on the command line:
602     .IP "" .2i
603     rholo new.hdk - RIF=sample.rif "section=2 2 4 8 0 0 0 10 0 0 0 3"
604     .SH NOTES
605     Each time rays are added to a beam, that beam's position in the holodeck
606     file is released and a new position is found.
607     After substantial computation on a holodeck, especially over several runs,
608     the holodeck file may become fragmented, leaving holes that take up space
609     without contributing useful information.
610     The percentage fragmentation is reported when the REPORT variable is set
611     and some calculation has taken place.
612     When this percentage gets high on a large holodeck (above 15% or so),
613     it is a good idea to run the
614     .I rhoptimize(1)
615     program once batch rendering is complete to close the gaps and collect
616     beams into groups for quicker rendering access.
617     Rholo will print periodic warnings when the fragmentation exceeds 20%.
618     .SH AUTHOR
619     Greg Ward Larson
620     .SH ACKNOWLEDGMENT
621     This work was supported by Silicon Graphics, Inc.
622     .SH BUGS
623     Global participating media are not handled correctly, though local
624     participating media will usually work.
625     .SH "SEE ALSO"
626     chmod(1), ls(1), ps(1), rad(1), ranimate(1), rhcopy(1), rhinfo(1),
627 greg 1.3 rhoptimize(1), rhpict(1), rpict(1), rtrace(1), rvu(1)