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

# Content
1 .\" RCSid "$Id: rholo.1,v 1.2 2003/12/09 15:59:06 greg Exp $"
2 .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 .I rvu(1),
32 .I rholo
33 can compute views interactively, but unlike
34 .I rvu,
35 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 rhoptimize(1), rhpict(1), rpict(1), rtrace(1), rvu(1)