MRampAttribute allows you to create an adjustable curve or color attribute where users can insert and adjust the interpolation of points along the ramp.

To create ramp attributes, we call the convenient classes contained in MRampAttribute:
MStatus RampAttributeDeformer::initialize()
{
// Create the curve ramp attribute
aCurveRamp = MRampAttribute::createCurveRamp( "curveRamp", "cur" );
addAttribute( aCurveRamp );
attributeAffects( aCurveRamp, outputGeom );
// Create the color ramp attribute
aColorRamp = MRampAttribute::createColorRamp( "colorRamp", "cor" );
addAttribute( aColorRamp );
attributeAffects( aColorRamp, outputGeom );
return MS::kSuccess;
}
To access the ramp attribute values inside a node or deformer:
MStatus RampAttributeDeformer::deform( MDataBlock& data,
MItGeometry& itGeo,
const MMatrix &localToWorldMatrix,
unsigned int geomIndex )
{
MStatus status;
// Get the ramp attributes
MObject oThis = thisMObject();
MRampAttribute curveAttribute( oThis, aCurveRamp, &status );
CHECK_MSTATUS_AND_RETURN_IT( status );
MRampAttribute colorAttribute( oThis, aColorRamp, &status );
CHECK_MSTATUS_AND_RETURN_IT( status );
float rampPosition = 0.25f, curveRampValue;
MColor color;
// Get the corresponding value on the curve ramp attribute
curveAttribute.getValueAtPosition( rampPosition, curveRampValue, &status );
CHECK_MSTATUS_AND_RETURN_IT( status );
// Get the corresponding value on the color ramp attribute
colorAttribute.getColorAtPosition( rampPosition, color, &status );
CHECK_MSTATUS_AND_RETURN_IT( status );
// Do your calculation with the values
return MS::kSuccess;
}
You will also need to make sure the attribute is set correctly in your attribute editor template for the node:
global proc AErampDeformerTemplate( string $nodeName )
{
editorTemplate -beginScrollLayout;
editorTemplate -beginLayout "Ramp Deformer Attributes" -collapse 0;
AEaddRampControl( $nodeName + ".curveRamp" );
AEaddRampControl( $nodeName + ".colorRamp" );
editorTemplate -endLayout;
editorTemplate -addExtraControls;
editorTemplate -endScrollLayout;
}

