| 1 | .\" RCSid "$Id" | 
| 2 | .TH RANIMATE 1 6/24/98 RADIANCE | 
| 3 | .SH NAME | 
| 4 | ranimate - compute a RADIANCE animation | 
| 5 | .SH SYNOPSIS | 
| 6 | .B ranimate | 
| 7 | [ | 
| 8 | .B \-s | 
| 9 | ][ | 
| 10 | .B \-n | 
| 11 | ][ | 
| 12 | .B \-e | 
| 13 | ][ | 
| 14 | .B \-w | 
| 15 | ] | 
| 16 | .B ranfile | 
| 17 | .SH DESCRIPTION | 
| 18 | .I Ranimate | 
| 19 | is an executive program that reads the given | 
| 20 | .I ranfile | 
| 21 | and makes appropriate calls to | 
| 22 | .I rad(1), | 
| 23 | .I rpict(1), | 
| 24 | .I pinterp(1), | 
| 25 | and/or | 
| 26 | .I pfilt(1) | 
| 27 | to render an animation. | 
| 28 | Variables in | 
| 29 | .I ranfile | 
| 30 | indicate input files, process servers (execution hosts), output | 
| 31 | directories and file names, and various other controls and options. | 
| 32 | .PP | 
| 33 | Normally, commands are echoed to the standard output as they are | 
| 34 | executed. | 
| 35 | The | 
| 36 | .I \-s | 
| 37 | option tells | 
| 38 | .I ranimate | 
| 39 | to do its work silently. | 
| 40 | The | 
| 41 | .I \-n | 
| 42 | option tells | 
| 43 | .I ranimate | 
| 44 | not to take any action (ie. not to actually execute any commands). | 
| 45 | The | 
| 46 | .I \-e | 
| 47 | option tells | 
| 48 | .I ranimate | 
| 49 | to explicate all variables used for the animation, including | 
| 50 | default values not specified in the input file, and print them on | 
| 51 | the standard output. | 
| 52 | .PP | 
| 53 | The | 
| 54 | .I \-w | 
| 55 | option turns off warnings about multiply and misassigned variables. | 
| 56 | .PP | 
| 57 | Normally, | 
| 58 | .I ranimate | 
| 59 | will produce one animation frame for each view given in the specified | 
| 60 | view file. | 
| 61 | If an animation has ended or been killed in an incomplete state, however, | 
| 62 | .I ranimate | 
| 63 | will attempt to pick up where the earlier process left off. | 
| 64 | If the process is still running, or was started on another machine, | 
| 65 | .I ranimate | 
| 66 | will report this information and exit. | 
| 67 | .PP | 
| 68 | Animation variable assignments appear one per line in | 
| 69 | .I ranfile. | 
| 70 | The name of the variable is followed by an equals sign | 
| 71 | ('=') and its value(s). | 
| 72 | The end of line may be escaped with a backslash ('\\'), though it is | 
| 73 | not usually necessary since additional variable values may be given | 
| 74 | in multiple assignments. | 
| 75 | Variables that should have only one value are given in upper case. | 
| 76 | Variables that may have multiple values are given in lower case. | 
| 77 | Variables may be abbreviated by their first three letters, except | 
| 78 | for "host", which must have all four. | 
| 79 | Comments in | 
| 80 | .I ranfile | 
| 81 | start with a pound sign ('#') and proceed to the end of line. | 
| 82 | .PP | 
| 83 | The animation variables, their interpretations and default values | 
| 84 | are given below. | 
| 85 | .TP 10n | 
| 86 | .BR DIRECTORY | 
| 87 | The name of the animation directory. | 
| 88 | All temporary files generated during the animation will be placed in | 
| 89 | this directory, which will be created by | 
| 90 | .I ranimate | 
| 91 | if it does not exist. | 
| 92 | A file named "STATUS" will also be created there, and will contain current | 
| 93 | information about the animation process. | 
| 94 | This variable has no default value, and its setting is required. | 
| 95 | .TP | 
| 96 | .BR OCTREE | 
| 97 | The name of the octree file for a static scene walk-through | 
| 98 | animation. | 
| 99 | There is no default value for this variable, and any | 
| 100 | setting will be ignored if the | 
| 101 | .I ANIMATE | 
| 102 | variable is also set (see below). | 
| 103 | .TP | 
| 104 | .BR ANIMATE | 
| 105 | The scene generation command for a dynamic animation. | 
| 106 | This command, if given, will be executed with the frame number as the | 
| 107 | final argument, and on its standard output it must produce | 
| 108 | the complete octree for that frame. | 
| 109 | Care must be taken that this command does not create any temporary files | 
| 110 | that might collide with same-named files created by other | 
| 111 | animation commands running in parallel. | 
| 112 | Also, the command should produce no output to the standard error, unless | 
| 113 | there is a fatal condition. | 
| 114 | (I.e., switch all warnings off; | 
| 115 | see the BUGS section, below.)\0 | 
| 116 | There is no default animation command, and either this variable or the | 
| 117 | .I OCTREE | 
| 118 | variable must be set. | 
| 119 | .TP | 
| 120 | .BR VIEWFILE | 
| 121 | This variable names a file from which | 
| 122 | .I ranimate | 
| 123 | may extract the view for each frame in the animation. | 
| 124 | This file should contain one valid view per frame, starting with | 
| 125 | frame 1 on line 1, regardless of the setting of the | 
| 126 | .I START | 
| 127 | variable. | 
| 128 | An exception is made for a view file with only a single view, which | 
| 129 | is used for every frame of a dynamic scene animation. | 
| 130 | This variable is required, and there is no default value. | 
| 131 | .TP | 
| 132 | .BR START | 
| 133 | The initial frame number in this animation sequence. | 
| 134 | The minimum value is 1, and if a later starting frame is given, | 
| 135 | .I ranimate | 
| 136 | assumes that the earlier frames are included in some other | 
| 137 | .I ranfile, | 
| 138 | which has been previously executed. | 
| 139 | (See the | 
| 140 | .I NEXTANIM | 
| 141 | variable, below.)\0 | 
| 142 | The default value is 1. | 
| 143 | .TP | 
| 144 | .BR END | 
| 145 | The final frame number in this sequence. | 
| 146 | The minimum value is equal to the | 
| 147 | .I START | 
| 148 | frame, | 
| 149 | and the default value is computed from the number of views in the | 
| 150 | given | 
| 151 | .I VIEWFILE. | 
| 152 | .TP | 
| 153 | .BR EXPOSURE | 
| 154 | This variable tells | 
| 155 | .I ranimate | 
| 156 | how to adjust the exposure for each frame. | 
| 157 | As in | 
| 158 | .I pfilt, | 
| 159 | the exposure setting may be given either as a multiplier or as a | 
| 160 | number of f-stop adjustments (eg. +2 or -1.5). | 
| 161 | Alternatively, a file name may be given, which | 
| 162 | .I ranimate | 
| 163 | will interpret as having one exposure value per line per frame, | 
| 164 | beginning with frame 1 at line 1. | 
| 165 | (See also the | 
| 166 | .I VIEWFILE | 
| 167 | variable, above.)\0 | 
| 168 | There is no default value for this variable. | 
| 169 | If it is not given, an average level will be computed by | 
| 170 | .I pfilt | 
| 171 | for each frame. | 
| 172 | .TP | 
| 173 | .BR BASENAME | 
| 174 | The base output file name for the final frames. | 
| 175 | This string will be passed to the | 
| 176 | .I \-o | 
| 177 | and | 
| 178 | .I \-z | 
| 179 | options of rpict, along with appropriate suffixes, | 
| 180 | and thus should contain a | 
| 181 | .I printf(3) | 
| 182 | style integer field to distinguish one frame number from another. | 
| 183 | The final frames will use this name with a ".pic" suffix. | 
| 184 | The default value is the assigned | 
| 185 | .I DIRECTORY | 
| 186 | followed by "/frame%03d". | 
| 187 | .TP | 
| 188 | .BR host | 
| 189 | A host to use for command execution. | 
| 190 | This variable may be assigned a host name, followed by an optional | 
| 191 | number of parallel processes, followed by an optional | 
| 192 | directory (relative to the user's home directory on that machine), | 
| 193 | followed by an alternate user name. | 
| 194 | Multiple | 
| 195 | .I host | 
| 196 | assignments may appear. | 
| 197 | It is not advisable to specify more than one process on a single-CPU | 
| 198 | host, as this just tends to slow things down. | 
| 199 | The default value is "localhost", which starts a single process in | 
| 200 | the current directory of the local machine. | 
| 201 | .TP | 
| 202 | .BR RIF | 
| 203 | This variable specifies a | 
| 204 | .I rad | 
| 205 | input file to use as a source of rendering options and other | 
| 206 | variable settings. | 
| 207 | If given, | 
| 208 | .I ranimate | 
| 209 | will execute | 
| 210 | .I rad | 
| 211 | and create an options file to later pass to | 
| 212 | .I rpict | 
| 213 | or | 
| 214 | .I rtrace. | 
| 215 | Besides prepending the | 
| 216 | .I render | 
| 217 | variable, | 
| 218 | .I ranimate | 
| 219 | will also extract default settings for the common variables: | 
| 220 | .I OCTREE, | 
| 221 | .I RESOLUTION, | 
| 222 | .I EXPOSURE | 
| 223 | and | 
| 224 | .I pfilt. | 
| 225 | Following the file name, overriding variable settings may be given, | 
| 226 | which will be passed to | 
| 227 | .I rad | 
| 228 | on the command line. | 
| 229 | Settings with spaces in them should be enclosed in quotes. | 
| 230 | The execution of | 
| 231 | .I rad | 
| 232 | will also update the contents of the octree, if necessary. | 
| 233 | There is no default value for this variable. | 
| 234 | .TP | 
| 235 | .BR DISKSPACE | 
| 236 | Specify the amount of disk space (in megabytes) available on the | 
| 237 | destination file system for temporary file storage. | 
| 238 | .I Ranimate | 
| 239 | will coordinate its batch operations based on this amount of storage, | 
| 240 | assuming that there is either enough additional space for all the | 
| 241 | final frames, or that the given | 
| 242 | .I TRANSFER | 
| 243 | command will move the finished frames to some other location (see | 
| 244 | below). | 
| 245 | The default value is 100 megabytes. | 
| 246 | .TP | 
| 247 | .BR ARCHIVE | 
| 248 | After each batch rendering is finished and checked for completeness, | 
| 249 | .I ranimate | 
| 250 | will execute the given command, passing the names of all the | 
| 251 | original pictures and z-buffer files generated by | 
| 252 | .I rpict. | 
| 253 | (The command is executed in the destination directory, and file names | 
| 254 | will be simple.)\0 | 
| 255 | Normally, the archive command copies the original files to a tape device | 
| 256 | or somewhere that they can be retrieved in the event of failure in | 
| 257 | the frame interpolation stages. | 
| 258 | After the archive command has successfully completed, the original | 
| 259 | renderings are removed. | 
| 260 | There is no default value for this variable, meaning that the | 
| 261 | original unfiltered frames will simply be removed. | 
| 262 | Note that the last one or two rendered frames may not be copied, archived | 
| 263 | or removed in case there is a another sequence picking up where this | 
| 264 | one left off. | 
| 265 | .TP | 
| 266 | .BR TRANSFER | 
| 267 | The command to transfer the completed animation frames. | 
| 268 | The shell changes to the destination directory and appends | 
| 269 | the names of all the finished frames to this command | 
| 270 | before it is executed. | 
| 271 | Normally, the transfer command does something such as convert the | 
| 272 | frames to another format and/or copy them to tape or some other | 
| 273 | destination device before removing them. | 
| 274 | If this variable is not given, the final frames are left where they | 
| 275 | are. | 
| 276 | (See | 
| 277 | .I BASENAME, | 
| 278 | above.)\0 | 
| 279 | .TP | 
| 280 | .BR RSH | 
| 281 | The command to use instead of | 
| 282 | .I rsh(1) | 
| 283 | to execute commands remotely on another machine. | 
| 284 | The arguments and behavior of this program must be identical to the UNIX | 
| 285 | .I rsh | 
| 286 | command, except that the | 
| 287 | .I -l | 
| 288 | option will always be used to specify an alternate user name rather than the | 
| 289 | .I "user@host" | 
| 290 | convention. | 
| 291 | Th | 
| 292 | .I -l | 
| 293 | option may or may not appear, but the | 
| 294 | .I -n | 
| 295 | option will always be used, and the expected starting directory will | 
| 296 | be that of the remote user, just as with | 
| 297 | .I rsh. | 
| 298 | .TP | 
| 299 | .BR NEXTANIM | 
| 300 | This variable specifies the next | 
| 301 | .I ranfile | 
| 302 | to use after this sequence is completed. | 
| 303 | This offers a convenient means to continue an animation that | 
| 304 | requires different control options in different segments. | 
| 305 | It is important in this case to correctly set the | 
| 306 | .I START | 
| 307 | and | 
| 308 | .I END | 
| 309 | variables in each | 
| 310 | .I ranfile | 
| 311 | so that the segments do not overlap frames. | 
| 312 | .TP | 
| 313 | .BR OVERSAMPLE | 
| 314 | This variable sets the multiplier of the original image size | 
| 315 | relative to the final size given by the | 
| 316 | .I RESOLUTION | 
| 317 | variable. | 
| 318 | This determines the quality of anti-aliasing in the final frames. | 
| 319 | A value of 1 means no anti-aliasing, and a value of 3 produces very | 
| 320 | good anti-aliasing. | 
| 321 | The default value is 2. | 
| 322 | (A fractional value may be used for previews, causing low | 
| 323 | resolution frames with large, blocky pixels to be produced.)\0 | 
| 324 | .TP | 
| 325 | .BR INTERPOLATE | 
| 326 | This variable sets the number of frames to interpolate between each | 
| 327 | rendered frame in a static scene walk-through. | 
| 328 | Z-buffers for each rendered frame will be generated by | 
| 329 | .I rpict, | 
| 330 | and | 
| 331 | .I pinterp | 
| 332 | will be called to perform the actual "tweening." | 
| 333 | This results in a potentially large savings in rendering time, but | 
| 334 | should be used with caution since certain information may be lost or | 
| 335 | inaccurate, such as specular highlights and reflections, and objects | 
| 336 | may even break apart if too few renderings are used to interpolate | 
| 337 | too much motion. | 
| 338 | The default value for this variable is 0, meaning no interpolation. | 
| 339 | Interpolation is also switched off if the | 
| 340 | .I ANIMATE | 
| 341 | variable is specified. | 
| 342 | .TP | 
| 343 | .BR MBLUR | 
| 344 | This variable specifies the fraction of a frame time that the shutter | 
| 345 | is simulated as being open for motion blur. | 
| 346 | A number of samples may be given as a second argument, which | 
| 347 | controls the number of additional frames computed and averaged | 
| 348 | together by | 
| 349 | .I pinterp. | 
| 350 | If this number is less than 2, then bluring is performed by | 
| 351 | .I rpict | 
| 352 | only, resulting in greater noise than the combination of | 
| 353 | .I rpict | 
| 354 | and | 
| 355 | .I pinterp used otherwise. | 
| 356 | (The default value for number of samples is 5.)\0 | 
| 357 | The | 
| 358 | .I pmblur(1) | 
| 359 | command is used to generate the given number of additional views for | 
| 360 | .I pinterp | 
| 361 | to average together. | 
| 362 | The default value is 0, meaning no motion blurring. | 
| 363 | This option does not currently work with the | 
| 364 | .I ANIMATE | 
| 365 | variable, since pinterp only works for static environments. | 
| 366 | .TP | 
| 367 | .BR RTRACE | 
| 368 | This boolean variable tells | 
| 369 | .I ranimate | 
| 370 | whether or not to employ | 
| 371 | .I rtrace | 
| 372 | during frame interpolation using the | 
| 373 | .I \-fr | 
| 374 | option to | 
| 375 | .I pinterp. | 
| 376 | If set to True, then the same rendering options and static octree | 
| 377 | are passed to | 
| 378 | .I rtrace | 
| 379 | as are normally used by | 
| 380 | .I rpict. | 
| 381 | The default value is False. | 
| 382 | Note that this variable only applies to static environment | 
| 383 | walk-throughs (i.e., no | 
| 384 | .I ANIMATE | 
| 385 | command). | 
| 386 | .TP | 
| 387 | .BR RESOLUTION | 
| 388 | This variable specifies the desired final picture resolution. | 
| 389 | If only a single number is given, this value will be used for both | 
| 390 | the horizontal and vertical picture dimensions. | 
| 391 | If two numbers are given, the first is the horizontal resolution and | 
| 392 | the second is the vertical resolution. | 
| 393 | If three numbers are given, the third is taken as the pixel aspect | 
| 394 | ratio for the final picture (a real value). | 
| 395 | If the pixel aspect ratio is zero, the exact dimensions given will | 
| 396 | be those produced. | 
| 397 | Otherwise, they will be used as a frame in which the final image | 
| 398 | must fit. | 
| 399 | The default value for this variable is 640. | 
| 400 | .TP | 
| 401 | .BR render | 
| 402 | This variable may be used to specify additional options to | 
| 403 | .I rpict | 
| 404 | or | 
| 405 | .I rtrace. | 
| 406 | These options will appear after the options set automatically by | 
| 407 | .I rad, | 
| 408 | and thus will override the default values. | 
| 409 | .TP | 
| 410 | .BR pinterp | 
| 411 | This variable may be used to specify additional options to | 
| 412 | .I pinterp, | 
| 413 | which is used to interpolate frames for a static scene walk-through. | 
| 414 | (See the | 
| 415 | .I pinterp | 
| 416 | man page, and the | 
| 417 | .I INTERPOLATE | 
| 418 | variable.)\0 | 
| 419 | Do not use this variable to set the | 
| 420 | .I pinterp | 
| 421 | .I \-fr | 
| 422 | option, but use the | 
| 423 | .I RTRACE | 
| 424 | setting instead. | 
| 425 | .TP | 
| 426 | .BR pfilt | 
| 427 | This variable may be used to specify additional options to | 
| 428 | .I pfilt. | 
| 429 | If this variable is given in the | 
| 430 | .I ranfile, | 
| 431 | then | 
| 432 | .I pfilt | 
| 433 | will always be used. | 
| 434 | (Normally, | 
| 435 | .I pfilt | 
| 436 | is called only if | 
| 437 | .I pinterp | 
| 438 | is not needed or automatic exposure is required.)\0 | 
| 439 | See the | 
| 440 | .I pfilt | 
| 441 | manual page for details. | 
| 442 | .SH EXAMPLES | 
| 443 | A minimal input file for | 
| 444 | .I ranimate | 
| 445 | might look like this: | 
| 446 | .IP "" .3i | 
| 447 | .nf | 
| 448 | :::::::::: | 
| 449 | sample.ran | 
| 450 | :::::::::: | 
| 451 | # The rad input file for our static scene: | 
| 452 | RIF= tutor.rif | 
| 453 | # The spool directory: | 
| 454 | DIRECTORY= anim1 | 
| 455 | # The view file containing one view per frame: | 
| 456 | VIEWFILE= anim1.vf | 
| 457 | # The amount of temporary disk space available: | 
| 458 | DISKSPACE= 50   # megabytes | 
| 459 | .fi | 
| 460 | .PP | 
| 461 | Note that most of the variables are not set in this file. | 
| 462 | If we only want to see what default values | 
| 463 | .I ranimate | 
| 464 | would use without actually executing anything, we can invoke it | 
| 465 | thus: | 
| 466 | .IP "" .2i | 
| 467 | ranimate -n -e sample.ran | 
| 468 | .PP | 
| 469 | This will print the variables we have given as well as default | 
| 470 | values | 
| 471 | .I ranimate | 
| 472 | has assigned for us. | 
| 473 | Also, we will see the list of commands that | 
| 474 | .I ranimate | 
| 475 | would have executed had the | 
| 476 | .I \-n | 
| 477 | option not been present. | 
| 478 | .PP | 
| 479 | Usually, we execute | 
| 480 | .I ranimate | 
| 481 | in the background, redirecting the standard output and standard | 
| 482 | error to a file: | 
| 483 | .IP "" .2i | 
| 484 | ranimate sample.ran >& sample.err & | 
| 485 | .PP | 
| 486 | If we decide that the default values | 
| 487 | .I ranimate | 
| 488 | has chosen for our variables are not all appropriate, we can add | 
| 489 | some more assignments to the file: | 
| 490 | .IP "" .3i | 
| 491 | .nf | 
| 492 | host= rays 3 ~greg/obj/tutor ray        # execute as ray on multi-host "rays" | 
| 493 | host= thishost                          # execute one copy on this host also | 
| 494 | INTERP= 3                               # render every fourth frame | 
| 495 | RES= 1024                               # shoot for 1024x resolution | 
| 496 | MBLUR= .25                              # apply camera motion blur | 
| 497 | EXP= anim1.exp                          # adjust exposure according to file | 
| 498 | pfilt= -r .9                            # use Gaussian filtering | 
| 499 | ARCHIVE= tar cf /dev/nrtape             # save original renderings to tape | 
| 500 | .fi | 
| 501 | .PP | 
| 502 | Note the use of abbreviation for variable names. | 
| 503 | .SH FILES | 
| 504 | $(DIRECTORY)/STATUS     animation status file | 
| 505 | $(DIRECTORY)/*          other temporary files | 
| 506 | $(BASENAME).pic         final animation frames | 
| 507 | .SH AUTHOR | 
| 508 | Greg Ward | 
| 509 | .SH BUGS | 
| 510 | Due to the difficulty of controlling processes on multiple execution | 
| 511 | hosts, the | 
| 512 | .I \-n | 
| 513 | option of | 
| 514 | .I ranimate | 
| 515 | is not useful in the same way as | 
| 516 | .I rad | 
| 517 | for generating a script of executable commands to render the | 
| 518 | sequence. | 
| 519 | It may give an idea of the sequence of events, but certain temporary | 
| 520 | files and so forth will not be in the correct state if the user | 
| 521 | attempts to create a separate batch script. | 
| 522 | .PP | 
| 523 | If multiple processors are available on a given host and the | 
| 524 | .I RTRACE | 
| 525 | variable is set to True, then the | 
| 526 | .I \-PP | 
| 527 | option of | 
| 528 | .I rtrace | 
| 529 | should be employed, but it is not. | 
| 530 | There is no easy way around this problem, but it has only minor | 
| 531 | consequences in most cases. | 
| 532 | (The | 
| 533 | .I \-PP | 
| 534 | option is used for | 
| 535 | .I rpict, | 
| 536 | however.)\0 | 
| 537 | .I | 
| 538 | .PP | 
| 539 | The current implementation of the remote shell does not return the | 
| 540 | exit status of the remote process, which makes it difficult to | 
| 541 | determine for sure if there has been a serious error or not. | 
| 542 | Because of this, | 
| 543 | .I ranimate | 
| 544 | normally turns off warnings on all rendering processes, and takes | 
| 545 | any output to standard error from a remote command as a sign that a | 
| 546 | fatal error has occurred. | 
| 547 | (This also precludes the use of the | 
| 548 | .I \-t | 
| 549 | option to report rendering progress.)\0 | 
| 550 | If the error was caused by a process server going down, the server | 
| 551 | is removed from the active list and frame recovery takes place. | 
| 552 | Otherwise, | 
| 553 | .I ranimate | 
| 554 | quits at that point in the animation. | 
| 555 | .PP | 
| 556 | The current execution environment, in particular the RAYPATH variable, | 
| 557 | will not be passed during remote command execution, so it is necessary | 
| 558 | to set whatever variables are important in the remote startup script | 
| 559 | (e.g., ".cshrc" for the C-shell). | 
| 560 | This requirement may be circumvented by substituting the | 
| 561 | .I on(1) | 
| 562 | command for | 
| 563 | .I rsh(1) | 
| 564 | using the | 
| 565 | .I RSH | 
| 566 | control variable, or by writing a custom remote execution script. | 
| 567 | .PP | 
| 568 | If a different remote user name is used, | 
| 569 | .I ranimate | 
| 570 | first attempts to change to the original user's directory with a | 
| 571 | command of the form | 
| 572 | .I "cd \~uname". | 
| 573 | This works under | 
| 574 | .I csh(1), | 
| 575 | but may fail under other shells such as | 
| 576 | .I sh(1). | 
| 577 | .PP | 
| 578 | If multiple hosts with different floating point formats are used, | 
| 579 | .I pinterp | 
| 580 | will fail because the Z-buffer files will be inconsistent. | 
| 581 | (Recall that | 
| 582 | .I pinterp | 
| 583 | is called if INTERPOLATE > 0 and/or MBLUR is assigned.)\0 | 
| 584 | Since most modern machines use IEEE floating point, this is not | 
| 585 | usually a problem, but it is something to keep in mind. | 
| 586 | .SH "SEE ALSO" | 
| 587 | pfilt(1), pinterp(1), pmblur(1), rad(1), | 
| 588 | ranimove(1), rpict(1), rsh(1), rtrace(1) |