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

maxon::ComponentWithBase
Definition: objectbase.h:2631
maxon::AutoWeightPointJointSelections::_pointCount
Int32 _pointCount
The lock joint selection.
Definition: autoweight.h:30
MAXON_COMPONENT
#define MAXON_COMPONENT(KIND,...)
Definition: objectbase.h:2193
maxon::OK
return OK
Definition: apibase.h:2620
maxon::Bool
bool Bool
boolean type, possible values are only false/true, 8 bit
Definition: apibase.h:183
iferr_return
#define iferr_return
Definition: resultbase.h:1465
MAXON_COMPONENT_CLASS_REGISTER
#define MAXON_COMPONENT_CLASS_REGISTER(C,...)
Definition: objectbase.h:2390
maxon::Float
Float64 Float
Definition: apibase.h:199
maxon::BaseArray
Definition: basearray.h:411
maxon::AutoWeightAlgos
Definition: autoweight.h:104
DiagnosticOutput
#define DiagnosticOutput(formatString,...)
Definition: debugdiagnostics.h:176
maxon::Result< void >
MAXON_METHOD
#define MAXON_METHOD
Definition: interfacebase.h:940
maxon::Int
Int64 Int
signed 32/64 bit int, size depends on the platform
Definition: apibase.h:190
iferr_scope
#define iferr_scope
Definition: resultbase.h:1374
maxon::AutoWeightPointJointSelections
Definition: autoweight.h:24
SCULPTBRUSHMODE::NORMAL
@ NORMAL
Samples the surface as the user moves over it the SculptObject and returns a new hit point and normal...
PolygonObject
Definition: c4d_baseobject.h:1618
BaseDocument
Definition: c4d_basedocument.h:496
maxon::AutoWeightPointJointSelections::_jointCount
Int32 _jointCount
The amount of points in the mesh.
Definition: autoweight.h:31