This section describes the user interface of Ayam.
The user interface of Ayam is split into three types of windows: a main window, a toolbox and an arbitrary number of view windows. The main window displays the object hierarchy and allows to edit object properties. The toolbox window is for easy creation of objects and starting of modelling actions and tools. The modelling actions are then carried out in view windows, where also the scene is displayed.
The whole application with all open windows may be iconified (zapped) using
the shortcut <Ctrl+Z>
. If any of the windows iconified by zap
is de-iconified, all other windows iconified by zap will be de-iconified
as well.
Single Window GUI Mode
Until Ayam 1.14 all windows, main, toolbar, and views were always single top level windows - a so called floating windows GUI mode. Since version 1.14, a new GUI mode is available where the main window, three view windows and the toolbar are integrated in one top level window. This mode is called single window GUI mode, see also the image above. The new single window GUI mode is enabled by default. All sub windows are in panes, the space occupied by a sub window may be adjusted by dragging the mouse at the borderlines of the panes. The number of views is not limited to three, albeit all extra views will become extra top level windows.
The next sections document the three types of windows, main, toolbar, and views in detail.
The main window is split into three large areas:
"Objects:"
"Properties:"
The Main Window
The relative sizes of the three areas are managed by a so called paned geometry management. To change the relative size of the console, you may move your mouse pointer to the upper border of the console until the pointer changes and then drag the border. The same goes for the right border of the objects section.
The default representation of the object hierarchy is a tree view.
The second available representation is a simple listbox (as known from
"The Mops"
).
The label "Objects"
may be used to switch between the two
representations of the object hierarchy quickly (using a double click).
It is also possible to switch between both representations
using the context menu.
The two representations have very different properties regarding speed, use of resources, and versatility. The tree is, due to the drag and drop operations, much more versatile but also slower.
Both representations manage a so called "current level"
.
This level is the scene level that is displayed in the object listbox.
In the tree view the current level is drawn in black while all
other levels are grayed out. Selection of objects
may take place in the current level only!
After the start-up of Ayam you will notice, that there is a first
object called "Root"
in the top level of the scene, even though the
scene seems to be empty.
See section
Root Object for more
information regarding this special object, and what it is good for.
Note that you can not delete or copy this object.
Object Tree View
The object tree view is quite complex and may be slow on slow machines (of the Pentium 90 class), especially when dealing with scenes that contain many objects. This should not be a problem nowadays. Nevertheless, Ayam tries to keep tree update delays as low as possible, but this works only if the scene uses the hierarchy and changes happen in sub levels (not the root level).
In the tree view, objects may be selected using the left mouse button.
Multiple selection of objects is possible by holding down the
<Shift>
or <Ctrl>
key while clicking on objects.
Double clicking on objects with child objects toggles display of the child level. The same may be accomplished using single clicks on the well known plus/minus symbols in front of the name of those objects.
Drag and drop operation is also possible to move objects in the hierarchy and to initiate special actions like connecting materials to objects. However, this last feature is documented in section Objects, Properties, and Tags as it is object type specific.
The rightmost mouse button opens a context menu with basic tree and clipboard operations:
"Tree/Rebuild"
completely removes the tree nodes, rebuilds
the hierarchy, makes the top level current, and clears the object selection,
"Tree/Expand All"
opens all nodes with child nodes,
"Tree/Collapse All"
closes all nodes with child nodes,
"Tree/Toggle Selected"
toggles display of all sub-levels
of the selected objects,
"Switch to Listbox"
removes the tree view and replaces it
with the object listbox (see below).
"Deselect Object"
deselects the currently selected
object(s).
"Copy Object", "Cut Object", "Paste Object", "Delete Object"
are standard clipboard operations as documented in
section
main menu.
"Help on Object"
displays the help of the selected
object.Since Ayam 1.6 the scene may be navigated and objects may be selected using the keyboard alone:
<Up>
and <Down>
move the selection to the previous
or next object, since Ayam 1.7 holding down the <Shift>
key
while pressing <Up>
or <Down>
will not move the
selection, but rather extend it in the respective direction,
<Home>
and <End>
select the first
or last object in the current level,
<Shift+Home>
and <Shift+End>
are available
since Ayam 1.11 and extend the selection up to the first
or last object in the current level respectively.
The root object, however, will always be omitted.
<Right>
enters the (first) selected object,
<Left>
enters the parent level,
<Ctrl+a>
and <Ctrl+n>
select or de-select
all objects in the current level. If the current level is the root level,
the Root object will not be selected by <Ctrl+a>
.
<Space>
toggles display of the child objects of the
selected object(s).
<Shift+Space>
toggles display of all sub-levels of the
selected object(s) (available since Ayam 1.18).
If those shortcuts do not work you may need to move the keyboard
input focus away from (internal) view windows, the property GUI,
or the console using <Tab>
or <Shift+Tab>
first.
Another way of moving the focus (and cleaning up the application state)
is by using the <Esc>
key:
In property GUIs and the console, pressing <Esc>
moves the focus
away to the main window or object selection window.
Since Ayam 1.15, pressing <Esc>
twice in a view window
will also reset the focus to the main window/object selection
window. Pressing <Esc>
twice in the object selection
window will additionally clear the selection (this implies
removal of the currently displayed property GUI) and change the
current level to the root level.
Thus, if you feel lost anywhere in Ayam, just press <Esc>
twice or thrice.
Object Listbox
The object listbox displays the object hierarchy of the current scene. Using this listbox you may browse through the hierarchy of the scene with your mouse and you may select one or more objects.
Browsing and selecting should be very intuitive:
Use a double click to enter a level (or an object with child objects),
use a single click to select objects, multiple objects may be selected using
click and drag, or holding down the <Shift>
or <Ctrl>
key while clicking.
Keyboard operation is also possible if the listbox has the
input focus.
A ".."
is displayed as the first element of the current level
if you are "inside" a level or another object.
A double click on the ".."
takes you to the parent level.
The buttons below the listbox may be used to change the selection or
to quickly jump through the hierarchy. They should be self explanatory.
The rightmost mouse button opens a small context menu:
"Switch to Tree"
removes the listbox and replaces it
with the tree view (see above).
"Copy Object", "Cut Object", "Paste Object", "Delete Object"
are standard clipboard operations as documented in
section
main menu.
"Help on Object"
displays the help of the selected
object.Since Ayam 1.6 the scene may be navigated and objects may be selected using the keyboard alone:
<Up>
and <Down>
move the selection to the previous
or next object, since Ayam 1.7 holding down the <Shift>
key
while pressing <Up>
or <Down>
will not move the
selection, but rather extend it in the respective direction,
<Home>
and <End>
select the first
or last object in the current level,
<Right>
enters the (first) selected object,
<Left>
enters the parent level,
<Ctrl+a>
and <Ctrl+n>
select or de-select
all object in the current level. If the current level is the root level,
the Root object will not be selected by <Ctrl+a>
.
<Shift+Home>
and <Shift+End>
are available
since Ayam 1.11 and extend the selection up to the first
or last object in the current level respectively.
The root object, however, will always be omitted.
If those shortcuts do not work you may need to move the keyboard
input focus away from (internal) view windows, the property GUI,
or the console using <Tab>
or <Shift+Tab>
first.
Another way of moving the focus (and cleaning up the application state)
is by using the <Esc>
key:
In property GUIs and the console, pressing <Esc>
moves the focus
away to the main window or object selection window.
Since Ayam 1.15, pressing <Esc>
twice in a view window
will also reset the focus to the main window/object selection
window. Pressing <Esc>
twice in the object selection
window will additionally clear the selection (this implies
removal of the currently displayed property GUI) and change the
current level to the root level.
Thus, if you feel lost anywhere in Ayam, just press <Esc>
twice or thrice.
Properties
The listbox right next to the object hierarchy displays the properties of the currently selected object.
If there are multiple selected objects, the properties listbox will display no properties at all.
Unlike the object tree/listbox, where you can select multiple entries, only one property may be selected. If a property is selected, the associated GUI will be shown in the appropriate area (on the right hand side).
Since Ayam 1.8 the keyboard may be used to select properties,
just press one of the <0>
-<9>
keys (most comfortably
using the numeric keypad). <0>
always selects the last and
often the only object type specific property, whereas <1>
selects the first property, which often contains the standard
transformations.
All property GUIs use more or less standardized GUI elements that are organized in list form. The lists may be scrolled if they get too long to fit into the window.
If the elements of the property GUI do not fit into the screen space
that is defined by the current window size, Ayam will automatically
resize the main window when you select a property. You can control
this behaviour using the preference setting
"AutoResize"
(see section
Preferences).
If an object and a property are selected and a different object is selected, the property GUI that has the same index as the previously selected property in the properties listbox will be selected and shown. This is not necessarily a property of the same type! To avoid that or to clear the property GUI for fast browsing through the scene you may either double click on the "Properties" label or use the context menu of the properties listbox to de-select the current property.
What properties exactly will be shown, and how the GUIs look alike depends on the selected object and the selected property. This is documented comprehensively in section Objects, Properties, and Tags.
Here are some general remarks about object properties:
The various things that may be changed using a property GUI
will normally not be applied to the selected object until the
"Apply"
-button is pressed!
Since Ayam 1.8.3 holding down the "Shift"
button while
interacting with the property GUI or pressing "Return"
when entry widgets have the keyboard input focus will lead
to an instant apply.
You can undo all changes to the arguments of a property that have been
made after the last "Apply"
operation with the "Reset"
-button.
This does, however, not use the undo mechanism of Ayam.
Note also that property GUIs of custom objects may offer interactive
elements that do an instant "Apply" operation. Most GUIs of the core
objects of Ayam do not change anything until the "Apply"
-button
is used, however.
If a property GUI element has the keyboard input focus (it is then usually
displayed with a black rim around it), all the keyboard shortcuts for
the main menu and scene navigation will have no effect until the
keyboard input focus is moved away from the property GUI. You may
accomplish this easily using the <Esc>
key.
A property may be copied and pasted to another object, see the
"Edit"
menu. You can also paste property values to different types
of properties (e.g. pasting parameters from a surface shader to the
displacement shader) using "Paste to selected"
in the
"Special/Clipboard"
sub-menu.
Pasting a property to multiple selected objects does work too. This is a great way to apply e.g. a surface shader to a big number of material objects, without going the long way of setting a new shader and entering parameters for it for every object.
Since you may not want to copy and paste whole properties all the time, you may even mark single parameters with a double click on the labels of the parameters. The marked parameters will then be preceded by an exclamation mark (!) in the property GUI.
If you now copy this property, all marked parameters will be omitted.
It is also possible to copy just the parameters you marked using
"Copy Marked Prop"
.
A simple example for the property clipboard:
Our task is to give a big number of material objects the same color, but they already have different opacity settings. Copying the complete attribute property would destroy the opacity values. We can solve this by copying just the color attribute, but leave all other attributes as they are:
"Attributes"
property GUI. (Do not forget the "Apply"
button!)
"Color"
; it should read "!Color"
now.
"Copy Marked Prop"
in the "Edit"
menu or the
hot key <Ctrl+I>
.
"Paste Property"
or <Ctrl+V>
.
Special care must be taken when pasting incomplete properties to objects which do not have complete properties already. Do not paste an incomplete shader property to an object which does not already have the same shader!
Console
The third part of the main window is the console. The console is mainly for unobtrusive text output (informative, warning, and error messages). If something does not work as advertised, the console may be worth a look.
The console captures the stderr and stdout channels of the
Tcl-interpreter Ayam is running in. You can also redirect all internal
Tcl error messages, that would normally cause a Tcl error dialog window
to appear, to the console using the preference setting
"Misc/RedirectTcl"
(see section
Miscellaneous Preferences).
You can also enter commands or even complete new Tcl procedures into the console. However, this is a feature for an advanced user that studied section Scripting Interface. You need to explicitly click into the console to give it the input focus and thus enable input.
An important thing to know is that the keyboard shortcuts for the
various main menu entries do not work if the console has the input
focus! Instead, other keyboard shortcuts (related to the console)
are in effect.
How do you get out of this? Simply press <Shift+Tab>
or
<Esc>
to move the focus away from the console and enable
the main menu shortcuts again.
Note that the <Tab>
key alone does not move the focus away
from the console.
<Tab>
instead completes names of files, commands (procedures),
variables, and widgets.
You may try this out by typing tip
in the console,
then press <Tab>
.
The console automagically completes tip
to tipoftheDay
(the procedure that prints out the tip of the day, just try it).
Another simple demonstration of the consoles capabilities:
forAll 0 {movOb $i 0 0; rotOb [expr $i*10] 0 0}
This example uses three procedures:
forAll
: allows to execute
a command for each of the selected objects, or for each object in the
current level if no objects are selected.movOb
: moves the selected object(s).rotOb
: rotates the selected object(s).See section Scripting Interface for a listing of all the available commands.
Note that the example uses a side effect (the variable "i"
that
holds the index of the currently processed object) to calculate
the amount of the movement and rotation.
For more information regarding the console, please refer to the appropriate documentation by the original author Jeffrey Hobbs (see the console context menu, that you may open with your right mouse button).
This section discusses the main menu bar. Note that many menu entries
have keyboard shortcuts that are displayed in each entry. You can adapt
the shortcuts using the "ayamrc"
file
(see section
Ayamrc File).
The "File"
menu deals with standard file operations:
"New"
, clears the current scene (deletes all objects) and reloads
the working environment (if the preference setting
"Main/NewLoadsEnv"
is enabled).
This operation cannot be undone!
"Open"
, clears the current scene and closes all views,
then loads a new scene from disk. All objects from the file
will be read. Depending on the setting of
"Preferences/Main/BakOnReplace"
a backup copy of the file that is read will be made before loading.
This operation cannot be undone!
Since Ayam 1.13 also files supported by any of the import plugins
may be imported using this route. Note that this only works if the
selected file has a file name extension. The appropriate plugin will
be loaded automatically (from the list of plugin directories in the
preferences) if needed and the import options dialog of the plugin
will be opened, with the "FileName"
option already set.
Mind that in this case, no backup copy of the file will be made.
See also section
Import and Export.
"Insert"
, inserts the objects and views of an Ayam scene file
into the current scene. All objects from the file will be read.
If the file to be inserted contains a Root or View objects, the new
objects will be created in the top level of the scene.
Otherwise, if just geometric objects are in the scene file (i.e. the file
was created using "Special/Save Selected"
), the new objects
will be inserted in the current level of the scene.
This operation cannot be undone!
Since Ayam 1.13 also files supported by any of the import plugins
may be imported using this route. See above ("Open"
).
"Save as"
, saves the current scene asking for a new file name.
Since Ayam 1.13 also files supported by any of the export plugins
may be exported using this route. Just pick a file name with the
desired extension. See above ("Open"
).
"Save"
, saves the scene. If the scene has not been saved before
(read, you have not given it a file name) you will be asked for a file
name first.
"Import/"
, since Ayam 1.13 this sub menu is initially
empty. You need to load a plugin first to gain to the menu entries
described here.
"Import/Apple 3DMF"
, import a scene from the Apple
3DMF format, see section
3DMF (Apple) Import
for more information.
"Import/AutoCAD DXF"
, import a scene from the AutoCAD
DXF format, see section
AutoCAD DXF import
for more information.
"Import/Mops"
, import a scene from The Mops,
see section
Import of Mops Scenes
for more information.
"Import/Rhino 3DM"
, import a scene from the Rhino
3DM format, see section
3DM (Rhino) Import
for more information.
"Import/Wavefront OBJ"
, import a scene from the Wavefront
OBJ format, see section
Wavefront OBJ Import
for more information.
"Import/Web3D X3D"
, import a scene from the XML
based X3D format published by the Web3D Consortium, see section
X3D (Web3D) Import
for more information.
"Export/"
, since Ayam 1.13 this sub menu initially
only contains the "RenderMan RIB"
entry. You need to load a
plugin first to gain access to the other menu entries
described here.
"Export/RenderMan RIB"
, exports the current scene to a RIB,
asking which camera (which view) to use.
"Export/Apple 3DMF"
, export a scene to the Apple
3DMF format, see section
3DMF (Apple) Export
for more information.
"Export/Rhino 3DM"
, export a scene to the Rhino
3DM format, see section
3DM (Rhino) Export
for more information.
"Export/Wavefront OBJ"
, exports the current scene to a
Wavefront OBJ file, see also section
Wavefront OBJ export.
"Export/Web3D X3D"
, export a scene to the XML
based X3D format published by the Web3D Consortium, see section
X3D (Web3D) Export
for more information.
"Load Plugin"
, loads a file containing a custom object or a plugin.
Depending on the platform Ayam is running on, these are files with the
file name extension ".so"
or ".dll"
.
There are currently two types of plugins for Ayam: custom objects and
import/export plugins.
See section
Custom Objects
for more information about custom objects.
See section
Import and Export
for more information about import/export plugins.
"Save Prefs"
, save the current preference settings
to the ayamrc file after making a backup copy of this file (see section
Ayamrc File for more information about this file).
"1."
, "2."
, "3."
, "4."
, immediately replace the
current scene with the one in the menu entry. The menu entries
are updated and rotated upon successful loading and saving of a scene
so that the first entry always contains the scene that was loaded
(or saved) last.
"Exit!"
, remove all temporary files, save preferences (if
the preference setting "Main/AutoSavePrefs"
is turned on)
and quit the application.
The "Edit"
menu contains object and property clipboard
operations, undo actions, and lets you open the preferences editor:
"Copy"
, copies the currently selected object(s) into the clipboard.
This operation cannot be undone!
"Cut"
, moves the currently selected object(s) into the clipboard.
This operation cannot be undone!
"Paste"
, copies the object(s) from the clipboard to the current
level of the scene. Note that the content of the clipboard remains intact
after this operation, this means that you can paste multiple times!
You can move objects out of the clipboard (clearing it) using the menu entry
"Special/Clipboard/Paste (Move)"
.
Also note that referenced objects, when moved into the clipboard with
"Cut"
, can not be moved out of it using a simple "Paste"
, use
"Special/Clipboard/Paste (Move)"
instead!
This operation cannot be undone!
"Delete"
, removes the selected object(s) from the scene.
This operation cannot be undone!
"Select All"
, selects all objects in the current level
(except for the root object).
"Select None"
, de-selects all currently selected objects.
"Copy Property"
, copies the currently selected property of the
currently selected object to the property clipboard (the property
clipboard is completely independent from the normal object clipboard!).
Marked parameters will be omitted!
"Copy Marked Prop"
, copies the currently marked parameters
of the currently selected property of the
currently selected object to the property clipboard (the property
clipboard is completely independent from the normal object clipboard!).
"Paste Property"
, copies all property data from the property
clipboard to the currently selected object(s). The data will get pasted
to the property type saved by the last copy operation. It will not get
pasted to the currently selected property; use
"Special/Clipboard/Paste Property to selected"
for that.
"Undo"
, perform undo operation (see section
The Undo System for more information).
"Redo"
, perform redo operation (see section
The Undo System for more information).
"Material"
, searches for the material object currently
associated with the selected object and selects it for editing.
If the selected object has no material yet, a new material
will be created first.
"Master"
, searches for the master object of the
currently selected instance object and selects it for editing,
see also section
Instance Object.
"Preferences"
, opens the preferences dialog (see section
Preferences for more information).
The "Create"
menu entries let you create objects. In contrast
to the object creation via the toolbox some menu entries present you
with small requesters, where you may adjust parameters for the object
to be created. Here are the entries of the Create
menu:
"NURBCurve"
, create a new NURBS curve. A small dialog box will
pop up, where you may specify the length of the new curve. See
also section
NCurve Object.
"ICurve"
, create a new interpolating curve. A small dialog box will
pop up, where you may specify the length of the new curve. See
also section
ICurve Object.
"ACurve"
, create a new approximating curve. A small dialog box will
pop up, where you may specify the length of the new curve. See
also section
ACurve Object.
"NCircle"
, create a new NURBS circle. See
also section
NCircle Object.
"NURBPatch"
, create a new NURBS patch. A small dialog box will
pop up, where you may specify the width and height of the new patch. See
also section
NPatch Object.
"BPatch"
, create a new bilinear patch. See
also section
BPatch Object.
"PatchMesh"
, create a new patch mesh. See
also section
PatchMesh Object.
"Solid"
, create a new solid primitive object, for use in CSG.
"Box"
, "Sphere"
, "Disk"
, "Cone"
, "Cylinder"
,
"Torus"
, "Hyperboloid"
or "Paraboloid"
may be selected.
See also section
Quadric Primitives.
"Level"
, creates a new hierarchy object. "Level"
just groups objects, "Union"
, "Intersection"
,
"Difference"
, and "Primitive"
are CSG operations. See
also section
Level Object.
"Light"
, create a new light source. See
also section
Light Object.
"Custom Object"
, create a new custom object. If this sub-menu
is empty no custom object has been loaded yet. See
also section
Custom Object.
"View"
, a new View window will be opened. See
also section
View Object.
"Instance"
, create an instance of the currently selected
object, see section
Instance Object
for more information regarding instances.
"Clone"
, create a clone object, see
section
Clone Object
"Mirror"
, create a clone object, that is immediately
configured as a mirror, see also
section
Clone Object
"Material"
, create a new material. A small dialog box will
pop up, where you have to specify the name of the new material. See
also section
Material Object.
"Camera"
, create a new camera. Camera objects may be used
to temporarily save view camera settings, see
section
Camera Object.
"RiInc"
, create a new RIB-include object. Those objects
may be used to include objects into your scenes
that just exist as a piece of RIB, see
also section
RiInc Object.
"RiProc"
, create a new procedural object, see
also section
RiProc Object.
"Script"
, create a new script object, see
also section
Script Object.
"Select"
, create a new select object, see
also section
Select Object.
"Text"
, create a new text object, see
also section
Text Object."Last (None)"
, this menu entry is available since Ayam 1.13.
It allows quick access to the last used entry/tool in the "Tools"
menu hierarchy. The label of the entry will be changed appropriately,
e.g. to "Last (Revert U)"
, when a tool was started.
The corresponding keyboard shortcut is <Ctrl+t>
; to repeat
the last used tool with the same set of parameters (and without opening
the parameter dialog window again) <Ctrl+T>
can be used.
"Create"
, "Curve"
, and
"Surface"
, are sub-menus with various NURBS based creation
and modelling tools, that are explained in depth in section
NURBS Modelling Tools.
"PolyMesh"
: sub-menu for polygonal mesh related tools:
"Merge"
: merges all currently selected PolyMesh objects into
a single PolyMesh object, without checking for doubly used points,
loops, or faces. Normally, the currently selected PolyMesh objects will not
be changed by this tool. But you may let the merge-tool delete them
immediately after the merging operation, by enabling the
"RemoveMerged"
-option.
If the "OptimizeNew"
-option is enabled, the "Optimize"
-tool
(see below) will be started after the merge operation with the
newly created merged object as argument.
"Split"
: splits the faces from the selected PolyMesh objects
into a second PolyMesh object. The faces to be split off are selected
by selecting all their control points with the select points modelling
action (see also section
Selecting Points).
The original selected PolyMesh objects will be changed. The changes to
the original objects cannot be undone. Since the split operation does not
create optimized new objects, the "Optimize"
-tool (see below) may
be started immediately after splitting using the "OptimizeNew"
-option.
"Optimize"
: optimizes the selected PolyMesh object(s)
by removing all multiply used (and unused) control points (if the option
"OptimizeCoords"
is enabled) or multiply used faces (not implemented
yet). If the option "IgnoreNormals"
is enabled, the optimize-tool will
consider points with equal coordinates but differing normals
to be equal (and optimize them).
Removing multiply used control points using the "Optimize"
-tool
may decrease the memory consumption of the control points
by a factor of about six, depending on the connectivity of the original
mesh."Points"
: sub-menu for tools that work on points:
"Select All Points"
, selects all points of the currently
selected object(s).
"Invert Selection"
, selects all points of the currently
selected object(s) that are not selected, and de-select all points that
are currently selected.
"Apply To All"
, applies the transformations encoded in
the transformations property of the selected objects to all points of those
objects.
This will have the effect of resetting the transformations property
to the default values without (visibly) changing the points of the
selected objects.
"Apply To Selected"
, applies the transformations
encoded in the transformations property of the selected objects to the
selected points.
This will reset the transformations property without (visibly)
changing the selected points. The points currently not selected
will be transformed, however!
"Center All Points (3D)"
, moves all points of the
selected objects so that their common center (the center of gravity)
is the center of the respective objects coordinate system.
Note that, currently, this works on each of the selected objects
separately!"Center All Points (2D-XY)"
,
"Points/Center All Points (2D-YZ)"
,
"Points/Center All Points (2D-XZ)"
: work like the center
3D tool but just center in the designated plane."Show"
, "Hide"
set and unset the "Hide"
attribute of the selected object(s) thus making them invisible
or visible again.
Note that hidden objects may be excluded from RIB-Export, when
the preference setting "RIB-Export/ExcludeHidden"
is
activated.
"Show All"
and "Hide All"
set and unset the "Hide"
attribute of all objects in the scene (including the root object
and all views!) regardles of the currently selected objects (and
without changing the current selection). These operations can
not be undone using the undo system.
"Convert"
, starts the convert action that has been
registered for the type of the selected object(s). The exact
behaviour depends on the type of the selected object(s):
a Revolve object will e.g. be converted to a level containing NURBS
patches that make up the surface of revolution and the caps.
This operation can not be undone, i.e. the newly created objects
will not be removed, using the undo system.
"Convert (In Place)"
, starts the convert action as
outlined above, but replaces the original objects with the
new converted ones. This operation, in contrast to the simple
conversion above, can be undone.
"Force Notification"
, force the notification callbacks of
all selected objects (or all objects in the scene if no objects are
selected) to be called. The notification callbacks are used by objects
like e.g. Revolve to be informed about changes of their child
objects to properly adapt to those changes.
"Highlight Material"
, colours all objects of the same
material in red color in the tree view. This tool expects a selected
material object or a normal object that has a material attached.
It will not work for material objects that are not registered or
have no normal objects that refer to them. It will also not work
for objects that have no material assigned. If the reference counter
of a material object is not zero, but "Highlight Material"
reports 0 objects found, the referring objects probably reside
in the object clipboard. You can clear the color from the tree view
with the keyboard shortcut <Ctrl+l>
.
The "Custom"
menu is initially empty. Custom objects and plugins,
may create entries here.
The "Special"
menu contains seldom used tools:
"Save Selected as"
, saves just the currently selected objects
to disk. Note that Ayam will not check, whether the objects are saved
with their materials. It is also possible to save instance objects
without their master objects. This will lead to errors while loading
such a scene later on.
"Save Environment"
, saves the root object and all
views to a so called environment scene file, which is read
on program startup and "File/New"
.
Initially, the file requester that asks for the name
of the new environment uses the value of the preference
setting "Main/EnvFile"
. Note that there will be no
check whether loading of that environment on next start up is
enabled in the preferences. Note also, that using "Save Environment"
you can just save environment files that contain the root object
and all views. If you want to include geometric objects in your
environment or if you want to exclude the root object and just
save views you have to use "File/Save"
or
"Special/Save Selected as"
respectively.
"Clipboard/Paste (move)"
, moves objects from the clipboard
back to the scene (clearing the clipboard). This is the only way to
get referenced objects out of the clipboard.
"Clipboard/Replace"
, replaces the currently selected
object(s) with the object clipboard content, moving the replaced
objects into the clipboard. If multiple objects are selected
in non consecutive sequences, only the first consecutive sequence
or single object is replaced.
"Clipboard/Paste Property to selected"
paste the property
from the property clipboard to the currently selected
property of the currently selected object. No type check of the
properties will take place! You may e.g. copy the settings from a
displacement shader to a surface shader (as long as the copied arguments
of both shaders have the same names and types).
"Instances/Resolve all Instances"
, converts all instances
of the current level (and its child objects) to normal objects. Since
Ayam 1.14, if objects are selected, only the selected objects will be
processed.
"Instances/Automatic Instancing"
, pops up a small dialog box,
where you may parameterise and start the automatic instantiation
algorithm (that automatically creates instances from
equal objects). See section
Automatic Instancing
for more information regarding automatic instancing.
"Tags/Add RiOption"
, pops up a small dialog box, where you may
select and parameterise a RiOption tag to add as tag to the Root object
(see
RiOption Tag). The Root object does
not have to be selected and the current selection will not be changed
by this action.
"Tags/Add RiAttribute"
, pops up a small dialog box, where
you may select and parameterise a RiAttribute tag to add as tag to the
currently selected object(s) (see
RiAttribute Tag).
"Tags/Edit TexCoords"
, opens the texture coordinates editor.
(see also section
TC (Texture Coordinates) Tag).
"RIB-Export/From Camera"
, writes a complete RIB of
the current scene with the camera transformations taken from the
currently selected camera object. The size of the rendered image will
be taken from the RiOptions of the root object. If they are zero,
default values of 400 pixels width and 300 pixels height will be used.
The type of the projection written will be perspective.
Otherwise the RIB looks exactly the same as if exported via
main menu "File/Export/RenderMan RIB"
.
"RIB-Export/Selected Objects"
, exports only the
selected objects to a RIB. Note that instances will always be resolved,
hidden objects and objects with "NoExport"
tags are treated
as on normal export operations, and light objects are simply ignored.
Note also that the created RIB, since it e.g. lacks camera transformation
and WorldBegin/End directives, may not be rendered directly by a
RenderMan compliant renderer (unless the renderer is really forgiving
about mis-structured RIBs).
The main use of this feature is to let you create RIBs that may be easily
included in other RIBs using e.g. the ReadArchive directive.
"RIB-Export/Create ShadowMap"
, creates the shadow maps
from the currently selected light source.
See also section
Using ShadowMaps.
"RIB-Export/Create All ShadowMaps"
, creates all shadow maps
for the current scene (regardless of selection).
See also section
Using ShadowMaps.
"Enable Scripts"
enables all disabled script tags and
objects. Objects and tags in the object clipboard are not
affected!
"Select Renderer"
opens a dialog where the renderer
for direct rendering from a view may be choosen.
The changes will have effect on all preference settings that control
direct rendering from a view, except whether RenderGUIs should
be used.
If the "ScanShaders"
checkmark is activated, Ayam will
additionally try to load the corresponding shader parsing plugin
(see also section
Shader Parsing Plugins)
and rescan for compiled shaders. Note that in order for the
"ScanShaders"
feature to work properly the "Main/Shaders"
and "Main/Plugins"
preference settings have to be set correctly
(see also section
The Main Preferences).
"Scan Shaders"
initiates the shader parsing with the
built in shader parser or the currently loaded shader parsing plugin
(see also section
Shader Parsing Plugins).
"Reset Preferences"
removes the current ayamrc file,
where the preferences are saved; after a restart of Ayam, all
preferences will be reset to factory defaults. See also
section
Ayamrc File for more information
about the ayamrc file.
"Toggle Toolbox"
closes or opens the toolbox window
(see
The Toolbox Window). From version 1.3 on,
Ayam remembers the state of the toolbox in the saved preferences.
"Toggle TreeView"
toggles object tree view and object listbox.
From version 1.3 on, Ayam remembers whether the tree view or the
object listbox is open in the saved preferences
(see also section
Objects for more information
about both representations).
"Zap Ayam"
iconifies all currently open windows of Ayam.
If one of the iconified windows is de-iconified later, all other zapped
windows will be de-iconified as well."Help"
, opens a web browser and displays the documentation,
the URL to display is taken from the "Docs"
preference setting.
"Help on object"
, opens a web browser and displays
documentation about the currently selected type of object,
the URL to display is derived from the "Docs"
preference setting,
this feature will not work with frame redirects e.g.
"http://www.ayam3d.org/"
; use
"http://ayam.sourceforge.net/docs/"
or a "file:"
-URL
as base URL in the "Docs"
preference setting instead!
"Show Shortcuts"
, displays some important shortcuts for modelling
actions, you may leave this window open when doing your first
steps in modelling with Ayam.
"About"
, displays some version, copyright,
and trademark information.
"Show Tooltips"
, enables tool tips (balloon help)
for various user interface elements (including the toolbox buttons).
A View Window
The view window is split into a menu bar and a OpenGL-widget, where interaction and drawing takes place. The title of the view window gives information about name, current type, and the currently active modelling action of the view.
Since Ayam 1.14 the current modelling action is also displayed in the view menu bar as an icon.
This section discusses the view menu bar. Note that many menu entries
have keyboard shortcuts that are displayed in each entry. You can adapt
the shortcuts using the "ayamrc"
file
(see section
Ayamrc File).
Note that the view menu keyboard shortcuts only work if the view window
has the keyboard input focus.
Here are all meny entries of the "View"
menu:
"Quick Render"
: the scene is exported to a RIB using the
camera settings of the current view; then the "QRender"
command
(see the preferences) will be called. Note that the RIB export
will override the RiOption settings for image size and use the current
window size instead.
Also note that the environment variable SHADERS
will be adapted
to the preference setting Shaders
for rendering.
"Render"
: the scene is exported to a RIB using the
camera settings of the current view; then the "Render"
command
(see the preferences) will be called. Note that the RIB export
will override the RiOption settings for image size and use the current
window size instead.
Also note that the environment variable SHADERS
will be adapted
to the preference setting Shaders
for rendering.
"Redraw"
: forces the OpenGL-widget to be drawn, this is
particularly useful if automatic redrawing of the view has been disabled.
"Export RIB"
exports the scene to a RIB. This does exactly the
same as the main menu entry "File/Export/RenderMan RIB"
, except that
the current view will already be selected in the dialog box.
"Open PPrev"
, "Close PPrev"
: those menu entries are just
available, if the compile time option AYENABLEPPREV
has been set.
This option is not set for the official Ayam binaries.
Permanent preview (PPrev) continuously writes a RIB stream to
a (fast) RenderMan renderer, a frame for each redraw operation
of the view window that was used to open the preview. This way, the
RenderMan renderer immediately displays all changes in the scene.
This is a great way to test many different camera or light settings without
the need to manually start a rendering process and close the preview window
for each different setting.
As the RIB client library usually is not able to handle multiple open
RIB streams simultaneously, RIB-Export and direct rendering from view
windows are not available until the permanent preview window is closed.
"Create ShadowMap"
: creates the shadow maps
for the currently selected light source.
See also section
Using ShadowMaps.
"Create All ShadowMaps"
: creates all shadow maps for the
current scene (regardless of selection).
See also section
Using ShadowMaps.
"Close"
: the View window will be removed. This entry is not
available for the internal views of Ayam in single window GUI mode."Front"
"Side"
"Top"
"Perspective"
"Trim"
The "Configure"
menu may be used to change preferences of the view.
Some preferences are outlined in greater detail in section
ViewAttrib.
"Automatic Redraw"
, toggles whether the view should
be redrawn, whenever the scene changes. If this is disabled,
you can force a redraw using "View/Redraw"
.
"Drawing Mode"
determines whether the view should draw a wireframe
representation ("Drawing Mode/Draw"
) or a shaded one
("Drawing Mode/Shade"
) or, new in Ayam 1.6, a representation
where the curves of the draw mode are drawn over the shaded
representation ("Drawing Mode/ShadeAndDraw"
).
"Draw Selection only"
, if this is enabled, just the
currently selected objects (and their children) will be drawn.
"Draw Level only"
, if this is enabled, just the
objects of the current level (and their children) will be drawn.
"Draw Object CS"
, if this is enabled, small coordinate
systems (three colored lines) will be drawn at the base of each
objects coordinate system.
"AntiAlias Lines"
, if this is enabled, all lines will
be anti-aliased (smoothed).
"Draw BGImage"
, if this is enabled, the background
image will be drawn.
"Set BGImage"
, may be used to set the current background
image of the view, which should be a TIFF file.
You can also set this image using the view attribute BGImage
.
"Draw Grid"
, if this is enabled the grid will be drawn.
"Use Grid"
, if this is enabled the grid will be used to
constrain modelling actions to grid coordinates.
"Set Gridsize"
, may be used to change the size of the grid
associated with this view. Another way to change the grid size is
to use the grid icon menu on the rightmost side, see below.
"Half Size"
, change width and height to the half of the
current values.
"Double Size"
, change width and height to the double of the
current values.
"From Camera"
, copy camera settings from the currently
selected camera object to the view.
"To Camera"
, copy camera settings to the currently
selected camera object from the view.
"Set FOV"
, lets you specify a field of view value
for the view, and adapts the zoom accordingly. This is just
working for perspective views, of course.
"Zoom to Object"
, adapt the camera settings, so that
the currently selected objects are centered in the view.
"Align to Object"
, align the view to the coordinate
system of the currently selected object or to the parent
object of the current level if no object is currently selected.
"Edit Local"
, if this is enabled modelling will take place
in local object space and not in world space. The grid will be
changed accordingly (interpreted as if defined in the local coordinate space).
See also section
Editing in Local Space.The "Modelling mode"
icon menu may be used to quickly change the current
modelling mode (local, or global, see also section
Editing in Local Space)
The "Drawing mode"
icon menu may be used to quickly change the current
drawing mode, drawing, shading, or drawing and shading.
The "Grid"
icon menu may be used to quickly change the current grid
size:
On the right hand side in the view menu bar there is a little icon
that displays the current grid size. You may click on the icon to
display a menu with predefined grid size values.
Choosing one of the values 0.1, 0.25, 0.5, or 1.0 will set the
grid size of the view to the choosen value and will additionally
enable drawing of the grid and snapping to the grid.
The entry "X"
allows to set a custom grid value.
The last entry will set the grid size to 0.0 and disable drawing of
and snapping to the grid.
If a grid size other than 0.1, 0.25, 0.5, or 1.0 is in effect for the view,
a generic icon (with a X instead of a number) will be displayed in the
icon menu.
Important keyboard commands of a view window (aside from the view menu shortcuts) are discussed in this section. Note that the view keyboard shortcuts only work if the view window has the keyboard input focus.
Keyboard shortcuts directly modifying the camera, that is associated with the view window, are:
<Left>
, <Up>
, <Right>
,
<Down>
rotate viewer around origin.
<Shift+Left>
, <Shift+Up>
, <Shift+Right>
,
<Shift+Down>
pan the view.
<+>
, <->
, or <Add>
, <Sub>
(on the numeric keypad) zoom the view.Interactive actions modifying the camera, that is associated with the view window, are:
<v>
you may move the view with your mouse.
<V>
you move the camera in the direction it is
looking. Note that this affects both, from and to setting of the
virtual camera. Furthermore, this movement will have no visible effect in
parallel views.
<R>
(note the case!) starts rotating the virtual
camera around the point it is looking to.
<Alt>
-key.
<o>
starts zooming the view. Moving the mouse up
zooms in and moving the mouse down zooms out.
<Shift>
-key.
Name | Shortcut | Icon |
Pan View | <v> |
![]() |
Zoom View | <V> |
![]() |
Rotate View | <R> |
![]() |
View Actions Overview
You may also pan/move the view by dragging with the rightmost mouse button and zoom the view with the middle mouse button without affecting any other active view or modelling action.
If you have a wheel mouse and it is configured to send Mouse4 and Mouse5 button events, Ayam will zoom the view when you turn the wheel.
Since Ayam1.15 one may cycle through the view types using
<PgUp>
and <PgDown>
and (since Ayam1.16)
through drawing modes using <Ctrl+PgUp>
and
<Ctrl+PgDown>
.
Using the menu entry "Zoom to Object"
or the corresponding
shortcut <Ctrl+o>
(<O>
for internal views)
one can change the views camera settings so that the selected
objects will be displayed centered in the view window. This is handy
to search for objects or if the user is simply lost in space.
Using the menu entry "Align to Parent"
or the shortcut
<Ctrl+a>
(<L>
for internal views)
one can change the views camera settings so that it is aligned
to the coordinate system of the currently selected object.
This is handy for modelling in local coordinate systems
(e.g. when editing the control points of some planar curve defined in the
XY-plane that has been rotated around the Y-axis).
See also section
Editing in Local Space.
This section describes techniques that you can use for selecting one or more objects within a view.
When the view windows action is "Pick"
you can pick (select) objects
that appear within this view with the mouse.
You can invoke this action by pressing <P>
or make this action the default action using the preference
setting "Modelling/DefaultAction"
. If picking is the
default action, it will be automatically enabled when any other
action is broken using <Esc>
.
Selecting objects within a view is a straightforward operation that uses standard methods. You will use the following two selection operations most frequently:
<Control>
+Click (again with the leftmost mouse button).
Previously selected objects remain selected, and
the newly picked object is added to the selection. Notice that the picked item
must belong to the same level as the previously selected objects. An
alternative method for selecting multiple objects is to drag a rectangle
around them. For more information see
Drag-selecting Multiple ObjectsYou can select multiple objects using the <Control>
+Click method
described in section
Selecting Individual Objects.
An additional method for selecting multiple objects is to drag a rectangle
around those objects. However only objects that belong to the current level
can be picked within a drag-selection. If you want to select multiple objects
that belong to another level you must change the current level by either
selecting it in the tree/listbox or by picking one object from that level
on a view.
The procedure for drag-selecting multiple objects also uses a standard method:
Note that if you press <Control>
during the drag-selection, objects
that are enclosed by the rectangle will be added to the current selection
instead of replacing it.
In some cases Ayam is unable to differentiate between the objects you have selected and other nearby or related objects. This ambiguity can arise as follows:
List of Ambiguous Candidates
If your selection is ambiguous Ayam displays a window that contains a list of
the possible candidates for selection. When you click a name in the list,
the corresponding object is highlighted. Click "Ok"
when you have
determined which object to select or "Cancel"
to close the list and keep
the previous selection unchanged.
Since Ayam 1.11 you can also use a double click in the list of selection
candidates to select an object and immediately close the dialog.
Notes:
"Zoom to Object"
action (shortcut
<O>
) while the ambiguous select listbox is open to get
a better view of the temporarily selected object.
"PickTolerance"
in
Hidden Preference Settings).
The Toolbox
The toolbox window displays some buttons that start interactive
modelling actions, modelling tools, or create objects.
You can open and close it using the main menu entry
"Special/Toggle Toolbox"
.
Note that in contrast to the keyboard shortcuts of the view windows the buttons in the toolbox switch to the modelling actions for all available views. For more information about the actions see section Interactive Actions.
The toolbox window may be configured by the user using the
hidden preference setting "toolBoxList"
in the ayamrc file.
Using this setting you may select from certain groups of buttons
and change the order in which they appear in the toolbox window.
See section
Hidden Preference Settings for
more information.
The toolbox is also open for extension by scripts, see section Script Examples (Toolbox Buttons) for examples.
You may also resize the window to change from the vertical standard
layout to a horizontal one, optimizing the use of precious screen
space. After resizing, the toolbox will re-layout the buttons,
warning you if the space is too small for all buttons to display.
If the window is too big for the desired layout and the
preference setting "Misc/ToolBoxShrink"
is switched on, the
toolbox will shrink wrap the window to match the space occupied by
the buttons.
Furthermore, using the preference setting "Misc/ToolBoxTrans"
the toolbox window can be made transient.
It will then (depending on the window manager or its configuration)
get a different or no decoration, no icon, and will always be iconified
when the main window gets iconified.
Preferences Dialog
The preferences dialog may be opened using the main menu entry
"Edit/Preferences"
or the shortcut <Ctrl+p>
.
Use
"Ok"
to close the preference editor and
apply all changes,
"Apply"
to apply the changes, but leave the editor open,
"Revert"
to reset to the settings that have been loaded on
program startup (these are not the factory defaults, to get back to
the factory defaults, restart Ayam with the command line option
"-failsafe"
or use the main menu entry
"Special/Reset Preferences"
!),
"Cancel"
to close the dialog without applying any changes.
All changes done after the last press of "Apply"
will be lost.Note that while the preference editor is open, AutoFocus is temporarily
turned off and changes to the "AutoFocus"
preference setting will
only be realized after the editor is closed.
The preferences are divided into five sections as follows.
The "Main"
section contains the most important application setup
related preference settings.
Since Ayam 1.14, unused settings will not be shown anymore, e.g. on the
Win32 platform, the "TwmCompat"
setting will be hidden.
"Shaders"
contains a number of paths (separated by a colon
":"
on Unix and by a semicolon ";"
on Win32) where Ayam looks
for compiled shaders (e.g. files with the extension ".slc"
that
have been compiled with slc from BMRT). Using the "Add"
button,
you may easily add another path, simply press the button and select a
file from the directory you want to add. Note that currently the
filename of a compiled shader may contain just two "."
at maximum.
The environment variable SHADERS will be adapted to match the contents
of this preference setting, so that renderers started by Ayam see
exactly the same shaders as Ayam through the "Shaders"
preference
setting.
Note that this does of course not affect any renderers that are started
outside the Ayam context.
"Scan for Shaders!"
initiates a rebuild of the internal
shader database. All shaders in the directories specified by
the "Shaders"
preference setting will be scanned and entered in
that database.
Watch the console for error messages that may appear while scanning.
See also section
Shader Parsing for more
information on scanning shaders.The next sub-section contains GUI (user interface) related settings.
"Locale"
, sets a language for the balloon help texts,
the default value menu shows all currently available locales.
The value will have no effect until Ayam is restarted!
"SingleWindow"
toggles, whether Ayam should create just
one main window with internal views and toolbox or use the old
floating windows style GUI. The new single window GUI mode is enabled
by default.
"AutoResize"
toggles, whether the main window
should be resized horizontally according to the property GUI whenever
a new GUI is displayed.
This option is not available in the single window GUI mode.
"AutoFocus"
controls whether Ayam should automatically
move the focus to a view or the main window, when the mouse pointer
enters it. However, depending on your operating system, window manager,
or their settings, this may only work correctly, when a window
of Ayam already has the focus. On some operating systems or window
managers AutoFocus might not work at all. Furthermore, note that moving
the focus to a window might also raise it.
In single window GUI mode, AutoFocus additionally manages the input
focus of the internal views, tree view, property GUI, and console.
While the preference editor is open, AutoFocus is temporarily
turned off and changes to the "AutoFocus"
preference setting will
only be realized after the preferences editor is closed.
"TwmCompat"
changes, how Ayam tells the window manager
new geometries of windows. This option has to be toggled if Ayam
fails to correctly remember the geometry of the main window between
two invocations or if the main window jumps downward when properties
are selected.
This option is not available on the Win32 platform and on MacOSX Aqua.
"AutoSavePrefs"
, if this is switched on, Ayam will write
the preferences settings to the ayamrc file when the program quits.
"BakOnReplace"
, if this is switched on, Ayam will make
a backup copy of each scene file it loads via the main menu entry
"File/Open"
or via the most recently used list.
The backup file will be placed right next to the loaded file
and get an additional file name extension according to the hidden
preference setting "BackupExt"
.
"AddExtensions"
, this option may be used to let Ayam
automatically add file name extensions to saved files (if they
do not have already a proper extension).
"EnvFile"
; This file typically contains some view
objects to create a standard 2-, 3-, or 4-view working environment
and is automatically loaded upon startup of Ayam (if the hidden
preference option "LoadEnv"
is switched on) and upon clearing
the scene using "File/New"
(if the hidden preference option
"NewLoadsEnv"
is switched on).
See also section
Hidden Preference Settings.
"Scripts"
is a list of Tcl scripts that will
be executed on startup. Since Ayam 1.16, the scripts do not
have to be specified with full path and filename anymore. Furthermore,
the plugins directories are automatically searched, and the tcl extension
is automatically added, so that a setting of "colfocus;loadayslx"
would load the colfocus script from the scripts directory and the
ayslx shader parsing plugin from the plugins directory.
If non absolute paths are used they are relative
to the current directory of Ayam on application startup (which is typically
the directory where the Ayam executable resides).
Multiple entries have to be separated by a colon (":"
) on Unix and by
a semicolon (";"
) on Win32.
"Plugins"
is a list of directories that contain custom
objects or plugins. Those directories will e.g. be searched for
custom objects when unknown object types are encountered while reading
Ayam scene files. If a matching custom object is found, it will be
automatically loaded into Ayam, so that scene loading may proceed without
an error. If non absolute paths are used they are relative
to the directory where the Ayam executable resides.
Multiple entries have to be separated by a colon (":"
) on Unix and
by a semicolon (";"
) on Win32.
"Docs"
is an URL that points to the documentation in
HTML format.
"TmpDir"
is the directory, where temporary RIB files are
created, e.g. when rendering directly from view windows.The preference settings "ListTypes"
, "MarkHidden"
,
"LoadEnv"
, and "NewLoadsEnv"
are hidden preference
settings since Ayam 1.14, see section
Hidden Preference Settings.
The next section of the preferences, "Modelling"
,
contains modelling related settings:
"PickEpsilon"
is used by the single point editing actions
(see section
Editing Points)
to determine which point (vertice) of an object has been selected.
A smaller "PickEpsilon"
means more exact picking.
The value of "PickEpsilon"
should be positive. In older versions
of Ayam (prior to 1.8), a value of 0.0 was allowed. This is no longer the
case.
"LazyNotify"
determines whether notification shall
occur on all mouse movements or just on release of the mouse button,
for the interactive modelling actions.
Notification is the mechanism used to inform objects that rely
on certain child objects (e.g. the Revolve tool object) about
changes of their child objects, so that the parent can adapt
to the child objects automagically
(see also section
The Modelling Concept Tool-Objects).
"CompleteNotify"
determines when notification of all objects
depending on references of changed objects takes place:
"Never"
, for manual control of complete notification
(manual complete notification can be carried out using the main
menu entry "Tools/Force Notification"
);"Always"
, a complete notification is done whenever the
normal notification is carried out;"Lazy"
, the complete notification runs
only after a modelling action finished (when the mouse button is
released)."EditSnaps"
determines, whether points
should be snapped to the grid when a grid is defined and
in use for the single point modelling actions.
"Snap3D"
controls, whether points that are snapped to
grid coordinates (in single point editing actions and when grids are active)
should be influenced in all three dimensions, or just the two dimensions
determined by the type of the view.
"FlashPoints"
controls flashing of editable points in
the single point modelling actions when they would be modified by
a click and drag action.
Note that a change of this preference option takes effect after the
current modelling action has been switched off and the single point
editing has been activated (again).
"GlobalMark"
toggles whether each view should manage its
own mark (off, default), or whether there should be just one global
mark (on).
"DefaultAction"
determines the modelling action
that should be active after a press of the <Esc>
key.
"UndoLevels"
determines the number of modelling steps
that should be saved in the undo buffer. Useful values range
from 2 to 50 (depending on how much memory you like to spend).
If you set "UndoLevels"
to -1, the undo system will be disabled
completely.
For more information, see also the section
The Undo System.The preferences in the "Drawing"
section let you specify
how objects are being drawn:
"Tolerance"
is in fact GLU sampling tolerance, used to
control the quality of the sampling when rendering a NURBS curve
or NURBS patch using GLU.
Smaller tolerance settings lead to higher quality. Useful values
range from 1 to 100.
This setting has no effect for objects that override it
using a local tolerance setting different from 0.
"NPDisplayMode"
sets the display mode for NURBS patches.
Either the control hull (or control polygon) is drawn (ControlHull), or
just the outlines of the polygons created by the tesselation
(OutlinePoly), or just the outlines of the patch (OutlinePatch).
Note that this setting just affects the drawing of patches if
the view is not in shaded mode.
Note also, that this setting has no effect for objects that override it
using a local DisplayMode setting different from "Global"
.
"NCDisplayMode"
sets the display mode for NURBS curves,
The control hull (control polygon) or the curve or a
combination of both may be displayed.
Note that this setting has no effect for objects that override it
using a local DisplayMode setting different from "Global"
.
"UseMatColor"
determines, whether the shaded representation
uses the color defined by the material of an object for
rendering.
"Background"
, "Object"
, "Selection"
, "Grid"
,
"Tag"
, "Shade"
, and "Light"
let you set colors that
will be used when drawing or shading.The "RIB-Export"
section of the preferences contains settings that
affect how RIBs are created.
"RIBFile"
allows to set the file Ayam is exporting
RenderMan Interface Bytestreams (RIBs) to. Note that some
filenames have special meaning:
If you set "RIBFile"
to "Scene"
(this is the default)
the RIB file name will be derived from the name of
the currently loaded scene with the last extension replaced by
".rib"
. If you set "RIBFile"
to "Scenefile"
, the leading
path will be stripped from the scene name additionally.
Use "Scenefile"
, if you render with shadow maps.
This way the scene will use relative paths to
load the shadow maps and you may move
the RIBs around more easily.
"Ask"
is another special setting, that allows
to select a different filename each time you export a RIB file.
A file selection dialog will pop up, after the selection of the
view to export.
The same effect may be achieved by leaving "RIBFile"
totally
empty!
If you set "RIBFile"
to "rendrib"
,
libribout.a does not create a RIB file at all, but immediately pipes the
resulting byte stream into rendrib (the BMRT renderer) for rendering.
The same goes for "rgl"
.
Moreover, filenames that start with a pipe symbol "|"
will
cause the program behind the pipe symbol to be started by libribout
and the written RIB to be piped into. This works e.g.
with Photorealistic RenderMan, try it out with "|render"
.
In the latter cases of direct rendering, you will probably want to set
up the RIB to render to the display (read leave the "Image"
preference setting empty.
However, when you use these options of direct rendering, be warned, that
for the time of the rendering Ayam will be frozen (it will neither
respond to mouseclicks nor will it update any windows), until the
rendering is finished and the display window of the renderer is closed.
"Image"
specifies the image file that will be created,
when you render the exported RIB file.
You may set it to "RIB"
, this will create image
files that are named as the exported RIB file (with the last
file extension replaced by ".tif"
). Again, setting
it to "Ask"
will cause a dialog box to appear,
each time you export to a RIB file.
Note that in contrast to the "RIBFile"
option leaving the field
totally empty is not equal to entering "Ask"
but generates
RIB files that will be set up to render to the display.
"ResInstances"
, if this is enabled all instance
objects are resolved (temporarily) before being written to the RIB file.
"CheckLights"
, if this is enabled Ayam will
check the current scene for lights before RIB export. If no lights or
no lights that are actually switched on are to be found in
the scene, a distant headlight will be added to the scene
automatically for RIB export.
"DefaultMat"
determines a default material setting
that should be written in the top level of the RIB, so that it
is in effect for all objects, that are not connected to a material
object. Many RenderMan compliant renderers will not render the
objects at all, if no material is defined.
The default "matte"
, writes just a simple
RiSurface "matte"
(without parameters) to the RIB.
The setting "default"
looks for a material object named
"default"
and writes it's complete shaders and attributes,
if it does not find such a material it falls back to "matte"
.
The setting "none"
does not write any default material setting.
"RIStandard"
determines whether Ayam
should omit all non standard RenderMan interface options and
attributes on RIB export.
"WriteIdent"
determines, whether Ayam should
write special RiAttributes
(RiAttribute "identifier" ["name"]
)
with the names of the objects to the RIB to aid in RIB file debugging.
"ShadowMaps"
determines, whether shadow maps should
be used, when writing light sources. It is not sufficient
to switch this on to render using shadow maps, light sources
that shall use shadow maps have to be parameterised
as well, see section
Using ShadowMaps.
If "ShadowMaps"
is set to "Automatic"
, the
exported RIBs will automatically render and use all shadow maps;
if it is set to "Manual"
, the shadow maps will be rendered on
user request only (e.g. using the view menu entry:
"View/Create All ShadowMaps"
). "Manual"
should be used,
when rendering directly from view windows with shadow maps.
"ExcludeHidden"
causes hidden objects not to be
exported to RIB files.
"RenderMode"
allows to switch between two different methods
of forcing a renderer to render to the screen (via a RiDisplay statement
in the exported RIB, necessary for e.g. PRMan and RDC;
or via a command line argument, e.g. -d
for rendrib from BMRT).
"QRender"
determines the command that should be executed,
upon quick rendering a view, %s
denotes the name of the RIB file.
"QRenderUI"
, enables the Rendering GUI for quick rendering,
see discussion of "RenderUI"
below.
"QRenderPT"
, progress template for quick rendering,
see discussion of "RenderPT"
below.
"Render"
determines the command that should be executed,
upon normal rendering of a view, %s
denotes the name of the RIB file.
"RenderUI"
enables the renderer user interface (Rendering GUI),
which consists of a simple progress bar, a label that displays the
estimated or elapsed rendering time, a checkbutton to control
ringing the bell when the rendering is finished,
and a cancel button. This GUI is displayed
when a renderer is invoked directly from a view window
using the "Render"
view menu entry (or the equivalent keyboard shortcut).
Proper work of this GUI depends on the existence of
two external programs: "cat"
and "kill"
(those programs
should be available on every Unix platform). If you do not have
those programs in your path, do not enable the RenderUI option.
On the Win32 platform you may also use an internal kill command
"w32kill"
that has been introduced in Ayam 1.4.
See also section
Hidden Preference Settings.
"RenderPT"
is a string that contains a progress output
template used by Ayam to determine the current percentage of completion
of the rendering for display in the Rendering GUI. The special symbol "%d"
denotes the position of the percentage number in the output of the renderer.
For rendrib from BMRT2.6 this should be set to "R90000 %d"
and
the special command line option "-Progress"
should be used.
For rendrib from BMRT2.5 it should be set to "Done computing %d"
and no special option has to be given to the renderer.
If the output of the renderer contains variable strings before
the progress number, a second variant of parsing the output using
regular expressions is available since Ayam 1.6. In this case, the
progress template should be a complete regexp command for Tcl
that parses the string contained in the variable named "string"
and puts the parsed progress number into a variable named "progress"
.
Here is an example that works with Pixie-1.2.1, which outputs
strings like "fish.rib (222): - 10.00 percent"
:
regexp -- {^.* - (\[0-9\]+)} string dummy percent
"SMRender"
, renderer to use for the rendering of shadow maps
(e.g. view menu entry "View/Create All ShadowMaps"
),
see also section
Using ShadowMaps.
%s
denotes the name of the RIB file.
"SMRenderUI"
, enables the Rendering GUI for the rendering
of shadow maps, see discussion of "RenderUI"
above.
"SMRenderPT"
, progress template for the rendering
of shadow maps, see discussion of "RenderPT"
above.
"SMFileFormat"
, designates the file format of the shadow maps,
use "zfile"
for RenderMan and "shadow"
for Gelato.
"SMFileType"
, type of shadow maps to be created, currently
available types are "z"
- normal shadow maps (for RenderMan
renderers and Gelato), "avgz"
- Woo shadow maps (for Gelato only!),
and "volz"
- volume shadow maps (for Gelato only!).
"SMChangeShaders"
, toggles, whether Ayam should automatically
prepend a "shader" to light shader names for lights that use shadow maps
upon RIB export. Not changing the shader names is necessary for Gelato.
"PPRender"
is the name of the renderer to use for the
permanent preview feature (see also section
View Menu).
This setting is just available, if the compile
time option AYENABLEPPREV
has been set.
This option is not set for the official Ayam binaries.Note that you can set many renderer related preferences at once using the
select renderer tool via the main menu Special/Select Renderer
(see also section
Special Menu). In fact,
using Special/Select Renderer
first, then fine tuning your
renderer setup using the preferences editor is the suggested way to
switch Ayam to a certain RenderMan renderer.
The ("Misc"
) section of the preferences contains the dreaded
miscellaneous settings.
The first sub-section deals with error message handling:
"RedirectTcl"
controls, whether error messages
stemming from Tcl/Tk should be redirected to the console,
rather than be handled by Tcls sometimes annoying error
handling dialog box. However, this dialog box with the built in
stack trace can also become very handy, while writing and debugging
Tcl scripts.
"Logging"
determines, whether error messages should
be written to the file specified by "LogFile"
.
If this is enabled, you should clear the log manually from time
to time, as Ayam will always append to "LogFile"
.
"LogFile"
; see above.The last sub-section contains miscellaneous user interface related preferences:
"SaveAddsMRU"
; if this is switched on, saving to a file
will add that file to the most recently used files list in the
main menu for quick access.
"ToolBoxTrans"
; controls whether the toolbox window
should be declared as a transient window of the main window.
It will then, depending on the window manager or its configuration,
get a different or no decoration, no icon (or no entry in the
task bar on Windows), and will always be iconified
when the main window gets iconified.
"ToolBoxShrink"
; controls whether the toolbox window
should automatically shrink-wrap around the calculated layout
of the buttons after a resize operation.
"RGTrans"
; controls whether the RenderUI-windows
should be declared as a transient window of the main window.
See the discussion of "ToolBoxTrans"
above for more information
about transient windows.
"HideTmpTags"
may be used to hide tags that are marked
temporary (internal tag types do so) from the tag property GUI.
"TclPrecision"
; this is the precision Tcl handles floating
point numbers with. You may want to decrease this number to about 5
if any numbers in the entry fields are represented in an exact, but also
too lengthy and hard to read fashion, like 0.4999999 instead of 0.5.
Note that you may lose information in doing so. The default value used
by Tcl is 12 and results in no loss of information. The default value
used by Ayam is 6 and should result in a good balance between precision
and readability.
"SavePrefsGeom"
controls when the geometry of the preferences
editor should be remembered by Ayam, "Never"
: the window is always
opened in standard size, centered on the screen; "WhileRunning"
:
the window width and position will be remembered as long as Ayam is
running; "Always"
: the window width and position will be remembered
in the saved preferences, thus, also surviving a restart of Ayam.
Note that the height of the preferences window will always be adapted
to the currently open preferences section, no matter how "SavePrefsGeom"
is set.
"SMethod"
; is the sampling method used by the NURBS to PolyMesh
(tesselation) facility (based on GLU V1.3+). Five methods are available:
"DomainDistance"
(the default) simply tesselates the NURBS into equally
sized pieces with regard to parametric space; "SParamU"
and
"SParamV"
control the number of sampling points in U and V direction
respectively per unit length.
This leads to different numbers of samples for knot vectors
of different length in parameter space!
The tesselation method "PathLength"
ensures that no edge of a
polygon generated by the tesselation is longer than the value specified
by "SParamU"
and the tesselation method "ParametricError"
ensures that the distance between the tesselated surface and the original
surface is no point bigger than the value specified by "SParamU"
.
Note that "SParamU"
is expressed in object space units for the
"PathLength"
and "ParametricError"
tesselation methods.
To overcome the limitations of the "DomainDistance"
tesselation
method, Ayam 1.9 supports two new modes "NormalizedDomainDistance"
and "AdaptiveDomainDistance"
, where "NormalizedDomainDistance"
ensures that the tesselation creates the same number of sample
points (as given via "SParamU"
and "SParamV"
) for any
knot vector and "AdaptiveDomainDistance"
additionally adds
sample points dependend on the number of control points (width or
height of the patch) to provide a better adaptation to complex patches.
"SParamU"
; is a parameter for the sampling method above.
The default value for the sampling method "DomainDistance"
is 10. Higher
values lead to better quality and more tesselated polygons.
The default value for the sampling method "PathLength"
is 30.
Smaller values lead to better quality and more tesselated polygons.
The default value for the sampling method "ParametricError"
is 0.5.
Smaller values lead to better quality and more tesselated polygons.
"SParamV"
; is just available for the tesselation modes
"DomainDistance"
, "NormalizedDomainDistance"
, and
"AdaptiveDomainDistance"
.