Houdini Development Toolkit - Version 9.0

Side Effects Software Inc. 2007

Compositing Operators

Compositing Families


For ease of design and consistancy, COPs are divided into families which are each represented by classes. The class hiearchy is:

Scoped Operators - COP2_PixelBase

These operators have parameters for scoping planes and frames. Planes that are scoped are modified by the operator, and planes (or components) that are not scoped are passed through as-is.

Masked Operators - COP2_MaskOp

Most operators fall into this category of maskable operations. Since COP2_MaskOp derives from COP2_PixelBase, plane and frame scoping is supported. In addition, a mask input is added to the bottom of the COP which allows any plane in that input to be used as a mask for the operation. The mask acts as a variable effect parameter on each pixel. Pixels corresponding to black pixels in the mask are not modified, whereas white pixels are fully modified. Grey pixels cause a linear blend between the output and input image.

Masked operations can also override the mask blending and interpret the mask any way they want (such as a per-pixel blur, which modifies the size of the blur kernel based on the mask value).

All COPs deriving directly from COP2_MaskOp need to override COP2_MaskOp::doCookMyTile() rather than cookMyTile().

Pixel Functions - COP2_PixelOp

Pixel function operations are highly optimized pixel equations which can be chained together with other pixel operators and cooked in one pass. A pixel operation must follow some basic rules:
  1. The output pixel must depend only on the value of the corresponding pixel in the same plane in input 1, and/or its parameter settings.
  2. Neighbouring pixels cannot be used in the calculation.
  3. The position of the pixel cannot be used in the calculation.
  4. Pixels from other planes (Alpha, Point, Mask) cannot be used in the calculation.
A pixel operation is specified in a custom class derived from RU_PixelFunction, and this function is created and initialized in the virtual function COP2_Node::getPixelFunction().

Pixel Functions are also masked and scoped operations.

Generators - COP2_Generator

Generator COPs produce image data without any inputs. Because of this, COP2_Generator provides two pages of parameters to allow the user to specify the Image and Sequence properties for the COP.

Generators are also maskable, and derive from COP2_MaskOp. They have a mask input on the bottom of the node, which confines the generated image data to the area of the mask.

All COPs deriving directly from COP2_Generator need to override COP2_Generator::generateTile() rather than cookMyTile().

Multi-Input COPs - COP2_MultiBase

COP2_MultiBase is a fairly lightweight class that merely resolves plane, frame range and resolution conflicts between inputs. It provides 5 parameters for dealing with differences in frame range, plane format, and resolution.

Timing COPs - COP2_TimingBase

COP2_TimingBase is another lightweight class which provides a few methods for accessing frames at different times.


Table of Contents
Operators | Surface Operations | Particle Operations | Composite Operators | Channel Operators
Material & Texture | Objects | Command and Expression | Render Output |
Mantra Shaders | Utility Classes | Geometry Library | Image Library | Clip Library
Customizing UI | Questions & Answers

Copyright © 2007 Side Effects Software Inc.
477 Richmond Street West, Toronto, Ontario, Canada M5V 3E7