Softimage SDK Programmer's Guide > Customizing Softimage using the SDK > Custom Fx Operators >

# Definition

The definition and initialization of UFO process must be supplied in the ufoProcessDefine user function. This includes the definition of the process ID, the number and types of inputs, outputs and parameters, parameter default initialization, and other general initialization.

ufoProcessCreate returns the initial definition instance of a UFO process and subsequent UFO process instances are essentially copied from it or copied from copies of it. This instance is supplied to most functions called within the body of the definition user function. Each copy of a particular UFO process has an instance object associated with it, and therefore in all other UFO user functions and most UFO library functions, a UFO process instance is passed as the first argument.

## Options

The number, type and subgrouping of editable parameters must be defined in the ufoProcessDefine user function. The available set of parameter types are:

Parameter | Description
--- | ---
ufoBooleanParam | true/false, on/off
ufoEnumParam | list selection
ufoIntegerParam | integer
ufoFloatParam | floating point
ufoNormalisedParam | floating point normalized (0..1)
ufoAngleParam | floating point angle
ufoColourRGBParam | RGB color
ufoRectangleParam | floating point rectangle
ufoPos3dParam | floating point 3D position
ufoScale3dParam | floating point 3D scale
ufoPos2dParam | floating point 2D position
ufoScale2dParam | floating point 2dD scale
ufoStringParam | ASCII string

For each parameter the library function ufoProcessParamDefine (or ufoProcessEnumParamDefine for parameters of type ufoEnumParam) must be called to define its identification, type, and group.

Parameter groups should be defined with ufoProcessParamGroupDefine to give each group an identification.

Parameters of type ufoIntegerParam, ufoFloatParam, ufoNormalisedParam, ufoRectangleParam, ufoPos3dParam or ufoScale3dParam,ufoPos2dParam or ufoScale2dParam, should have their limits defined with ufoProcessSetParamLimits.

By default, parameters will be animatable, which means that as values are adjusted at different frames, key values will automatically be added. If a parameter value is intended to be a constant value over time, use ufoProcessSetParamAnimAllow.

Default values or keyframe animations should always be set for each parameter, for which there are the library functions ufoProcessSetParamDefaultValue/s or ufoProcessSetParamDefaultKey/s.

For transitional effects, if a parameter has default parameter keys which form a transition animation, then the ufoProcessSetParamAutoTransition library function can set the parameter keys to be automatically fitted to a transition length when first used.

By default, parameters are laid out in an automatically generated GUI. They are formatted from the top left of a rectangular area in columns. The function ufoProcessSetParamColumnHint allows you to give the application a hint about which column a parameter tool should be positioned in.

Certain types of parameters can be ganged together. The supported types are: ufoIntegerParam, ufoFloatParam, ufoNormalisedParam, and ufoAngleParam. Ganged parameters have an extra control to allow all the sliders to be moved simultaneously, such that when the gang control is switched on and any one ganged parameter is changed, then all ganged parameters are changed by the same amount. There are two functions you need to call when defining parameters in order for them to be ganged: ufoProcessSetParamGang can be called to indicate that a set of parameters (of the same type) should be grouped together with a gang control. ufoProcessSetParamGangLabel sets a collective title for the ganged parameters.

The ufoProcessSetEffectType function sets the type of effect group that the UFO belongs to. Currently this is only to inform whether the effect type is a transition or not, so the only two possible values are ufoUndefinedEffect or ufoTransitionEffect.