About
A morph can use the mixing mode "Correctional PSD" (Pose Space Deformation). A CAReferencePSD object allows accessing the related data. The class is defined in the lib_ca.h
header file.
Access
The CAReferencePSD object is obtained from the CAMorphNode object, see CAMorphNode Points .
{
if (psd)
{
for (
Int32 controllerIndex = 0; controllerIndex < controllerCount; ++controllerIndex)
{
if (controller == nullptr )
}
}
}
Interpolation
For auto-weighting an interpolation mode is used:
The modes are:
Driver
The joints referenced in the used weight tag can be forced to work as drivers for the PSD.
if (wTag)
{
for (
Int32 jointIndex = 0; jointIndex < jointCount; ++jointIndex)
{
}
}
Pose
The PSD is based on a skeleton reference pose.
Controllers
Non-joint objects can also be used as controllers.
if (psd)
{
if (objects)
{
for (
Int32 i = 0; i < objectCount; ++i)
{
{
}
}
}
}
Further Reading
BaseObject * GetExternalController(Int32 controllerIndex)
C4DAtomGoal * GetLinkAtom(const BaseDocument *doc, Int32 instanceof=0) const
Definition: c4d_baseobject.h:224
CAMORPH_PSDINTERPOLATION_MODE GetInterpolationMode() const
#define Tweights
Weights.
Definition: ge_prepass.h:1285
@ AUTO
Auto mode. Used to collapse the data automatically into their correct mode.
Matrix GetMg() const
Definition: c4d_baseobject.h:482
@ JOINT
Per joint interpolation (joint axis average).
Int32 GetCount() const
Definition: c4d_baselist.h:1648
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:66
Bool SetMode(BaseDocument *doc, CAPoseMorphTag *tag, CAMORPH_MODE_FLAGS flags, CAMORPH_MODE mode)
Bool ForceJointAsDriver(Int32 jointIndex, Bool forceDriver)
void RestoreReferencePose()
Displays skeleton and user defined controller at the reference pose.
@ ID_CA_POSE_WEIGHTTAG_UI_ONLY
Definition: tcaposemorph.h:54
void GetActiveObjects(AtomArray &selection, GETACTIVEOBJECTFLAGS flags) const
CAMORPH_DATA_FLAGS GetInfo()
Definition: c4d_gedata.h:82
Definition: c4d_baselist.h:1360
maxon::Int32 Int32
Definition: ge_sys_math.h:60
#define ApplicationOutput(formatString,...)
Definition: debugdiagnostics.h:208
@ ALL
Expand or collapse all data.
Int32 SetExternalControllerMatrix(BaseObject *controller, const Matrix &globalMatrix)
Int32 GetExternalControllerCount() const
CAReferencePSD * GetPSDReference()
Definition: ge_autoptr.h:36
Bool IsInstanceOf(Int32 id) const
Definition: c4d_baselist.h:1402
String GetName() const
Definition: c4d_baselist.h:2347
CAMORPH_MODE_FLAGS
Definition: lib_ca.h:849
CAMORPH_PSDINTERPOLATION_MODE
Definition: lib_ca.h:907
void SetInterpolationMode(CAMORPH_PSDINTERPOLATION_MODE interpMode)
@ ABS
Absolute morph data.
Bool GetParameter(const DescID &id, GeData &t_data, DESCFLAGS_GET flags)
@ EXPAND
Expand data. Needs to be passed before accessing any data.
@ COLLAPSE
Collapse data. Needs to be passed to collapse the expanded data, for instance after data access.
#define Ojoint
Joint.
Definition: ge_prepass.h:1036
C4DAtom * GetIndex(Int32 idx) const
Definition: c4d_baselist.h:1663