[Melange] How to add PLA to a PolygonObject?
-
On 20/12/2013 at 08:39, xxxxxxxx wrote:
User Information:
Cinema 4D Version: R15
Platform: Windows ; Mac ; Mac OSX ;
Language(s) : C++ ;---------
Hi there,I have created a PolygonObject :
int nbPts(8); int nbFaces(12); _melange_::BaseObject* c4dMesh = _melange_::BaseObject::Alloc(Opolygon); ((_melange_::PolygonObject* )c4dMesh)->ResizeObject(nbPts, nbFaces, 0);
How should I proceed to add PLA to my object?
Should I create a CTrack? But this requires a tag to be created and there is no PLA tag. Indeed when importing a FBX file with vertex cache, no PLA tag is created.
Should I then add a CCurve?Any help would be appreciated, I couldn't find an example of creating PLA from scratch.
Regards
-
On 03/01/2014 at 07:13, xxxxxxxx wrote:
Hi,
I could answer my own question, so if anyone is interested in adding PLA, here is a way to do it :
First add a track to the polygon object "c4dMesh"
_melange_::CTrack *plaTrack( _melange_::CTrack::Alloc( c4dMesh, _melange_::DescID( _melange_::DescLevel(CTpla, CTpla, 0)), "PLA")); c4dMesh->AppendCTrack(plaTrack); _melange_::CCurve *plaCurve(plaTrack->GetCurve());
Now add a key for each time sample and fill the data.
_melange_::BaseTime t; _melange_::CKey *plaKey(plaCurve->AddKey(t)); _melange_::CustomDataType *plaData(_melange_::PLADataTypeClass::AllocData()); _melange_::PointTag *pointTag; _melange_::TangentTag *tangentTag; ((_melange_::PLAData* )plaData)->GetVariableTags(pointTag, tangentTag); pointTag->Resize(static_cast<_melange_::LONG>(nbPoints)); tangentTag->Resize(0); _melange_::Vector *a = pointTag->GetPointAdr(); for (size_t i_pt(0); i_pt < nbPoints; ++i_pt) { a[i_pt].x = animatedPoints[3 * i_pt]; a[i_pt].y = animatedPoints[3 * i_pt + 1]; a[i_pt].z = animatedPoints[3 * i_pt + 2]; } _melange_::GeData dat(CUSTOMDATATYPE_PLA, *plaData); plaKey->SetParameter(CK_PLA_DATA, dat);
Hope someone finds this useful one day!
Regards