Read Me First: Terms Used in This Chapter

• UFO: User Function Objects, the name of this API. The API is used to create custom Fx operators for Softimage.

• Process: This is the image processing plug-in. The words Process and Plug-in are interchangeable.

Only on Process can be found in a given dynamic library (.dll under Windows, or.so under Linux). The plug-in works by exporting an agreed upon list of functions, all of them optional except for ufoProcessDefine() and one of the rendering callbacks, either ufoProcessRenderPixel, ufoProcessRenderLine or ufoProcessRenderRectangle.

• Raster: A raster is one image, a bottom-up rectangle of pixels allocated from a given lower corner to an upper corner. The image does not necessarily start at 0,0. The image is allocated by the host prior to the rendering function, and cannot be resized afterwards. Another callback, ufoProcessCalcDefinedRectangle, can be exposed by the Process to override the output image size normally calculated by the host, for example to implement a resize plug-in. The plug-in should also implement ufoProcessCalcNeedRectangles() to tell the host which region it needs from the input images to produce the output image, if they aren’t the same. For example, a blur usually requires a slightly larger region from the inputs to calculate the output. The host will validate and clip the coordinate automatically as appropriate.

• Editor: An Editor is the set of callbacks a Process can implement to implement an interactive tool in the image viewer. The Process will use standard OpenGL calls to implement any overlay it to be drawn on the image. Note that while we use the term ‘overlay’, we do not use OpenGL Overlays, it simply means that, in this context, whatever is drawn will be drawn on top of the image. The display is not limited to paletted colors. The OpenGL matrices are set up in such a way that the coordinate system is in pixels, with 0,0 being at the bottom left of the image, and the top right is the size of the image. Zooming and proxy-scaling is handled automatically by the viewer so the Editor does not have to account for it and can simply draw everything at full scale. The host function ufoEditorGetPixelSize can be used to get the actual size of a pixel on screen, so that lines can be kept the same size at any viewing zoom

Autodesk Softimage v7.5