0
$\begingroup$

I'm doing c++ blender file parser, and I faced a problem with reading fcurves arrays for an actionGroup (that is mainly pointer to a bone). The thing is we can insert keyframes via multiple options: location, rotation, scale, location & rotatiopn & scale, location & scale and so on - the problem is FCurve structure has no evident member to define which type of keyframes insertion was done. It has a ".flag" parameter that can be 1 for most fcurves but when I delete them and re-insert again it turns into 3, for example, for all main types of insertion (L, R, S, L & R & S, L & R).

How is that possible to define a transformation type for a single curve to properly read BezTriples after? Or Blender distinguish the fcurves on its own special logic? Becuase if I have 7 Fcurves for a bone, how do I get their bone transformation types? One is obviously a rotation (4 fcurves) but the other or others - location or scale? And if I have them just 3? What are these - location or scale?

(the only clear FCurve structure parameter is array index that is useful for follwoing BezTriples reading, rotation is revealed by 0, 1, 2, 3 indices, but location and scale both have 0, 1, 2)

$\endgroup$

1 Answer 1

0
$\begingroup$

Okey, the FCurse structure member rna_path points to the block which contains offset to memory containing text data with the name of the bone fcurve belongs to and its trasnformation type for that fcurve(i.e. "location", "quaternion_rotatin", "scale" and others). The data I was wondering about is present but just in text format. The block is of "DATA" type and its blender structure index is zero, which is "link" and its doenst match this block content, so MAY BE every rna_path should be processed individually. Done.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .