NAME¶
ranimove - render a RADIANCE animation with motion
SYNOPSIS¶
ranimove [
-s ][
-e ][
-w ][
-f beg,end ][
-n nprocs ][
-t sec ][
-d jnd ]
rnmfile
DESCRIPTION¶
Ranimove is a program for progressive animation rendering. Variables in
the given
rnmfile indicate input files, output file names, and various
other controls and options.
Normally, progress reports are written to the standard output, but the
-s
option tells
ranimove to do its work silently. The
-e option
tells
ranimove 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 and non-fatal rendering problems.
Normally,
ranimove will produce one animation frame for each view given
in the specified view file. If the
-f option is specified, the
animation will resume at the given frame, and continue to the end of the
sequence, or to the second frame if one is given (separated from the first by
a comma but no space).
The
-n option specifies the number of processes to use for rendering. The
default value is 1, which is appropriate for most machines that have a single
central processing unit (CPU). If you are running on a machine with multiple
CPUs, a larger value up to the number of processors may be used to improve
rendering speed, depending on the system load.
Because
ranimove renders each frame progressively, it needs some criteria
for when to proceed to the next frame in the animation. The
-t option
is used to specify the maximum number of seconds to spend on any one frame.
The default value for this option is 60 seconds. Additionally, the
-d
option may be used to specify a termination threshold in
just-noticeable-differences. If the error can be reduced below this number of
JNDs over the whole frame before the time allocation is spent,
ranimove
will then proceed to the next frame. A value of 2.0 JNDs is the point at which
75% of the people will notice a difference, and this is the level usually
selected for such a termination test. There is no default value for this
option, which means that rendering will proceed until the time allocation is
spent for each frame, regardless. If
-t is set to 0,
ranimove
will spend as much time as it takes to reduce the visible error below the
value set by the
-d option.
Ranimove renders each frame in three stages. In the first stage, a
low-quality image is rendered using one ray sample per 16 pixels. In the
second stage, pixels from the previous frame are extrapolated to their
corresponding positions in this one, based on the given camera and object
movements. A set of heuristics is applied to prevent errors in specular
highlights and shadows, avoiding some of the errors typical with the
pinterp(1) program. In the third stage, additional high-quality samples
are used to refine important regions of the image that are judged to have
visible errors. This proceeds until the stopping criteria specified by the
-t and
-d options are met, when the frame is filtered and
written to the designated picture file.
The chief differences between this program and
ranimate(1) are that
motion blur is computed for objects as well as camera movement, and its
progressive rendering allows better control over the tradeoff between frame
accuracy and rendering time. Fewer controls are provided for managing the
picture files produced by
ranimove, and no facilities for distributed
rendering are available other than executing
ranimove on different
machines using the
-f option to manually partition the work.
Animation variable assignments appear one per line in
rnmfile. 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. Comments in
rnmfile start with a pound sign ('#') and proceed to the end of line.
The animation variables, their interpretations and default values are given
below.
- OCTREE
- The name of the base octree file, which should be generated
by the oconv(1) command using the -f option. There is no
default value for this variable. If no RIF variable is given, the
octree must be specified.
- RIF
- This variable specifies a rad(1) 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
control rendering parameters. Ranimate will also extract default
settings for the common variables: OCTREE, RESOLUTION, and
EXPOSURE. 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.
- move
- This variable specifies an object (or objects) with a
specific motion and/or rendering priority. Four value arguments are
expected for each appearance of this variable. The first is the name of a
parent move object, or "void" if none. If given, the object's
transformation will be prepended to that of its parent. The second
argument is the name of this object, which will be used to name surfaces
it contains, and as a modifier for any child objects that reference it.
The third argument is the transformation string or file for this object.
If this argument is enclosed in quotes and begins with a hyphen ('-'),
then it will be interpreted as a static transform specification a la
xform(1). Otherwise, the argument will be taken as the name of a
file that contains one such transform specification per line,
corresponding to frames in the animation. A period ('.') may be given if
no object transformation is desired. The fourth argument is the name of a
RADIANCE scene file (or files) to be given to xform for
transformation. If this argument begins with an exclamation point ('!'),
then it will be interpreted as a command rather than a file. A final word
corresponding to the frame number will be appended to the command, and its
output will be passed to the input of xform for each frame. An
optinal fifth argument specifies the rendering priority for this object.
Values greater than 1 will result in preferential rendering of this object
over other portions of the image when it appears in a frame. Values less
than 1 will cause the rendering to neglect this object in favor of other
parts of the image. A value of 3.0 can be interpreted as saying the viewer
is three times more likely to look at this object than the background. A
file may be given rather than a floating point value, and this file must
contain one floating point number per line, corresponding to frames in the
animation.
- VIEWFILE
- This variable names a file from which ranimove 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. An exception is
made for a view file with only a single view, which is used for every
frame of the animation. In this case, the END variable must also be
specified. This variable is required, and there is no default value.
- END
- The final frame number in the animation. The default value
is computed from the number of views in the given VIEWFILE.
Normally, this variable will only be given if the view is static.
- 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, no exposure adjustments will be made.
- BASENAME
- The base output file name for the final frames. This string
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 "frame%03d".
- MBLUR
- This variable specifies the fraction of a frame time that
the shutter is simulated as being open for motion blur. Motion blur is
computed by ranimove using image-based rendering methods, and will
not be exact. The default value is 0, meaning no motion blurring.
- RATE
- This variable specifies the animation frame rate, in frames
per second. This is needed to compute the animation error visibility. The
default value is 8.
- 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.
- lowq
- This variable may be used to specify rendering options for
the initial, low-quality ray samples. It may be given either as a list of
rendering parameter settings, or as variable settings for the rad
command, in which case the RIF variable must also be
specified.
- highq
- This variable may be used to specify rendering options for
the final, high-quality ray samples. It may be given either as a list of
rendering parameter settings, or as variable settings for the rad
command, in which case the RIF variable must also be
specified.
- oconv
- This variable may be used to specify special options for
oconv. See the oconv(1) manual page for a list of valid
options. (The -f option is specified by default.)
EXAMPLES¶
A minimal input file for
ranimove might look like this:
-
-
::::::::::
sample.rnm
::::::::::
# The rad input file for our static scene:
RIF= tutor.rif
# The view file containing one view per frame:
VIEWFILE= anim1.vf
# Our central character and its motion:
move= void myguy myguy.xf myguy.rad 2.0
Note that most of the variables are not set in this file. If we only want to see
what default values
ranimove would use without actually executing
anything, we can invoke it thus:
-
- ranimove -n 0 -e sample.rnm
This will print the variables we have given as well as default values
ranimove has assigned for us.
Usually, we execute
ranimove in the background, redirecting the standard
output and standard error to a file:
-
- ranimove sample.rnm >& sample.err &
If we decide that the default values
ranimove has chosen for our
variables are not all appropriate, we can add some more assignments to the
file:
-
-
RES= 1024 # shoot for 1024x resolution
MBLUR= .25 # apply camera motion blur
RATE= 15 # 15 frames/second
EXP= anim1.exp # adjust exposure according to file
lowq= QUAL=Low # low quality ray sampling
highq= QUAL=Med # high quality ray sampling
Note the use of abbreviation for variable names.
AUTHOR¶
Greg Ward
SEE ALSO¶
fieldcomb(1),
oconv(1),
pfilt(1),
pinterp(1),
rad(1),
ran2tiff(1),
ranimate(1),
rpict(1),
xform(1)