Ayam Icon
Ayam

Start
News
Gallery
Features
Download
Community
Docs

FAQ

Here are some frequently asked questions (and their answers) about Ayam (last revision: 19. Nov 2024):

1 General usage:

  • 1.1 Where can I download BMRT?
    I do not know. Really. Try your favourite search engine with the obvious search terms.

  • 1.2 Where can I learn more about RenderMan, download shaders, or learn how to write shaders?
    Just browse to The RenderMan Repository on http://www.renderman.org/ which is maintained by Tal Lancaster and has much information on RenderMan, many shaders, and links.
    The original resource is now unfortunately offline, try your luck with the Internet Archive copy from 12. Dec 2011.
    You might also want to try some courses in The RenderMan Academy.
    The original resource is now unfortunately offline, try your luck with the Internet Archive copy from 19. Dec 2007.

  • 1.3 How do I create a CSG model?
    Just create a Level object of appropriate type (Union, Difference, or Intersection) and place the objects that you want to combine with this CSG operation in this level.

  • 1.4 How do I create a Sweep? My Sweep is always flat.
    Make sure, that the cross section curve (the first child of the Sweep object) is defined in the XZ-plane (a standard circular curve as created by the toolbox is in the XY-plane, and thus needs to be rotated by 90 degrees around the Y-axis). The documentation of the Sweep object also contains a mini tutorial on how to create a sweep.

  • 1.5 How do I create a reflecting material? How do I change the reflectivity of a material?
    You simply need to use an appropriate surface shader, e.g. "shiny" from "BMRT2.6b". Those shaders usually have parameters to adapt the reflectivity. Note that since those shaders often use the optional shading language function "trace()", they may not work with every renderer (so called scanline renderers need to create reflections using reflection maps instead). Check the documentation of your renderer!

  • 1.6 How do I create shadows?
    This depends on your renderer. They either create raytraced shadows (like e.g. BMRT) or use so called "shadow maps" (like e.g. Aqsis).
    For BMRT, it is sufficient to switch on the "Shadows" attribute of the light object (plus, since BMRT 2.6, the object onto which the shadow is cast must have atleast the "matte" surface shader assigned, which is guaranteed by Ayam unless you switched the default material to "none"). For other renderers, consult the respective documentation of the renderer!
    If your renderer creates shadows by "shadow maps", follow these instructions in the Ayam documentation.

  • 1.6.1 How do I map images onto objects?
    You simply need to use an appropriate surface shader that uses the shading language function "texture()". Those shaders usually have a parameter for an image file, where you may specify a TIFF image file to be mapped onto the object. An example is "paintedplastic" from "BMRT2.6b".

  • 1.7 Ayam does not find my renderer (rgl/rendrib), how do I set this up?
    You need to make sure, that your renderer (rgl/rendrib) is in your executable search path (the executable search path is usally stored in the environment variable "PATH"). If you e.g. installed BMRT in "/usr/local/bmrt", add "/usr/local/bmrt/bin" to your search path. The installation instructions of the renderer normally contain further help on how to modify the executable search path and make other adjustments needed (e.g. to the LD_LIBRARY_PATH environment variable). From Ayam you can easily check the setting of environment variables (as seen by Ayam) by typing "parray env" (without "") in the console window. You can also immediately try to start renderers from here, just type e.g. "exec rgl" (without "").
    As general rule of thumb, remember: if you can start the renderer from a shell, Ayam will find it too.

  • 1.8 How do I actually get a rendered image file (a TIFF or JPEG) out of Ayam?
    Since Ayam 1.12, there is a render to file feature (see the view menu).
    The other route is to:
    1. Export the scene to a RIB file (e.g. using the main menu entry "File/Export/RenderMan RIB") and
    2. render this file using a RenderMan compliant renderer, e.g. if you use BMRT, type
      » rendrib <ribfile>
      into a shell (substituting <ribfile> with the file name of the RIB). You can also use the Ayam console for this, just type
      » exec rendrib <ribfile>
      into the Ayam console. The latter has the advantage, that you do not explicitly have to open a shell. Furthermore, you are immediately in the right directory and the environment variable SHADERS is set up correctly. However, Ayam is completely blocked while rendering.
    After rendering there should be a TIFF image file on your disk which may be processed further, e.g. converted to JPEG etc.

  • 1.9 How do I set up Ayam to scan my shaders?
    In short: load a shader parsing plugin, adapt the "Shaders" preference setting, press the "Scan Shaders" button in the preferences.
    See also the file "Setup.txt" (for UNIX) or "SetupWin32.htm" (for Windows) in your Ayam directory. In addition, the Ayam documentation has a section about shader parsing plugins.
    See also the next question.

  • 1.10 How do I load a plugin? I always get some Tcl error message.
    Use the main menu entry "File/Load Plugin", select the appropriate file (plugins usually have the file name extension ".so" on UNIX and ".dll" on Windows), then press the "Ok" button. If loading of a plugin via "File/Load Plugin" fails, make sure that:
    • the corresponding Tcl script is in the same directory as the shared object,
    • UNIX: your LD_LIBRARY_PATH environment variable contains the path of the plugin or ".",
    • UNIX: if you use a self compiled binary built with gcc, you added "-rdynamic" to the EXLDFLAGS for compilation,
    • LD_LIBRARY_PATH or PATH contain the paths of additional libraries wanted by the plugin.
      Since a plugin may be dynamically linked with other libraries, the paths to those libraries also have to be included in your LD_LIBRARY_PATH environment variable (on UNIX) or in your PATH environment variable (on Windows). On UNIX, try
      » ldd <plugin>.so
      in your shell to check, whether the plugin is dynamically linked with other libraries.
      On MacOSX, use
      » otool -L <plugin>.so
      instead.
      On Win32, check the file SetupWin32.htm for information on additionally required libraries or use "depends.exe".
    Note that some UNIX operating systems offer additional ways of managing library search paths, e.g. on Linux you can also use the configuration file "/etc/ld.so.conf" and the ldconfig tool (if you are root).

  • 1.11 My shader parsing plugin does not work at all; are there known incompatibilities?
    Yes, there are some versions of renderers with broken or incompatible shader parsing libraries:

    Since (including) version 1.0.0b, the 3Delight shader parsing plugin does not work anymore on Linux. Private communication with the 3Delight author(s) revealed, that 3Delight is compiled with Intels "icc", which may result in "libc" incompatibilities leading to crashes; if you have "icc" on your system, please try to compile Ayam and the ayslo3d plugin with it, and report, whether this fixes things).
    Update: 3Delight 8.5 shader parsing works again (in Ayam 1.16).

    Aqsis 0.7.4 and 0.7.5 libslxargs seems to be broken (0.7.3 works ok and the authors are informed of this).
    Aqsis 0.7.6 through 0.7.8 libslxargs ignore the last element of the shader search path; if you have just one element, Ayam will not find a single shader. Solution: always add an ":." to your shader search path.
    Aqsis 0.7.9 and 0.7.12 seem to work ok completely.
    The interface of Aqsis 0.7.19 libslxargs changed in some incompatible way, so that the Ayam 1.5 (and below) shader parsing plugin will not work with Aqsis 0.7.19 and up.
    The interface of Aqsis 0.9.3 libslxargs again changed in some incompatible way, so that the Ayam 1.8 (and below) shader parsing plugin will not work with Aqsis 0.9.3 (and up) compiled shaders.
    The interface of Aqsis 1.2 libslxargs again changed in some incompatible way, so that the Ayam 1.13 (and below) shader parsing plugin will not work with Aqsis 1.2 (and up).
    The interface of Aqsis 1.6 libslxargs again changed in some incompatible way, so that the Ayam 1.16 (and below) shader parsing plugin will not work with Aqsis 1.6 (see also the Aqsis forum for details).
    Note that the latter two incompatibilities only hurt you, if you are compiling Ayam and the shader parsing plugin from source. The Aqsis shader parsing plugin distributed with the official Ayam binaries can indeed parse shaders compiled with Aqsis from version 1.0.1 to 1.6.

    Pixie 1.3.3 shader parsing on Win32 only works, when the shader search path contains just a single element.

    To parse BMRT/slc compiled shaders with the ayslc plugin on Win32, all ".intelnt.slc" files may need to be removed.

    Some renderers (e.g. 3Delight) distribute wrong or old compiled shaders that may not be parsed with the corresponding shader parsing plugin unless the shaders are recompiled from source with the shader compiler of the renderer distribution. Ayam may even crash while scanning for shaders if this is the case. To debug this situation, start with a single shader directory with one compiled shader. Then add shaders until it crashes again. Also, take a look at time stamps and magic bytes at the start of the compiled shader files. Do not trust the compiled shaders distributed with a renderer, always compile everything from source!

    As last resort, if you cannot get the shader parsing plugins to work, see also the question 3.7 How can I use Ayam with a different renderer.... below.

  • 1.12 How do I change the keyboard shortcut for the Alt-rotate view-action?
    • Open your ayamrc file in a text editor while Ayam is not running.
    • Look for, and change the following lines:
      set ayviewshortcuts(RotModKey) {Alt_L}
      set ayviewshortcuts(RotMod) {Alt}
      to e.g.:
      set ayviewshortcuts(RotModKey) {Control_L}
      set ayviewshortcuts(RotMod) {Control}
    • Start Ayam.
    Now you can rotate your views with the Control-key held down, instead of the default setting using the Alt-key. See the manual page of the Tk bind command for a number of possible settings (modifiers) for RotMod and e.g. the output of "xev" or "xkeycaps" for the keysym associated with this modifier key. Remember to always change both settings and to put the modifier into RotMod and the keysym into RotModKey (hence the naming of those options).

  • 1.13 Where is the PDF version of the Ayam documentation?
    The PDF version of the Ayam documentation is distributed with every release archive in the "doc" folder.

  • 1.14 Is feature X available on platform Y?
    While the Ayam core functionality (modelling, RIB export) is available everywhere, functionality that is realized through plugins is not available on every platform. This is mainly due to deficiencies in operating system implementations and limited availability of third party software.
    The following table gives a short overview over the features that are not available on every platform.

    Feature  Win32   Linux   Mac OS X (X11   Mac OS X (Aqua)   IRIX   Generic UNIX4 
    CSG Preview YesYesNo1No2No3Yes
    IDR NoYesYesYesYesYes
    JavaScript
    Interpreter
    YesYesYesYesNo?
    Aqsis
    Shader Parsing
    YesYesYesYesNoYes
    Pixie
    Shader Parsing
    YesYesYesYesNo?
    PRMan
    Shader Parsing
    YesYesNo5No5YesNo
    RDC
    Shader Parsing
    YesYesNoNoYesNo
    BMRT
    Shader Parsing
    YesYesNoNoYesNo
    Gelato
    Shader Parsing
    YesYesNoNoNoNo

    1 GLX implementation does not support PBuffers extension.
    2 RenderTexture is not available for Mac OS X Aqua.
    3 Could not compile OpenCSG (C++ compiler too old; might work with gcc>3.0 or MIPSPro>7.2).
    4 e.g. FreeBSD, NetBSD, Solaris
    5 Could work, but the Ayam team has no access to the relevant link libraries on that platform.

  • 1.15 After upgrading Ayam the new keyboard shortcuts do not work as documented?
    This is because the upgrade process is not changing your "ayamrc" file, which holds all keyboard shortcuts. Your options are
    1. to reset this file completely via the main menu entry "Special/Reset Preferences" (the easy way; not recommended since you lose all preferences) or
    2. to reset this file partially; type into the Ayam console:
      » unset aymainshortcuts
      then
      » unset ayviewshortcuts
      then restart Ayam.

2 Renderer specific questions:

3 Windows related questions:

4 Linux related questions:

  • 4.1 Rendering from Ayam leaves many zombie processes around, how do I get rid of them?
    Make sure you set "-DAYENABLEWAIT" in your CFLAGS for compilation (the official Linux binary is compiled this way) and set the preference variable ayprefs(Wait) to "waitPid" in your ayamrc file.

  • 4.2 I cannot see the control points of NURBS curves to edit them, even though the right modelling action ("Edit Points") is active.
    This is probably caused by a broken OpenGL implementation. Bad OpenGL implementations known are: Mesa DRI for a range of graphics cards with ATI chipsets (vendor: VA Linux Systems, Inc), and Mesa 4.0.4.
    Mesa 5.0 and 5.0.1 are known to work. To resolve this, install a recent Mesa in the system or install it somewhere else and point Ayam to it via LD_LIBRARY_PATH, or compile it statically (make linux-static) and re-compile Ayam with this static OpenGL library (adapt GLINCDIR and GLLIBS in the Ayam Makefile). Yes, unfortunately, you will then lose hardware acceleration in Ayam. But this is not too bad if your machine is moderately fast.
    You may also try to change the preference setting "Modeling/HandleSize". Some OpenGL implementations just allow point sizes of 5 at maximum.

  • 4.3 The "Edit Points" and "Tag (Select) Points" modelling actions do not work, I can click on points but nothing happens.
    See the question above. Alternatively, if it does not work when you zoom in to your models, check and decrease the preference setting "Modeling/PickEpsilon".

  • 4.4 Ayam looks strange on my desktop, with black, thick scrollbars and buttons. How can I change this?
    Your Linux distribution probably defines some evil X resources that make the scrollbars (or other GUI elements) look black and thick. To cure this search for "Xresource" or "Xdefaults" files in your home directory, "/usr/X11R6/lib/X11", and "/etc/X11" and its sub directories and see if you find lines like: "*ScrollBar*Foreground: black" or "*ForeGround: Black" in those files. Comment out those lines using an exclamation mark ("!") as first character. Note that you may need to restart the X server to let these changes take effect.

  • 4.5 The AutoFocus feature does not work? What can I do?
    Some recent versions of kwm (the KDE window manager) do not allow applications to manage the focus on their own, thus AutoFocus does not work. You can check this easily by typing
    » toplevel .tw; focus .tw
    into the Ayam console. If the focus does not change to the new empty window you are out of luck and your options are to switch to a different window manager or to enable auto focus in the window manager configuration.

  • 4.6 How can I set a good looking font in Ayam?
    Add the following to your ~/.Xresources file:
    Ayam*Font: 7x14
    Instead of 7x14, you can of course pick any font that appeals to you. You may derive available font names using "xfontsel".

  • 4.7 The official Ayam executable does not start. How can I make it run?
    If the error message is
    No resource found
        while executing
    "error $msg"
        invoked from within
    "if {[catch {::wrap::source ayam.tcl} msg]} {
    	error $msg
    }"
    
    the Ayam executable was stripped. Do not strip the Ayam executable.

5 IRIX related questions:

6 Solaris related questions:

7 Mac OS X related questions:

  • 7.1 Ayam does not remember my preference settings.
    This only applies to the X11 version! Please use "Ctrl+q" to quit Ayam and not "Apple+q".

  • 7.2 Box objects are drawn in wireframe.
    Box objects may be drawn in wireframe mode (instead of being shaded) when NURBS patches also exist in the scene. This is a bug in Apple OpenGL that has been reported on 13. Jan 2006. Since their first reply to the bug report was on 9. Jun 2006, extrapolating from this speed, I expect them to acknowledge the bug in December 2006, fix it to June 2007, and roll the bug fix out to customers in December 2007. Happy waiting.
    Meanwhile, a workaround has been found and implemented that will be available for Ayam 1.11.
    This story found a very embarrassing ending, as the bug was silently removed from the bug database after a demonstrating program was provided that took me 30min to create. You think I will ever report another bug?

  • 7.3 AutoFocus does not work in Aqua?
    Yes and it will never work and you should be glad about it, because if it would work and you would browse from the main window to the menu bar over a view window, you would never be able to access the main menu bar, because AutoFocus would change the main menu bar immediately to the view menu bar...

  • 7.4 Ayam can not start Safari to show the documentation?
    When Safari does not start, most probably the preference setting "Main/Docs" is pointing to a non existing file. Correct this using the preferences editor and it should work again.

  • 7.5 How do I disable the splash screen?
    Open the Ayam.app directory in the Finder using the context menu; browse to "Ayam.app/Contents"; Double click on the "Info.plist" file. Search for the "LSEnvironment" dictionary, open it and set the value of the "AYNOSPLASH" key to 1. Save the Info.plist file.

8 Project related questions:

9 Questions related to self compiled executables:

  • 9.1 How do I compile Ayam? I typed "make" but just got errors.
    There are extensive compilation instructions in the file "ayam/src/INSTALL", please read it.

  • 9.2 My self compiled Ayam crashes when I try to open a view window.
    Please read the compilation instructions (file "ayam/src/INSTALL") more carefully and use the correct version of the Tcl/Tk sources to compile Ayam.

  • 9.3 Can I use plugins from the official binary distribution with my self compiled executables?
    Yes, as long as the major version numbers of Ayam (e.g. "1.3") and Tcl/Tk are matching. If you use the sources from the Mercurial repository, you can simply check out a version with matching release tag to be on the safe side.

  • 9.4 I get Tcl errors when I try to drag and drop objects in the object tree widget. Is this a bug in Ayam?
    This issue should be resolved since Ayam 1.5.
    This is not really a bug. Ayam (V1.4 and below) requests to load the BWidgets package without specifying an exact version. Unfortunately, newer BWidget versions than 1.2.1, which is distributed with Ayam, seem to have changed in incompatible ways which leads to Tcl errors while doing drag and drop. The newer versions of BWidgets may get loaded into Ayam in favour of BWidgets 1.2.1, if they are installed in your system. An easy fix for this is, consequently, to deinstall the newer BWidgets package, if no other of your Tcl/Tk applications depends on it. You can also change the package loading code in tree.tcl to "package require -exact BWidgets 1.2.1".
    This issue should be resolved since Ayam 1.5.

  • 9.5 How can I compile Ayam with Tcl/Tk 8.4.x?
    The C-interface of Tcl/Tk changed in incompatible ways between versions 8.3.x and 8.4.x, so that Ayam will not compile cleanly unless you add "-DUSE_NON_CONST" to the CFLAGS variable in the Ayam Makefile.
    Please see this Tcl-Wiki page for more background information.

  • 9.6 How do I compile a shader parsing plugin?
    Compiling shader parsing plugins is much easier since Ayam 1.11. The only prerequisite besides the renderer are the Tcl headers in the right version (the version Ayam uses). To compile a shader parsing plugin download and unpack the matching Tcl sources and run configure first. Then do:
    » cd ayam/src/plugins
    » g++ aySSS.cpp -o aySSS.o -I.. -Ipath-to-renderer-headers -Ipath-to-tcl-headers
    » g++ -shared aySSS.o -o aySSS.so -Lpath-to-renderer-libs -lrenderer-lib
    
    substituting SSS with the shader file name extension, e.g. so for RDC, slc for BMRT, slx for Aqsis etc.
    For example:
    » g++ ayslc.c -o ayslc.o -I.. -I../../BMRT2.6/include -I../../../tcl8.4.18/generic -I../../../tcl8.4.18/unix
    » g++ -shared ayslc.o -o ayslc.so -L../../../BMRT2.6/lib -lslcargs
    
    builds the ayslc.so plugin to scan BMRT compiled shaders.

top of page


Randolf Schultz, 10. Oct 2020
randolf.schultz@gmail.com