Next Previous Contents

2. The Ayam GUI

This section describes the user interface of Ayam.

The user interface of Ayam is composed of 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.

Until Ayam 1.14 all those windows were always separate 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 toolbox 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.

Single Window GUI Mode

The next sections document the three types of windows (main, toolbox, and views) in detail.

2.1 Anatomy of the Main Window

The main window is split into three major areas:

  1. an area named "Objects:"
  2. an area labeled "Properties:"
  3. and a text widget (the so called "Console")

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, move the 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.

 

Objects

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 this object can not be deleted or copied.

Object Tree View:

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). Further speedups may be achieved with the help of the DTree script (see section Dynamic Tree).[∗]

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:

The scene may also be navigated and objects may be selected using the keyboard: [∗]

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.

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:

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:

The scene may also be navigated and objects may be selected using the keyboard: [∗]

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.

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

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 multiple entries can be selected, 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).

Also 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 contains the linear transformations in most cases.[∗]

The properties listbox also has a context menu. The entries in this menu allow to:

Property GUIs

All property GUIs use more or less standardized GUI elements that are organized in list form, see also the image above. The lists may be scrolled if they get too long to fit into the window.

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.

If Ayam is in floating windows GUI mode and the elements of the current property GUI do not fit horizontally into the screen space that is defined by the main window size, Ayam can automatically resize the main window. This behaviour may be controlled 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, hit the <Esc> key three times, or use the context menu of the properties listbox to de-select the current property.

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.

However, holding down the "Shift" button while interacting with the property GUI or pressing the "Return" key when entry widgets have the keyboard input focus will lead to an instant application of all changed values.[∗]
Note that property GUIs of custom objects may offer interactive elements that also do an instant "Apply" operation. But most property GUI elements of the core objects of Ayam do not change anything until the "Apply"-button is used.

All changes to the arguments of a property that have been made since either opening the property or the last "Apply" operation (whatever was last) can be reverted with the "Reset"-button. Mind that this does not use the undo mechanism of Ayam but rather copies Tcl data, just like the property clipboard.

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. This may be accomplished easily using the <Esc> key.

Property Clipboard

With the help of the property clipboard arbitrary property data may be copied from one and then pasted to another object. See the "Edit" menu for access to this functionality.

Pasting a property to multiple selected objects does work too. This is a great way to apply e.g. a parameterised surface shader to a bigger number of material objects, without going the long way of setting a new shader and entering parameters for it for every material 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 selected parameters will then be preceded by an exclamation mark (!) in the property GUI.

If this property is then copied, all marked parameters will be omitted.

It is also possible to copy just the selected parameters using "Copy Marked Prop".

A simple example for such advanced use of 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 individually adjusted opacity values. We can solve this by copying just the color attribute, but leave all other attributes as they are:

  1. Change the color of a first material object using the "Attributes" property GUI. (Do not forget the "Apply" button!)
  2. Mark the color parameter as to be copied using a double click on the text "Color"; it should read "!Color" now.
  3. Copy just the color parameter to the property clipboard, using "Copy Marked Prop" in the "Edit" menu or the hot key <Ctrl+I>.
  4. Select all other material objects.
  5. Paste the property using "Paste Property" or <Ctrl+V>.
  6. All done.

An even more advanced application of the property clipboard is to paste property values to different types of properties (e.g. pasting parameters from a surface shader to a displacement shader, or pasting a radius value from a sphere to a disk). This can be done using "Paste Property to Selected" in the "Special/Clipboard" sub-menu.
However, 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.

 

The Console

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. It is also possible to 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).

Furthermore, commands or even complete new Tcl procedures can be directly entered 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).

Remember that many commands of the Ayam scripting interface work in background: without update of object selection widget, property GUI or redrawing of view windows. But it is possible to enforce an immediate update of the GUI and redrawing of all views by using <Shift-Enter> instead of <Enter> when entering commands.

Another simple demonstration of the consoles capabilities:

This example uses three procedures:

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 can be opened with the right mouse button).

2.2 Main Menu

This section discusses the main menu bar.

Note that many menu entries have keyboard shortcuts that are displayed in each entry. But those shortcuts only work if the main window has the keyboard input focus and the input focus is not in the console or in a property GUI element (i.e. a data entry field). Hit <Esc> to set the focus to the object selection widget and thus enable the main menu keyboard shortcuts.

These keyboard shortcuts may be adapted using the ayamrc file (see section Ayamrc File).

Another way of navigating the menu is via the <Alt> or <Menu> key, pressed together with the various underlined characters in the menu entries. Once a menu is open, it may also be navigated with the cursor keys. The <Return> key invokes the currently selected menu entry and the <Esc> key closes the menu.

The "File" menu deals with standard file operations:

The "Edit" menu contains object and property clipboard operations, selection and undo actions, hosts the object search, and lets you open the preferences editor:

The "Create" menu entries let you create objects. In contrast to the object creation via the toolbox some menu entries open small dialogs, where parameters for the object to be created may be adjusted. The entry fields in those dialogs support Tcl expressions as detailed in section Expression Support in Dialog Entries. Here are the entries of the Create menu:

The "Tools" menu hosts modelling tools to create complex objects or modify existing objects. Some tools open dialog windows to request parameters. The entry fields in those dialogs support Tcl expressions as detailed in section Expression Support in Dialog Entries. The entries of the "Tools" menu are:

The "Custom" menu is initially empty. Custom objects and plugins may create entries here.

The "Special" menu contains seldom used tools:

The "Help" menu:

2.3 Main Window Keyboard Shortcuts

An important group of shortcuts is available on the function keys:
<F1> has already been mentioned, it opens a web browser and displays the URL from the "Docs" preference setting.
<F2> and <F3> lower and raise the global GLU sampling tolerance value respectively, allowing fast adjustment of the NURBS drawing/shading quality.
<F4> toggles between display of NURBS control cage and true curves / surface outlines.
<F5> rebuilds the object tree and issues a complete notification, then all views (even those with disabled AutoDraw[∗]) will be drawn. It is therefore helpful to update the complete GUI after changes made to the scene using the scripting interface in the console.
<F6> toggles lazy notification.

<Ctrl+A> is bound to the "Apply" and <Ctrl+R> to the "Reset" button of the property GUI.

The object selection can be manipulated by the cursor keys, see also section object tree shortcuts and section object list shortcuts.

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.

Many main menu entries have direct keyboard shortcuts, displayed directly in the menu entries, see also section Main Menu.

Note that the main window keyboard shortcuts only work if the main window has the keyboard input focus and the input focus is not in the console or in a property GUI element (i.e. a data entry field). In doubt, hit <Esc> first to set the focus to the object selection widget and thus enable the main window keyboard shortcuts.

All these shortcuts can be adapted using the ayamrc file (see section Ayamrc File).

2.4 Anatomy of a View

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.

The current modelling action, modelling mode, drawing mode and grid size are also displayed as a set of icons on the right hand side of the view menu bar.

2.5 View Menu

This section discusses the view menu bar.

Note that many menu entries have keyboard shortcuts that are displayed in each entry. But those shortcuts only work if the view window has the keyboard input focus. The shortcuts are adaptable using the ayamrc file (see section Ayamrc File).

Another way of navigating the menu is via the "Menu" or "Alt" key, pressed together with the various underlined characters in the menu entries.

Here are all entries of the "View" menu:

The "Type" menu entries:

may be used to change the type of the view, which restrains the scope of certain modelling actions. See sections View Object, View Window Shortcuts and Actions, and Modelling Actions for more information.

The "Configure" menu may be used to change preferences of the view. Some preferences are outlined in greater detail in section ViewAttrib.

Apart from the text based menus documented above, there are also some icon based menus in the view window menu bar:

The "Action" icon menu hosts basic selection actions.[∗] The menu button of this menu also always conveys the currently active modelling action. See also the image below:

Action Icon Menu

The selection actions are:

The action icon menu can be configured using a dialog that opens when the rightmost mouse button is pressed on the menu button or via the "SetActionMenu" entry in the "Misc" preference section.[∗] See also the image below.

Action Icon Menu Configuration

Selected entries can be moved to the respective other side using the "<" and ">" buttons, the new entry will be inserted above the selected entry on the other side; the "O" button resets to the last saved configuration. The additional selection actions are:

The "Modelling Mode" icon menu may be used to quickly change the current modelling mode (global or local, see also section Editing in Local Spaces). Apart from a different icon, the local modes will display a L or O in the lower right corner of the icon.
The icon, additionally, conveys whether objects or points would be modified by a modelling action: for points, a red dot will be present in the upper right corner of the icon (see also section Transforming Objects or Selected Points). The modelling scope may also be toggled directly by clicking on the menu button with the rightmost mouse button.[∗]
Furthermore, the type of the view will be displayed in the upper left corner of the icon as letter F, S, T, or P for front, side, top, or perspective views, respectively. Views of type Trim get no designating letter in the icon. See also the image below:

Modelling Mode Icon Menu

The "Drawing Mode" icon menu may be used to quickly change the current drawing mode, drawing, shading, drawing and shading, or hidden wires. See also the image below:

Drawing Mode Icon Menu

See section Drawing Modes for a discussion of the different drawing modes.

Finally, 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 chosen 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. See also the image below:

Grid Icon Menu

2.6 View Window Shortcuts and Actions

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.

These shortcuts can be adapted using the ayamrc file (see section Ayamrc File).

Keyboard shortcuts directly modifying the camera, that is associated with the view window, are:

See section Revert Cursor Key Behavior for a script that swaps the rotate and pan cursor key bindings in parallel views.

Interactive actions modifying the camera, that is associated with the view window, are:

See also the table below.

NameShortcutIcon
Pan View<v>
Zoom View<Z>
Rotate View<R>

Interactive 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.

Similarly the view can be rolled when the mouse wheel is turned with the <Control> key held down.[∗]

<PgUp> and <PgDown> allow to cycle through the view types.[∗]

<Ctrl+PgUp> and <Ctrl+PgDown> cycle through the drawing modes.[∗]

<Insert> and <Delete> cycle through the grid sizes.
<Shift-Insert> and <Shift-Delete> modify the current grid size.[∗]

Using the menu entry "Zoom to Object" or the corresponding shortcut <BackSpace> the views camera settings can be changed 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.

Closely related to the latter is the "Zoom to All" action, bound to the <Shift-BackSpace> key. This action adjusts the camera settings so that all objects in the scene will be visible, regardless of current level and object selection.

Note that both, zoom to object and zoom to all, adjust the clipping planes to the extents of the affected objects and also adapt the position of the light source used for shading.[∗] This facilitates working with very large and very tiny objects.

Using the menu entry "Align to Object" or the shortcut <Ctrl+a> (<L> for internal views) the views camera settings can be changed so that the view 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 Spaces.

It is also possible to move through the scene hierarchy and change the selection directly in view windows:[∗]

2.7 Drawing Modes

This section explains the draw modes available in Ayam.

The draw mode "Draw" shows a simple wire-frame representation of the scene, see the following image:

Draw Mode "Draw"

The draw mode "Shade" displays the scene as shaded surface lit by a single headlight, see also the following image:

Draw Mode "Shade"

The draw mode "ShadeAndDraw" combines the images of the modes "Shade" and "Draw", see also the following image:

Draw Mode "ShadeAndDraw"

The drawing mode "HiddenWire" works like the shade and draw mode, where the surface shading part is only used to remove hidden bits. In addition, silhouette edges are detected and drawn. For best results, use it with anti-aliasing.

The silhouette detection is shading the scene a second time in a special multi-colored lighting setup. Then, edges are detected in the Z-buffer and color buffer data. The edge detection in the Z-buffer profits from tight-fitting clipping planes. A good clipping plane setup can be easily achieved by the "Zoom to Object" action (shortcut <BackSpace>).
If anti-aliasing is not enabled, the resulting edge map is processed by morphological thinning and removal of pixels in the direct vicinity of pixels already drawn, to get one pixel wide lines.
Finally, the edge map is used as a largely transparent texture (except for the edges) on a full-screen quad, which is drawn as last object. In case of anti-aliasing, the quad will be drawn four times. See also the image below.

Draw Mode "HiddenWire"

The silhouette detection is a slow process and therefore only performed when no interactive action is in progress. The following image shows what will be drawn during interactive actions, compare it also to the complete image above.

Draw Mode "HiddenWire" without Silhouettes

The drawing mode "Isophotes" allows to assess the surface quality of parametric surfaces by visually analyzing the continuity of lines drawn on said surfaces. This way, discontinuities and irregularities that are not visible in the shaded drawing mode can be detected more easily.
This drawing mode also shows discontinuities in the transitions between adjoining surfaces, see also the example image below, showing a transition between a NURBS torus and a NURBS cylinder that is not curvature continuous.

"Isophotes" Example (Transition between NURBS Torus and Cylinder)

2.8 The Toolbox

The Toolbox

The toolbox displays some buttons that start interactive modelling actions, modelling tools, or create objects. The toolbox can be opened and closed using the main menu entry "Special/Toggle Toolbox" unless Ayam is in single window GUI mode.

Note that in contrast to the keyboard shortcuts of the view windows, the buttons in the toolbox may switch to the modelling actions for all open views. This is the case if Ayam is in single window GUI mode and AutoFocus is enabled or if Ayam is in multi window GUI mode. For more information about the actions see section Modelling Actions.

Furthermore, the modelling scope may be immediately switched to point when starting a transformation action using the rightmost mouse button.[∗] See also section Transforming Objects or Selected Points.

When creating objects, holding down the <Ctrl> key while pressing the corresponding toolbox button will keep the objects selected. This is especially useful for objects that would move the currently selected objects to themselves as children (Level, Revolve, Skin etc.).

Several other tool buttons also change their behaviour with modifier keys, check the tooltips.

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 hidden preference setting "ToolBoxShrink" is switched on, the toolbox will shrink wrap the window to match the space occupied by the buttons. Furthermore, using the hidden preference setting "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.

2.9 Object Search

Object Search Dialog

The object search facility allows to find objects in the scene hierarchy according to many different, even script defined criteria and highlight them in the tree view or execute arbitrary actions on them.[∗] Object search is controlled by a dialog, see also the image above.

Note, that the object search dialog is not closed immediately after a search operation, this allows multiple search operations with possibly refined parameters.

The first two options "Expression" and "Action" let the user specify which objects to find and what to do with them, they are explained in depth in the respective sections below.

Using the parameter "Scope" the search may be limited to certain sets of objects. By default, when scope is "All", all objects in the scene are processed, even if the current level is not the root level and no objects are selected.
If the scope is "Selection" just the selected objects and their children will be searched.
If the scope is "Level" all objects of the current level regardless of selection but again including all children will be searched.
If the scope is "Collection" just the objects found by the previous search are searched.
Note that the clipboard is never searched.

More options are made available, when the "Advanced Options" button is pressed.

The option "HighlightColor" defines the color to be used by the "Highlight" action.

If the options "ClearHighlight" or "ClearClipboard" are switched on, the highlights and the object clipboard are cleared before a search starts respectively.

Finally, "InvertMatch" reverts the search logic: if enabled, the search finds all objects for whose the search expression delivers a negative result.

 

Search Expressions

When just a simple string is used as search expression, this string is matched against the types, names, and materials of the objects to be searched in a case insensitive manner.[∗] The matching allows usage of "*" (matches any sequence of characters), "?" (matches a single character), and character ranges specified like this "[A-z]". To match any of *?[] precede them with a backslash.

If the search expression starts with a "$", "(", or "[" it is considered a special expression.

The following special search expressions are defined:

Type

find objects of a certain type, for example

$type == "Sphere"
finds all spheres.

Name

find objects of a certain name, for example

$name == "objname"
finds all objects with the name objname.

Material Name

find objects of a certain material, for example

$mat == "matname"
finds all objects with the material matname.

Property Value

find objects with a certain property value, for example

$SphereAttr(Radius) == 0.5
finds all spheres with radius 0.5.

Master

find the master of the currently selected instance.

Instances

find all instances of the currently selected master, or if the currently selected object is an instance, find all instances with the same master.

Procedure Call

find objects for which a procedure or command returns 1, for example

[hasChild]
finds all objects that have children.

See section Interrogating Objects for a listing of available commands.

Complex logical expressions may also be created, like e.g.

($type == "Sphere") && ($mat == "wood")
which finds all wooden sphere objects. Due to the way the expressions are evaluated, the use of the braces is imperative even for a little bit more complex expressions that use the negation operator:
(![hasChild])

Also note that all string based comparisons of e.g. types or names via "==" are case sensitive.

The default value menu of the "Expression" entry is pre-seeded with meaningful entries when the search dialog is opened. What exactly appears in this menu is controlled by the first of the selected objects. For instance, if the selected object is a material, the material entry will contain the material name fetched from this object and will be one of the first entries, so that searching for objects of this material is just a matter of two mouse clicks. If the object is an instance, the first two entries in this menu will be "Master" and "Instances".

 

Search Actions

During a search, for every object that matches the given expression the object will be selected and an action will be executed. The following special actions are defined:

Highlight

All found objects will be colored in the object tree, see also the following image.

Object Search Result of Search String "clay"

Highlighted objects stay highlighted until the tree view is updated completely (e.g. via the keyboard shortcut <F5>) or partially (for instance after drag and drop or object clipboard operations).

Count

The objects matching the search expression will be counted and the result output to the console.

Collect

The node names of the found objects will be collected in the Tcl list "ObjectSearch(nodes)". This list can then be used for post-processing by scripts without the restrictions imposed by the "forAll" command.

Copy

The found objects will be added to the clipboard.

Delete

The node names of the found objects will be collected, then the list of objects will be processed so that delete is safe, then the objects will be deleted from the scene.

In addition to these special actions, a command / procedure call, like e.g.
convOb -inplace
or
addTag NoExport ""
can also be specified as action. However, as the object search is based on the "forAll" scripting interface command, certain restrictions apply:

See also section Procedures and Commands for a listing of available commands.

If the search action is empty, the objects will just be searched and a count of the matches will be reported.[∗]

The special action "Highlight" also collects the found node names in the global Tcl list "ObjectSearch(nodes)".

2.10 Preferences

Preferences Dialog

The preferences dialog may be opened using the main menu entry "Edit/Preferences" or the shortcut <Ctrl+p>.

Use

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.

 

Main Preferences

The "Main" section contains the most important application setup related preference settings.

Note that unused settings will not be shown, e.g. on the Win32 platform, the "TwmCompat" setting will be hidden.[∗]

The next sub-section contains GUI (user interface) related settings.

The preference settings "ListTypes", "MarkHidden", "LoadEnv", and "NewLoadsEnv" are hidden preference settings since Ayam 1.14, see section Hidden Preference Settings.

 

Modelling Preferences

The next section of the preferences, "Modelling", contains modelling related settings:

 

Drawing Preferences

The preferences in the "Drawing" section let you specify how objects are being drawn:

 

RIB-Export Preferences

The "RIB-Export" section of the preferences contains settings that affect how RIBs are created.

Note that many renderer related preferences can be set 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 the renderer setup using the preferences editor is the suggested way to switch Ayam to a certain RenderMan renderer.

 

Miscellaneous Preferences

The "Misc" section of the preferences contains the dreaded miscellaneous settings.

The first sub-section deals with error message handling:

The last sub-section contains miscellaneous user interface related preferences:

See also section Tesselation Tool for example tesselations.

2.11 GUI Scaling

Since version 1.31 the Ayam GUI can be scaled to better accommodate to high resolution displays. The scaling is fractional with the exception of all pixel based GUI elements (icon images).

The GUI scale factor must be set using the command line option "-guiscale", see also section Command Line Arguments. If a value greater than 1.0 is specified, the GUI will be scaled as follows:


Next Previous Contents