Next Previous Contents

## 1. Introduction

This section contains general information about Ayam and this document.

## 1.1 About Ayam

Ayam is a free 3D modelling environment for the RenderMan Interface, distributed under the BSD licence.

Ayam was formerly known as `"The Mops"`.

Here is a short summary of the Ayam feature set:

- RIB (RenderMan Interface Bytestream) export and import.
- Support for NURBS curves, interpolating curves, (trimmed) NURBS surfaces, bilinear and bicubic patches and patch meshes, Boxes, Quadrics (Sphere, Disk, Cylinder, Cone, Hyperboloid, Paraboloid and Torus), MetaBalls, polygonal meshes, subdivision meshes and more.
- All primitives may be combined with the common CSG-operations: Intersection, Difference, and Union.
- NURBS modelling includes extrude, revolve, sweep, birail, skin, and gordon operations (with caps, holes, and bevels) realized as Tool-Objects (see also section The Modelling Concept Tool-Objects).
- Wavefront OBJ export and import, Rhino 3DM export and import, AutoCAD DXF export and import, Web3D X3D export and import, Apple Quicktime 3D Metafile (3DMF) export and import.
- Custom objects that may freely implement their representations (using OpenGL and RIB) and even small GUIs to edit their type specific parameters may be written by the user and dynamically loaded at runtime.
- Scripting interface: Tcl.
- Script objects.
- Miscellaneous: (automatic) instancing, arbitrary number of modelling views, object clipboard, independent property clipboard, console, n-level undo.

Since Ayam 1.12, dynamic loading of custom objects and certain plugins are also available on the Win32 platform (they were not available before)!

Ayam is primarily aimed at the Linux, IRIX, and Win32 platforms. On those platforms BMRT (Blue Moon Rendering Tools, a RenderMan compliant renderer by Larry Gritz) is available. Even though the distribution of BMRT is stopped it is still the recommended renderer for Ayam. Despite of this, Ayam may be used on many more platforms with any RenderMan compliant renderer.

For platforms where BMRT is not available (e.g. FreeBSD or NetBSD), Ayam may be compiled with code from the Affine Toolkit with limited functionality (see also the file INSTALL). In this case, no parsing of slc compiled shaders will be possible. Since Ayam 1.6 it is also possible to completely replace BMRT shader parsing and RIB writing by code from the Aqsis project, thus completely eliminating the need for BMRT. Furthermore, shader parsing plugins are available for all major RenderMan compliant renderers allowing a tight integration of Ayam with those renderers.

## 1.2 About this Manual

How should one read this manual?

Since this manual is intended to be a reference manual, it is probably pointless to read it from the beginning to the end (except maybe for the next section, explaining the basics). Instead, just look up the documentation of the things you are interested in via the table of contents or the index. Cross references will then guide you to other important parts of the documentation. Again: this manual has a rather large index, please use it (see section Index)!

This manual is organized in the following way:

After this first section, the user interface of Ayam is introduced and basic handling instructions for the application are given in the second section. In the third section all interactive modelling actions are documented. The fourth section details all object types and object properties, followed by documentation on all NURBS modelling tools in the fifth section. In the sixth section the Tcl scripting interface is explained and the following seventh section has all information about the import and export plugins. The eighth section is the dreaded miscellaneous section that contains documentation not fitting elsewhere.

In this manual, the following typographic conventions are used:

- keyboard shortcuts: `<Ctrl+c>` (press control and c key), for shortcuts like `<Ctrl+Shift+t>` an abbreviated version: `<Ctrl+T>` will be used;
- names (of object types, menu entries, properties, or property elements): `"A Name"`;
- Tcl code examples:

      set riopt(runtime) { a b }

- Object hierarchies:

      +-Parent_Object(Type)
       | First_Child_Object(Type)
       | Second_Child_Object(Type)
       | [Third_Child_Object_may_be_present_or_not(Type)]
       | Empty_Level(Level)
       +-Sub_Level(Level)
       | | First_Child_Object_of_Sub_Level(Type)
       | \ Last_Child_Object_of_Sub_Level(Type)
       \ Last_Child_Object(Type)

Next Previous Contents