Next Previous Contents

2. The Ayam GUI

This section describes the user interface of Ayam.

The user interface is split into three types of toplevel windows: a main window, a toolbox and an arbitrary number of view windows. The main window displays the object hierarchy and lets you edit object properties, the toolbox window allows for easy creation of objects and starting of modelling actions. The modelling actions are then carried out in view windows, where the scene is displayed.

The whole application with all 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.

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 window 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 label "Objects" may be used to switch between two representations of the object hierarchy (using a double click). It is also possible to switch between both representations using the context menu. The default representation is a tree view. The second available representation is a simple listbox (as known from The Mops). 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!

You will notice, that there is a first object called "Root" in the top level, 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.

Tree View:

Tree View

The tree view is very complex and may be slow on slow machines (Pentium 90 class), especially when dealing with large (deep nested) scenes.

Objects may be selected using the left mouse button. Multiple selection of objects is possible using Shift and Control keys 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 Ayam Objects and Properties 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:

Listbox:

Listbox

The hierarchy 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 intuitively: Use a double click to enter a level (or an object with child objects), and a single click to select objects, multiple objects may be selected using click and drag, or holding down the Shift or Control 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:

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 objects 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 use one of 0-9. 0 always selects the last and often object type specific property, whereas 1 selects the first property, which is often 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 defined by the current window size, Ayam will automatically resize the window when you select a property. You can toggle 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 in section Ayam Objects and Properties.

Here are some general remarks:

The various things that may be changed using a property GUI will normally not be applied to the object until the "Apply"-button is pressed!

You can undo all changes to the arguments of a property that have been made after the last click on "Apply" with the "Reset" button. This does, however, not use the undo mechanism of Ayam!

Note that property GUIs of custom objects may also offer interactive elements that do an instant "Apply". Most GUIs of the core objects of Ayam and the Scene object 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 properties 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.

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:

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

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 requester to appear to the console using the preference setting "Misc/RedirectTcl" (see section Miscellaneous Preferences).

But you can also enter commands, 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> or click into an entry in a property GUI 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

Another important part of the main window has not been discussed so far. This is 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:

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 action of the view.

2.4 The View Menu

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 modeling actions. See sections View Object and View Window Shortcuts and 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.

The "Grid" menu may be used to change the current grid size:

On the right hand side in the 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 value and additionally switch on drawing of the grid and snapping to the grid. The last entry, however, will set the grid size to 0.0 and switch off drawing 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 a small x will be displayed in the menu instead.

View Window Shortcuts and Actions

Important keyboard commands of a View:

Interactive actions modifying a view:

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 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 modeling 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.5 Selecting Objects within a View

When the views action is "Pick" you can pick objects that appear within a view. You can invoke this action by pressing <Shift+p> or make this action the default action using the preference setting "Modeling/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.

Notes:

2.6 The Tool Box Window

The Tool Box

The tool window displays some buttons that start interactive modeling actions or other modeling tools, or create objects.

Note that in contrast to the keyboard shortcuts of the view windows the buttons switch to the modeling actions for all available views. For more information about the actions see section Interactive Actions.

The tool window may be configured by the user using the preference setting toolBoxList in the ayamrc file. You may select from the groups and change the order in which they appear in the tool window. See section Hidden Preference Settings for more information.

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 tool box will re-layout the buttons, warning you if the space is to small for all buttons to display, and if the window is too big for the desired layout shrink wrap the window to match the size occupied by the buttons. Furthermore, using the preference setting Misc/ToolBoxTrans the tool box 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.7 Preferences

Preferences Dialog

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

Use

The preferences are divided into five sections.

The Main Preferences

The "Main" section contains the most used preference settings:

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

Modeling Preferences

The next section of the preferences, "Modeling", contains modeling 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.

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