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");
Definition: c4d_basedocument.h:497
Definition: c4d_baseobject.h:1765
Definition: basearray.h:415
Definition: objectbase.h:2641
@ NORMAL
Normal Tag morphing.
Int64 Int
signed 32/64 bit int, size depends on the platform
Definition: apibase.h:213
Float64 Float
Definition: apibase.h:222
bool Bool
boolean type, possible values are only false/true, 8 bit
Definition: apibase.h:206
return OK
Definition: apibase.h:2747
#define DiagnosticOutput(formatString,...)
Definition: debugdiagnostics.h:176
#define MAXON_COMPONENT(KIND,...)
Definition: objectbase.h:2199
#define MAXON_COMPONENT_CLASS_REGISTER(C,...)
Definition: objectbase.h:2397
#define MAXON_METHOD
Definition: interfacebase.h:1012
Definition: autoweight.h:105
const char * doc
Definition: pyerrors.h:226
#define iferr_scope
Definition: resultbase.h:1386
#define iferr_return
Definition: resultbase.h:1521
PyObject * op
Definition: object.h:520
Definition: autoweight.h:25
Int32 _jointCount
The amount of points in the mesh.
Definition: autoweight.h:31
Int32 _pointCount
The lock joint selection.
Definition: autoweight.h:30

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