Ayam Icon
Ayam

Start
News
Gallery
Features
Download
Docs

FAQ

Here are some frequently asked questions (and their answers) about Ayam (last revision: 8. Apr 2008):

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.
    You might also want to try some courses in The RenderMan Academy.

  • 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 casted 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()"), e.g. "paintedplastic" from "BMRT2.6b". Those shaders usually have a parameter for an image file, where you may specify a TIFF image file to be mapped onto the object.

  • 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?
    At the moment, there is only one route:
    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>" (without "") into a shell). You can also use the Ayam console for this, just type "exec rendrib <ribfile>" (without ""). 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.
    You should then have a TIFF image file on your disk which you may process further, convert to JPEG etc.
    I know that this is a bit unconvenient, but making this more comfortable would require to write a so called display driver which I have currently neither knowledge about nor time for. Sorry. Your contribution is always welcome.

  • 1.9 How do I set up Ayam to scan my shaders?
    If you use BMRT as renderer, you simply need to correctly set up the "Shaders" preference setting and restart Ayam (or press the "Scan Shaders" button). See also the file "Setup.txt" (for Unix) or "SetupWin32.htm" (for Windows) in your Ayam directory. Furthermore, on Windows you may need to delete all "<shadername>.intelnt.slc" files from your shader search path(s) and it is generally a good idea to recompile all your shaders with the "slc" from the latest BMRT (2.6b).
    If you use a different renderer, you need to load the appropriate shader parsing plugin first. 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 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 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.12 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).

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

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

    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.

    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.13 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 available on each platform.

    Feature Win32 Linux Mac OS X (X11) Mac OS X (Aqua) IRIX Generic UNIX7
    CSG Preview Yes12YesNo3No10No4Yes
    IDR NoYesYesNoYesYes
    3Delight SP6 YesNo5YesYesYesNo
    Air SP YesYesYesYesYesYes
    Aqsis SP YesYesNoYesNoYes
    Pixie SP YesYesYesYesNo?
    PRMan SP YesYesNoNo11YesNo
    RDC SP YesYesNoNoYesNo
    BMRT SP YesYesNoNoYesNo
    Gelato SP YesNoNoNoNoNo
    ONIO9 YesYesYesYesNo8?

    3 GLX implementation does not support PBuffers extension.
    4 Could not compile OpenCSG (C++ compiler too old; might work with gcc>3.0 or MIPSPro>7.2).
    5 3Delight is Intel (icc) compiled and clashes with gcc.
    6 SP - Shader Parsing
    7 e.g. FreeBSD, NetBSD, Solaris
    8 Could not compile OpenNURBS (C++ compiler too old; might work with gcc>3.0 or MIPSPro>7.2).
    9 ONIO - OpenNURBS (Rhino 3DM) import export
    10 RenderTexture is not available for Mac OS X Aqua.
    11 The Ayam team has no access to the relevant link libraries on that platform.

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 opening the toolbox and typing "focus .tbw" (without the quotes) into the Ayam console. If the focus does not change to the toolbox 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".

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 the Tcl/Tk you use are matching. If you use the sources from the CVS, 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 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, 8. Apr 2008
randolf.schultz@gmail.com