Commands are instructions
to mental ray that are executed the moment they are read from the
input scene file. They do not add elements to the scene database.
Since the scene file is only read by the master host in a network
configuration, commands are never seen by slave hosts.
$include "filename" $include <filename>
The $ sign must appear in
the first column of the line. The named file is included (pasted
into) the .mi file in place of the $include statement.
Includes can be nested. The main purpose is to include declarations
(see below), but materials, light sources, even objects can be
included. The only place where $include cannot be used is between
$code and $end code;
use the standard C #include statement there. The included file is
read on the master host only. If the filename is enclosed in
angle brackets, the standard include path is prepended, by default
/usr/include. The standard path can be changed with the
-I command-line option.
namespace "name" ... end namespace
A namespace bracket can enclose any number of toplevel element definitions. Any toplevel element name defined and used in this bracket will be prefixed with "name ::". For example, a material named "mtl" defined in the bracket will be named "name::mtl". Inside the bracket it can be referenced as "mtl", but outside the bracket the full "name::mtl" name must be used. Inside the bracket, global toplevel elements outside the bracket can be referenced by prefixing the name with ::, as in "::mtl". Namespaces are useful to define subscenes that should not interfere with other subscenes or the main scene.
Note that all geometry created by a geometry shader is implicitly defined in a namespace with a unique namespace name that is automatically generated by mental ray. This is how two geometry shaders that both create toplevel elements with the same name avoid interfering with each other.
Note that the -echo command-line option does not reproduce the namespace statements, but instead generates the full :: names.
[min] version "string" max version "string"
This command informs mental ray that this .mi file requires the given mental ray version. min means "at least" and max means "at most". Version strings consist of numbers separated with dots, such as "1.2.3.4". The string can underspecify the version, as in "3.6". Missing numbers are implicitly assumed to be 0 so "3.6" becomes "3.6.0.0". Each number, beginning with the first, is checked in turn. If the number in the string is greater ( min) or less than ( max) than the version number built into mental ray, an error message is printed and mental ray aborts; otherwise the next number is considered. If all given numbers pass the test, mental ray continues.
File version numbers are especially useful for declaration
files, such as base.mi in the standard distribution. They
are mainly useful for making sure that certain mental ray features
and scene file syntax are present. For example, a scene file using
demand-loaded assembly files may specify min version
3.6 because that feature was introduced in mental ray 3.6, and
would cause a syntax error in earlier versions. Shaders have their
own version numbers in declarations that are independent of mental
ray version numbers.
verbose on|off|levelint
This command controls verbose messages.
There are seven levels: fatal
errors (0), errors (1), warnings (2), progress reports (3),
informational messages (4), debugging messages (5), and verbose
debugging messages (6). All message categories numerically less
than level are printed. Verbose off is equivalent
to level 2 (fatal errors and errors only); verbose on is
equivalent to level 5 (everything except debugging messages).
Verbose messages can slow down mental ray while parsing, especially
on systems with poor I/O systems such as Windows NT because of slow
scrolling. Verbose level 7 should generally be avoided; it prints
information that is really only useful for mental images. The
verbose command can be overridden with the -verbose
command-line option.
echo "message"
The named message, which must be enclosed in double
quotes, is printed to stdout. The echo
command is executed synchronously during
parsing the .mi file. Echoing requires verbosity level 4 or
higher.
call shader_list [, "camera_inst" "options"]
The given shader is called immediately, and parsing stops until
the shader completes. Since the shader is called during parsing and
not during tessellation or rendering, the entire state passed to
the shader is filled with nulls, which limits what the shader can
do (it cannot cast rays, for example). If the name of a camera
instance element and the name of an options element is given,
state→options
and state→camera
are set up for the shader. The return value is ignored. The call
statement is intended for early initialization of shader packages,
or even to start interactive front-end packages from inside a
standalone mental ray. Shader init and exit functions are not
called by the call statement. For shader initialization,
shader init functions are more useful because they are called with
a full state, and only if the corresponding shader is actually
needed. Call statements are rarely used.
touch "element_name"
Mark the element as modified (or dirty), similar to an incremental change. This enforces a full re-evaluation of the element in a subsequent read access, disregarding any cached values like tessellations. This is useful when a displacement shader or a connected subshader changes (mental ray cannot discover this by itself), or when the content of a texture file has changed on disk and needs to be reloaded.
system "shell_command"
This command starts a shell, which executes the named
shell_command. The shell command string must be enclosed in
double quotes. The full shell scripting command syntax is
available, including pipes, redirections, control structures, and
environment variables. mental ray waits until the shell command has
completed; this can be defeated by ending the command with a shell
& command. The system command is executed while
parsing, not during rendering. Its main purpose is writing finished
pictures to an output device such as a film recorder. Shell
commands are operating-system dependent and are much less useful on
Windows NT because NT shells are severely limited. Note that shell
commands, like shaders, are executed with the privilege of the user
running mental ray.
delete "element_name"
Delete a named scene element, such as objects, materials, lights, textures, instances, and instance groups. Declarations cannot be deleted. It is possible to delete an element and recreate it with the same name, but this breaks all links. For example, if a light is created and then an instance is created for it, naming the light, the link between instance and light is broken when the light is deleted and recreated. The instance retains a dangling link that will cause havoc during later processing. The delete command should be used only for entities that disappear permanently. All instances and instance groups that contain the name must be updated before the name is deleted.
Instead of deleting and recreating an element, an incremental change should be used by prefixing the element definition with the incremental modifier. This has the additional advantage that the element retains all contents that are not modified during the new incremental definition. For example, an incremental change to a camera containing nothing but a new frame number specification will leave the camera unchanged except for the frame number. As an exception, objects and instgroups are cleared first because merging is not generally useful in these cases.
debug "mode" ["arg"]
Print debug information to the stderr. The verbosity ( -verbose) must be set to 4 or higher. Some modes print information on a specific database element arg. The following modes are supported:
mode | arg | operation |
---|---|---|
sym | - | print all symbol tables |
sym global | - | print the main global symbol table |
sym declare | - | print all declaration symbols |
sym variable | - | print all variables from the set command |
sym hardware | - | print all hardware shaders |
registry | - | print all registry command entries |
mem summary | - | print memory usage summary |
db statistics | - | print scene database tag usage statistics |
db summary | - | print scene database tags by module and type |
db dump | - | print all tags in the scene database |
job statistics | - | print summary of executed jobs |
img verbose | - | turn on debugging for loaded image files |
scene check | Y | check database consistency of tag |
scene dump | Y | brief listing of tag hierarchy |
scene alldump | Y | verbose listing of tag hierarchy |
echo | Y | echo a tag, like -echo |
render "root_instgroup_name" "camera_inst_name" "options_name"
This statement renders the scene.
The name of an options element, a camera instance element (which must also have been attached to the root instance group), and the root instance group must be given.
Copyright © 1986-2009 by mental images GmbH