| 1 |
greg |
1.2 |
.\" RCSid "$Id$" |
| 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 |
|
|
.I rview(1), |
| 32 |
|
|
.I rholo |
| 33 |
|
|
can compute views interactively, but unlike |
| 34 |
|
|
.I rview, |
| 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), rview(1) |