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:
- COP2_Node
- COP2_PixelBase - plane
scoping
- COP2_MaskOp -
per-pixel image masking
- COP2_PixelOp -
collapsable pixel operations
- COP2_Generator - zero
input image data generation
- COP2_MultiBase -
multiple input plane/resolution/range resolution
- COP2_TimingBase -
timing only changes (no image data modification)
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.
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 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:
- 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.
- Neighbouring pixels cannot be used in the calculation.
- The position of the pixel cannot be used in the calculation.
- 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.
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().
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.
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