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, 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 top level windows.

The next sections document the three types of windows, main, toolbar, 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 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 only take place in the current level!

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 cannot 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 only works 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 press <Esc> first (when a property GUI has the input focus) or <Shift+Tab> (when the console has the input focus).

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 press <Esc> first (when a property GUI has the input focus) or <Shift+Tab> (when the console has the input focus).

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

The third part of the main window is the console. The console is mainly for text output (informative, warning, and error messages). For this, the console captures the stderr and stdout channels of the Tcl-interpreter Ayam is running in. You can also redirect all 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, even new Tcl procedures and so on in the console. However, this is a feature for the advanced user that studied section The Tcl 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> 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 The Tcl 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. You can adapt the shortcuts using the file "ayamrc" (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 requesters, where you may adjust parameters for the object to be created. Here are the entries of the Create menu:

The "Tools" menu:

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

Since Ayam 1.14 the current modelling action is also displayed in the view menu bar as an icon.

2.4 The View Menu

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 file "ayamrc" (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:

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.

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 switch on 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 switch off drawing of and snapping to the grid. If a gridsize other than 0.1, 0.25, 0.5, or 1.0 is in effect for the view, a different icon (with an X) will be displayed in the icon menu instead.

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

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:

You may also move the view by dragging with the rightmost mouse button and zoom the view with the middle mouse button.

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.

Using the menu entry "Zoom to Object" or the shortcut <Ctrl+o> you can change the views from to and zoom settings so that the selected objects will be displayed centered in the view window. This is handy if you are e.g. searching for objects or if you are simply lost in space.

Using the menu entry "Align to Parent" or the shortcut <Ctrl+a> you 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. editing the points of a 2D curve defined in the XY-plane that has been rotated around the Y-axis). See also section Editing in Local Space.

2.6 Selecting Objects within a View

When the view windows action is "Pick" you can pick (select) objects that appear within this view. You can invoke this action by pressing <Shift+p> or make this action the default action using the preference setting "Modelling/DefaultAction". This section describes techniques that you can use for selecting one or more objects within a view.

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 close the dialog.

Notes:

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

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

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