Next Previous Contents

2. The Ayam GUI

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, toolbox, 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 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.

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 large 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, 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.

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 you can not delete or copy this object.

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

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:

Since Ayam 1.6 the scene may be navigated and objects may be selected using the keyboard alone:

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:

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:

Since Ayam 1.6 the scene may be navigated and objects may be selected using the keyboard alone:

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

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 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 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:

  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!

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

One can of course 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:

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 you may open with your right mouse button).

2.2 The Main Menu

This section discusses the main menu bar. Note that many menu entries have keyboard shortcuts that are displayed in each entry.

Note that the main menu 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). Hit "Esc" to set the focus to the object selection widget and thus enable the main menu keyboard shortcuts.

One can adapt these shortcuts using the "ayamrc" file (see section Ayamrc File).

The "File" menu deals with standard file operations:

The "Edit" menu contains object and property clipboard operations, undo actions, 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 present you with small dialogs, where you may adjust parameters for the object to be created. 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

Many keyboard shortcuts of the main window have been discussed in the previous sections already but there are some more.

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). Hit "Esc" to set the focus to the object selection widget and thus enable the main window keyboard shortcuts.

One can adapt these shortcuts using the "ayamrc" file (see section Ayamrc File).

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/surfaces. "F5" rebuilds the object tree and issues a complete notification. 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.

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 in the view menu bar as an icon.

2.5 The View Menu

This section discusses the view menu bar. Note that many menu entries have keyboard shortcuts that are displayed in each entry.

Note that the view menu keyboard shortcuts only work if the view window has the keyboard input focus.

One can adapt these shortcuts using the "ayamrc" file (see section Ayamrc File).

Here are all meny 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 Interactive Actions (Modelling) 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 "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 will currently modified by a modelling action (for points, a red dot will be present in the upper right corner of the icon). 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.

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

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.

One can adapt these shortcuts using the "ayamrc" file (see section Ayamrc File).

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

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

See also the table below.


NameShortcutIcon
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 Ayam 1.15 one may cycle through the view types using <PgUp> and <PgDown> and (since Ayam 1.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 Spaces.

Since Ayam 1.18 one may also move through the scene hierarchy and change the selection directly in view windows:

2.7 Selecting Objects within a View

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 Individual Objects

Selecting objects within a view is a straightforward operation that uses standard methods. You will use the following two selection operations most frequently:

Drag-selecting Multiple Objects

You 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:

  1. Imagine a rectangle that encloses only the objects you want to select.
  2. Click at one corner of the rectangle and, while continuing to press the mouse button, drag until you have enclosed all the objects.
  3. Release the mouse button. All the valid objects inside or crossing the rectangle are selected and any objects previously selected are unselected automatically.

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.

Ambiguous Picking

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:

2.8 The Toolbox Window

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

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

The Main Preferences

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.

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:

The RIB-Export Preferences

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

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.

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:


Next Previous Contents