1 |
greg |
1.5 |
.\" RCSid "$Id: rholo.1,v 1.4 2007/09/04 17:36:41 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 |
greg |
1.5 |
A section is a parallelepiped given by an origin and three axis |
212 |
greg |
1.1 |
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 |
greg |
1.5 |
integer arguments following the three axes. |
222 |
greg |
1.1 |
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 |
greg |
1.5 |
section= 2 2 4 5 0 0 0 7 0 0 0 3 # section parallelepiped origin & vectors |
524 |
greg |
1.1 |
.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 |
greg |
1.4 |
rholo \-n 1 elect.hdk elect.hif TIME=12 & |
552 |
greg |
1.1 |
.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 |
greg |
1.4 |
rholo\-n 1 \-o x11 elect.hdk & |
558 |
greg |
1.1 |
.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 |
greg |
1.4 |
rholo \-n 1 \-o x11 \-i \-f elect.hdk + DISK=0 |
600 |
greg |
1.1 |
.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) |