Next Previous Contents

## 1. Introduction

What is Ayam?

Ayam is a free 3D modeling environment for the RenderMan Interface (formerly known as `"The Mops"`).

On which platforms is Ayam available?

Ayam is primarily aimed at the platforms BMRT (Blue Moon Rendering Tools, a RenderMan compliant renderer by Larry Gritz (Exluna)) runs on. Those are Linux, IRIX, and Win32. 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 Aqsis, thus completely eliminating the need for BMRT.

What are the features of Ayam?

Here is a short summary:

- 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 modeling includes extrude, revolve, sweep, birail, skin, and gordon operations (with caps, holes, and bevels) realized as Tool-Objects.
- 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.
- Misc: instancing, arbitrary number of modeling views, object clipboard, independent property clipboard, console, n level undo.

Due to limitations in the Win32 operating system(s) (no backlinking) and the current implementation of Ayam, dynamic loading of custom objects is currently not available on the Win32 platform!

How should one read this manual?

Since this manual is intended to be a reference manual only, 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, use it!

In this manual, the following typographic conventions are used:

- keyboard shortcuts: `<Ctrl+c>`
- 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