NAME¶
ranimate - compute a RADIANCE animation
SYNOPSIS¶
ranimate [
-s ][
-n ][
-e ][
-w ]
ranfile
DESCRIPTION¶
Ranimate is an executive program that reads the given
ranfile and
makes appropriate calls to
rad(1), rpict(1), pinterp(1),
and/or
pfilt(1) to render an animation. Variables in
ranfile
indicate input files, process servers (execution hosts), output directories
and file names, and various other controls and options.
Normally, commands are echoed to the standard output as they are executed. The
-s option tells
ranimate to do its work silently. The
-n
option tells
ranimate not to take any action (ie. not to actually
execute any commands). The
-e option tells
ranimate to explicate
all variables used for the animation, including default values not specified
in the input file, and print them on the standard output.
The
-w option turns off warnings about multiply and misassigned
variables.
Normally,
ranimate will produce one animation frame for each view given
in the specified view file. If an animation has ended or been killed in an
incomplete state, however,
ranimate will attempt to pick up where the
earlier process left off. If the process is still running, or was started on
another machine,
ranimate will report this information and exit.
Animation variable assignments appear one per line in
ranfile. The name
of the variable is followed by an equals sign ('=') and its value(s). The end
of line may be escaped with a backslash ('\'), though it is not usually
necessary since additional variable values may be given in multiple
assignments. Variables that should have only one value are given in upper
case. Variables that may have multiple values are given in lower case.
Variables may be abbreviated by their first three letters, except for
"host", which must have all four. Comments in
ranfile start
with a pound sign ('#') and proceed to the end of line.
The animation variables, their interpretations and default values are given
below.
- DIRECTORY
- The name of the animation directory. All temporary files
generated during the animation will be placed in this directory, which
will be created by ranimate if it does not exist. A file named
"STATUS" will also be created there, and will contain current
information about the animation process. This variable has no default
value, and its setting is required.
- OCTREE
- The name of the octree file for a static scene walk-through
animation. There is no default value for this variable, and any setting
will be ignored if the ANIMATE variable is also set (see
below).
- ANIMATE
- The scene generation command for a dynamic animation. This
command, if given, will be executed with the frame number as the final
argument, and on its standard output it must produce the complete octree
for that frame. Care must be taken that this command does not create any
temporary files that might collide with same-named files created by other
animation commands running in parallel. Also, the command should produce
no output to the standard error, unless there is a fatal condition. (I.e.,
switch all warnings off; see the BUGS section, below.) There is no
default animation command, and either this variable or the OCTREE
variable must be set.
- VIEWFILE
- This variable names a file from which ranimate may
extract the view for each frame in the animation. This file should contain
one valid view per frame, starting with frame 1 on line 1, regardless of
the setting of the START variable. An exception is made for a view
file with only a single view, which is used for every frame of a dynamic
scene animation. This variable is required, and there is no default
value.
- START
- The initial frame number in this animation sequence. The
minimum value is 1, and if a later starting frame is given,
ranimate assumes that the earlier frames are included in some other
ranfile, which has been previously executed. (See the
NEXTANIM variable, below.) The default value is 1.
- END
- The final frame number in this sequence. The minimum value
is equal to the START frame, and the default value is computed from
the number of views in the given VIEWFILE.
- EXPOSURE
- This variable tells ranimate how to adjust the
exposure for each frame. As in pfilt, the exposure setting may be
given either as a multiplier or as a number of f-stop adjustments (eg. +2
or -1.5). Alternatively, a file name may be given, which ranimate
will interpret as having one exposure value per line per frame, beginning
with frame 1 at line 1. (See also the VIEWFILE variable,
above.) There is no default value for this variable. If it is not
given, an average level will be computed by pfilt for each
frame.
- BASENAME
- The base output file name for the final frames. This string
will be passed to the -o and -z options of rpict, along with
appropriate suffixes, and thus should contain a printf(3) style
integer field to distinguish one frame number from another. The final
frames will use this name with a ".hdr" suffix. The default
value is the assigned DIRECTORY followed by
"/frame%03d".
- host
- A host to use for command execution. This variable may be
assigned a host name, followed by an optional number of parallel
processes, followed by an optional directory (relative to the user's home
directory on that machine), followed by an alternate user name. Multiple
host assignments may appear. It is not advisable to specify more
than one process on a single-CPU host, as this just tends to slow things
down. The default value is "localhost", which starts a single
process in the current directory of the local machine.
- RIF
- This variable specifies a rad input file to use as a
source of rendering options and other variable settings. If given,
ranimate will execute rad and create an options file to
later pass to rpict or rtrace. Besides prepending the
render variable, ranimate will also extract default settings
for the common variables: OCTREE, RESOLUTION,
EXPOSURE and pfilt. Following the file name, overriding
variable settings may be given, which will be passed to rad on the
command line. Settings with spaces in them should be enclosed in quotes.
The execution of rad will also update the contents of the octree,
if necessary. There is no default value for this variable.
- DISKSPACE
- Specify the amount of disk space (in megabytes) available
on the destination file system for temporary file storage. Ranimate
will coordinate its batch operations based on this amount of storage,
assuming that there is either enough additional space for all the final
frames, or that the given TRANSFER command will move the finished
frames to some other location (see below). The default value is 100
megabytes.
- ARCHIVE
- After each batch rendering is finished and checked for
completeness, ranimate will execute the given command, passing the
names of all the original pictures and z-buffer files generated by
rpict. (The command is executed in the destination directory, and
file names will be simple.) Normally, the archive command copies
the original files to a tape device or somewhere that they can be
retrieved in the event of failure in the frame interpolation stages. After
the archive command has successfully completed, the original renderings
are removed. There is no default value for this variable, meaning that the
original unfiltered frames will simply be removed. Note that the last one
or two rendered frames may not be copied, archived or removed in case
there is a another sequence picking up where this one left off.
- TRANSFER
- The command to transfer the completed animation frames. The
shell changes to the destination directory and appends the names of all
the finished frames to this command before it is executed. Normally, the
transfer command does something such as convert the frames to another
format and/or copy them to tape or some other destination device before
removing them. The fieldcomb(1) script may be used to conveniently
combine fields into frames for field-based animations. If this variable is
not given, the final frames are left where they are. (See BASENAME,
above.)
- RSH
- The command to use instead of ssh(1) to execute
commands remotely on another machine. The arguments and behavior of this
program must be identical to the UNIX ssh command, except that the
-l option will always be used to specify an alternate user name
rather than the user@host convention. The -l option may or
may not appear, but the -n option will always be used, and the
expected starting directory will be that of the remote user, just as with
ssh.
- NEXTANIM
- This variable specifies the next ranfile to use
after this sequence is completed. This offers a convenient means to
continue an animation that requires different control options in different
segments. It is important in this case to correctly set the START
and END variables in each ranfile so that the segments do
not overlap frames.
- OVERSAMPLE
- This variable sets the multiplier of the original image
size relative to the final size given by the RESOLUTION variable.
This determines the quality of anti-aliasing in the final frames. A value
of 1 means no anti-aliasing, and a value of 3 produces very good
anti-aliasing. The default value is 2. (A fractional value may be used for
previews, causing low resolution frames with large, blocky pixels to be
produced.)
- INTERPOLATE
- This variable sets the number of frames to interpolate
between each rendered frame in a static scene walk-through. Z-buffers for
each rendered frame will be generated by rpict, and pinterp
will be called to perform the actual "tweening." This results in
a potentially large savings in rendering time, but should be used with
caution since certain information may be lost or inaccurate, such as
specular highlights and reflections, and objects may even break apart if
too few renderings are used to interpolate too much motion. The default
value for this variable is 0, meaning no interpolation. Interpolation is
also switched off if the ANIMATE variable is specified.
- MBLUR
- This variable specifies the fraction of a frame time that
the shutter is simulated as being open for motion blur. A number of
samples may be given as a second argument, which controls the number of
additional frames computed and averaged together by pinterp. If
this number is less than 2, then bluring is performed by rpict
only, resulting in greater noise than the combination of rpict and
pinterp used otherwise. (The default value for number of samples is
5.) The default fraction is 0, meaning no motion blurring. This
option does not currently work with the ANIMATE variable, since
pinterp only works for static environments.
- DBLUR
- This variable specifies the aperture diameter for
depth-of-field blurring, in world units. A number of samples may be given
as a second argument, which controls the number of additional frames
computed and averaged together by pinterp. If this number is less
than 2, then blurring is performed by rpict only, resulting in
greater noise than the combination of rpict and pinterp used
otherwise. (The default value for number of samples is 5.) To
simulate a particular camera's aperture, divide the focal length of the
lens by the f-number, then convert to the corresponding world coordinate
units. For example, if you wish to simulate a 50mm lens at f/2.0 in a
scene modeled in meters, then you divide 50mm by 2.0 to get 25mm, which
corresponds to an effective aperture of 0.025 meters. The default aperture
is 0, meaning no depth-of-field blurring. This option does not currently
work with the ANIMATE variable, since pinterp only works for static
environments.
- RTRACE
- This boolean variable tells ranimate whether or not
to employ rtrace during frame interpolation using the -fr
option to pinterp. If set to True, then the same rendering options
and static octree are passed to rtrace as are normally used by
rpict. The default value is False. Note that this variable only
applies to static environment walk-throughs (i.e., no ANIMATE
command).
- RESOLUTION
- This variable specifies the desired final picture
resolution. If only a single number is given, this value will be used for
both the horizontal and vertical picture dimensions. If two numbers are
given, the first is the horizontal resolution and the second is the
vertical resolution. If three numbers are given, the third is taken as the
pixel aspect ratio for the final picture (a real value). If the pixel
aspect ratio is zero, the exact dimensions given will be those produced.
Otherwise, they will be used as a frame in which the final image must fit.
The default value for this variable is 640.
- render
- This variable may be used to specify additional options to
rpict or rtrace. These options will appear after the options
set automatically by rad, and thus will override the default
values.
- pinterp
- This variable may be used to specify additional options to
pinterp, which is used to interpolate frames for a static scene
walk-through. (See the pinterp man page, and the INTERPOLATE
variable.) Do not use this variable to set the pinterp
-fr option, but use the RTRACE setting instead.
- pfilt
- This variable may be used to specify additional options to
pfilt. If this variable is given in the ranfile, then
pfilt will always be used. (Normally, pfilt is called only
if pinterp is not needed or automatic exposure is required.)
See the pfilt manual page for details.
EXAMPLES¶
A minimal input file for
ranimate might look like this:
-
-
::::::::::
sample.ran
::::::::::
# The rad input file for our static scene:
RIF= tutor.rif
# The spool directory:
DIRECTORY= anim1
# The view file containing one view per frame:
VIEWFILE= anim1.vf
# The amount of temporary disk space available:
DISKSPACE= 50 # megabytes
Note that most of the variables are not set in this file. If we only want to see
what default values
ranimate would use without actually executing
anything, we can invoke it thus:
-
- ranimate -n -e sample.ran
This will print the variables we have given as well as default values
ranimate has assigned for us. Also, we will see the list of commands
that
ranimate would have executed had the
-n option not been
present.
Usually, we execute
ranimate in the background, redirecting the standard
output and standard error to a file:
-
- ranimate sample.ran >& sample.err &
If we decide that the default values
ranimate has chosen for our
variables are not all appropriate, we can add some more assignments to the
file:
-
-
host= rays 3 ~greg/obj/tutor ray # execute as ray on multi-host "rays"
host= thishost # execute one copy on this host also
INTERP= 3 # render every fourth frame
RES= 1024 # shoot for 1024x resolution
MBLUR= .25 # apply camera motion blur
EXP= anim1.exp # adjust exposure according to file
pfilt= -r .9 # use Gaussian filtering
ARCHIVE= tar cf /dev/nrtape # save original renderings to tape
Note the use of abbreviation for variable names.
FILES¶
$(DIRECTORY)/STATUS animation status file $(DIRECTORY)/* other temporary files
$(BASENAME).hdr final animation frames
AUTHOR¶
Greg Ward
BUGS¶
Due to the difficulty of controlling processes on multiple execution hosts, the
-n option of
ranimate is not useful in the same way as
rad for generating a script of executable commands to render the
sequence. It may give an idea of the sequence of events, but certain temporary
files and so forth will not be in the correct state if the user attempts to
create a separate batch script.
If multiple processors are available on a given host and the
RTRACE
variable is set to True, then the
-PP option of
rtrace should be
employed, but it is not. There is no easy way around this problem, but it has
only minor consequences in most cases. (The
-PP option is used for
rpict, however.)
The current implementation of the remote shell does not return the exit status
of the remote process, which makes it difficult to determine for sure if there
has been a serious error or not. Because of this,
ranimate normally
turns off warnings on all rendering processes, and takes any output to
standard error from a remote command as a sign that a fatal error has
occurred. (This also precludes the use of the
-t option to report
rendering progress.) If the error was caused by a process server going
down, the server is removed from the active list and frame recovery takes
place. Otherwise,
ranimate quits at that point in the animation.
The current execution environment, in particular the RAYPATH variable, will not
be passed during remote command execution, so it is necessary to set whatever
variables are important in the remote startup script (e.g., ".cshrc"
for the C-shell). This requirement may be circumvented by substituting the
on(1) command for
ssh(1) using the
RSH control variable,
or by writing a custom remote execution script.
If a different remote user name is used,
ranimate first attempts to
change to the original user's directory with a command of the form
cd
uname . This works under
csh(1), but may fail under other
shells such as
sh(1).
If multiple hosts with different floating point formats are used,
pinterp
will fail because the Z-buffer files will be inconsistent. (Recall that
pinterp is called if INTERPOLATE > 0 and/or MBLUR is
assigned.) Since most modern machines use IEEE floating point, this is
not usually a problem, but it is something to keep in mind.
SEE ALSO¶
fieldcomb(1),
pfilt(1),
pinterp(1),
pmblur(1),
rad(1),
ran2tiff(1),
ranimove(1),
rpict(1),
ssh(1),
rtrace(1)