About
A CAMorphNode object stores the actual morph data for a corresponding BaseList2D object. It is stored in a CAPoseMorphTag, see CAPoseMorphTag Manual. The class is defined in the lib_ca.h
header file.
Access
A CAMorphNode object is obtained from the host CAMorph. See CAMorph Manual.
poseMorphTag->ExitEdit(
doc,
false);
const Int32 activeIndex = poseMorphTag->GetActiveMorphIndex();
CAMorph*
const morph = poseMorphTag->GetMorph(activeIndex);
if (morph == nullptr)
if (mnode == nullptr)
{
{
}
}
poseMorphTag->UpdateMorphs();
Py_ssize_t i
Definition: abstract.h:645
Definition: lib_ca.h:1475
Bool SetMode(BaseDocument *doc, CAPoseMorphTag *tag, CAMORPH_MODE_FLAGS flags, CAMORPH_MODE mode)
Definition: lib_ca.h:1072
CAMORPH_DATA_FLAGS GetInfo() const
Vector GetPoint(Int32 index) const
Int32 GetPointCount() const
static String VectorToString(const Vector32 &v, Int32 nnk=-1)
Definition: c4d_string.h:573
maxon::Int32 Int32
Definition: ge_sys_math.h:56
CAMORPH_MODE_FLAGS
Definition: lib_ca.h:850
@ ALL
Expand or collapse all data.
@ COLLAPSE
Collapse data. Needs to be passed to collapse the expanded data, for instance after data access.
@ EXPAND
Expand data. Needs to be passed before accessing any data.
@ ABS
Absolute morph data.
@ AUTO
Auto mode. Used to collapse the data automatically into their correct mode.
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:67
#define ApplicationOutput(formatString,...)
Definition: debugdiagnostics.h:204
const char * doc
Definition: pyerrors.h:226
Navigation
A CAMorphNode stores the data of the corresponding BaseList2D object. In "Hierarchy" mode of the host CAPoseMorphTag a CAMorph stores multiple CAMorphNode objects for all corresponding objects in the object tree.
{
while (mnode != nullptr)
{
if (link != nullptr)
{
}
CheckMorphNode(mnode->
GetDown(), tag, morph,
doc);
}
}
Definition: c4d_basedocument.h:497
Definition: c4d_baselist.h:2377
String GetName() const
Definition: c4d_baselist.h:2544
const BaseList2D * GetLink(const CAPoseMorphTag *tag, const CAMorph *morph, const BaseDocument *doc) const
Definition: lib_ca.h:1670
Data
Info
A CAMorphNode stores morph data of a corresponding BaseList2D object.
PSR
A CAMorphNode object can store PSR data:
Points
A CAMorphNode object can store point data:
{
{
point.
x += random.
Get01() * 10.0;
point.
y += random.
Get01() * 10.0;
point.
z += random.
Get01() * 10.0;
}
}
void SetPoint(Int32 index, const Vector &pnt)
Definition: c4d_tools.h:835
MAXON_ATTRIBUTE_FORCE_INLINE Float Get01()
Definition: c4d_tools.h:865
For point mode additional Pose Space Deformation data is stored:
See CAReferencePSD Manual.
{
if (psd)
{
for (
Int32 controllerIndex = 0; controllerIndex < controllerCount; ++controllerIndex)
{
if (controller == nullptr)
}
}
}
Definition: c4d_baseobject.h:248
CAReferencePSD * GetPSDReference()
Int32 GetExternalControllerCount() const
BaseObject * GetExternalController(Int32 controllerIndex)
Tangents
A CAMorphNode object can store tangent data for spline points:
- Note
- For each spline point two tangent vectors are stored.
{
for (
Int32 i = 0;
i < tangentCount; ++
i)
{
}
}
Vector GetTangent(Int32 index) const
Int32 GetTangentCount() const
@ TANGENTS
Tangents morphing.
Vertex Map
A CAMorphNode object can store vertex map data for all vertex map tags of the host object.
{
for (
Int32 tagIndex = 0; tagIndex < vertexMapCount; ++tagIndex)
{
for (
Int32 vertexIndex = 0; vertexIndex < vertexCount; ++vertexIndex)
{
}
}
}
Float GetVertexMap(Int32 tindex, Int32 index) const
Int32 GetVertexMapTagCount() const
Int32 GetVertexMapCount(Int32 tindex) const
static String IntToString(Int32 v)
Definition: c4d_string.h:497
static String FloatToString(Float32 v, Int32 vvk=-1, Int32 nnk=-3)
Definition: c4d_string.h:531
maxon::Float Float
Definition: ge_sys_math.h:62
@ VERTEXMAPS
Vertex map morphing.
Parameters
A CAMorphNode object can store data for various object parameters.
UV Sets
A CAMorphNode object can store UVW data for all UVW tags of the host object. See also UVWTag Manual.
{
for (
Int32 tagIndex = 0; tagIndex < uvTagCount; ++tagIndex)
{
for (
Int32 uvIndex = 0; uvIndex < uvCount; ++uvIndex)
{
mnode->
GetUV(tagIndex, uvIndex, uvw);
}
}
}
Int32 GetUVCount(Int32 tindex) const
Int32 GetUVTagCount() const
void GetUV(Int32 tindex, Int32 index, UVWStruct &uv) const
@ UV
UV coordinate morphing.
Definition: operatingsystem.h:479
Vector c
The UVW coordinate for the third point.
Definition: operatingsystem.h:518
Vector b
The UVW coordinate for the second point.
Definition: operatingsystem.h:517
Vector a
The UVW coordinate for the first point.
Definition: operatingsystem.h:516
Vector d
The UVW coordinate for the fourth point.
Definition: operatingsystem.h:519
Weight Maps
A CAMorphNode object can store weight data for all weight tags of the host object. See also CAWeightTag Manual.
{
for (
Int32 tagIndex = 0; tagIndex < weightTagCount; ++tagIndex)
{
for (
Int32 jointIndex = 0; jointIndex < jointCount; ++jointIndex)
{
for (
Int32 weightIndex = 0; weightIndex < weightCount; ++weightIndex)
{
}
}
}
}
Int32 GetWeightMapTagCount() const
Float GetWeightMap(Int32 tindex, Int32 jindex, Int32 index) const
Int32 GetWeightMapJointCount(Int32 tindex) const
Int32 GetWeightMapCount(Int32 tindex, Int32 jindex) const
@ WEIGHTMAPS
Joint weights morphing.
Further Reading