AutoWeightInterface Implementation

About

maxon::AutoWeightInterface is the base interface for custom auto-weight algorithms. These algorithms are displayed in the Weight Manager an can be used with the CAWeightMgr class (see CAWeightMgr Manual).

AutoWeightInterface

The maxon::AutoWeightInterface allows to implement these methods:

Existing functionality (normalizing and smoothing) can be included by using the existing component maxon::AutoWeightComponents::BaseClass.

// This example shows an implementation of AutoWeightInterface.
class ExampleAutoWeightImpl : public maxon::Component<ExampleAutoWeightImpl, maxon::AutoWeightInterface>
{
MAXON_COMPONENT(NORMAL, maxon::AutoWeightComponents::BaseClass);
public:
{
// get parameters
const maxon::Bool boolValue = self.GetOrDefault(maxonexample::ANIMATION::AUTOWEIGHT::EXAMPLE::ATTRIBUTE);
const maxon::Float floatvalue = self.GetOrDefault(maxonexample::ANIMATION::AUTOWEIGHT::EXAMPLE::OTHER_ATTRIBUTE);
DiagnosticOutput("Values: @, @", boolValue, floatvalue);
// resize weights array
const maxon::Int jointCnt = autoWeightPointJointSelections._jointCount;
weights.Resize(jointCnt) iferr_return;
for (maxon::Int jointIndex = 0; jointIndex < jointCnt; ++jointIndex)
{
weights[jointIndex].Resize(autoWeightPointJointSelections._pointCount) iferr_return;
}
// calculate weights
return maxon::OK;
}
};
MAXON_COMPONENT_CLASS_REGISTER(ExampleAutoWeightImpl, maxon::AutoWeightAlgos, "net.maxonexample.animation.autoweight.example");

Description

The custom description of the implementation must include "net.maxon.animation.autoweight.base". The name of the implementation is set using "net.maxon.object.base.name".

Further Reading