38 #define DNA_DEPRECATED_ALLOW
112 printf(
"Freed %d (Unconverted) Ipo-Curves from IPO '%s'\n", n, ipo->
id.
name + 2);
130 if (icu->driver !=
NULL) {
135 if (icu->driver !=
NULL) {
144 if (icu->driver !=
NULL) {
183 .struct_size =
sizeof(
Ipo),
185 .name_plural =
"ipos",
186 .translation_context =
"",
195 .foreach_cache =
NULL,
203 .blend_read_undo_preserve =
NULL,
205 .lib_override_apply_post =
NULL,
226 {(1 << 0),
"layers", 0}, {(1 << 1),
"layers", 1}, {(1 << 2),
"layers", 2},
227 {(1 << 3),
"layers", 3}, {(1 << 4),
"layers", 4}, {(1 << 5),
"layers", 5},
228 {(1 << 6),
"layers", 6}, {(1 << 7),
"layers", 7}, {(1 << 8),
"layers", 8},
229 {(1 << 9),
"layers", 9}, {(1 << 10),
"layers", 10}, {(1 << 11),
"layers", 11},
230 {(1 << 12),
"layers", 12}, {(1 << 13),
"layers", 13}, {(1 << 14),
"layers", 14},
231 {(1 << 15),
"layers", 15}, {(1 << 16),
"layers", 16}, {(1 << 17),
"layers", 17},
232 {(1 << 18),
"layers", 18}, {(1 << 19),
"layers", 19},
238 #define RET_ABP(items) \
240 *tot = ARRAY_SIZE(items); \
281 return "delta_location";
284 return "delta_location";
287 return "delta_location";
291 return "rotation_euler";
294 return "rotation_euler";
297 return "rotation_euler";
300 return "delta_rotation_euler";
303 return "delta_rotation_euler";
306 return "delta_rotation_euler";
319 return "delta_scale";
322 return "delta_scale";
325 return "delta_scale";
341 poin = &(ob->pd->f_strength);
346 poin = &(ob->pd->f_power);
351 poin = &(ob->pd->pdef_damp);
356 poin = &(ob->pd->pdef_rdamp);
361 poin = &(ob->pd->pdef_perm);
366 poin = &(ob->pd->maxdist);
387 return "rotation_quaternion";
390 return "rotation_quaternion";
393 return "rotation_quaternion";
396 return "rotation_quaternion";
400 return "rotation_euler";
403 return "rotation_euler";
406 return "rotation_euler";
430 CLOG_ERROR(&
LOG,
"unmatched PoseChannel setting (code %d)", adrcode);
446 return "data.head_tail";
458 static char buf[128];
473 char kb_name_esc[
sizeof(kb->
name) * 2];
475 BLI_snprintf(buf,
sizeof(buf),
"key_blocks[\"%s\"].value", kb_name_esc);
479 BLI_snprintf(buf,
sizeof(buf),
"key_blocks[%d].value", adrcode);
488 const char *base =
NULL, *prop =
NULL;
489 static char buf[128];
493 base =
"textures[0]";
496 base =
"textures[1]";
499 base =
"textures[2]";
502 base =
"textures[3]";
505 base =
"textures[4]";
508 base =
"textures[5]";
511 base =
"textures[6]";
514 base =
"textures[7]";
517 base =
"textures[8]";
520 base =
"textures[9]";
523 base =
"textures[10]";
526 base =
"textures[11]";
529 base =
"textures[12]";
532 base =
"textures[13]";
535 base =
"textures[14]";
538 base =
"textures[15]";
541 base =
"textures[16]";
544 base =
"textures[17]";
548 adrcode = (adrcode & (
MA_MAP1 - 1));
552 poin = &(mtex->ofs[0]);
555 poin = &(mtex->ofs[1]);
558 poin = &(mtex->ofs[2]);
561 poin = &(mtex->size[0]);
564 poin = &(mtex->size[1]);
567 poin = &(mtex->size[2]);
579 poin = &(mtex->def_var);
582 poin = &(mtex->colfac);
585 poin = &(mtex->norfac);
588 poin = &(mtex->varfac);
592 prop =
"warp_factor";
626 return "noise_basis";
628 return "noise_basis";
633 return "feature_weights";
636 return "feature_weights";
639 return "feature_weights";
642 return "feature_weights";
644 return "minkovsky_exponent";
646 return "distance_metric";
652 return "noise_intensity";
656 return "distortion_amount";
663 return "highest_dimension";
702 return "diffuse_color";
705 return "diffuse_color";
708 return "diffuse_color";
712 return "specular_color";
715 return "specular_color";
718 return "specular_color";
722 return "mirror_color";
725 return "mirror_color";
728 return "mirror_color";
734 return "diffuse_intensity";
743 return "specular_intensity";
746 return "specular_hardness";
749 return "specular_opacity";
758 return "translucency";
761 return "raytrace_mirror.reflect";
764 return "raytrace_mirror.fresnel";
767 return "raytrace_mirror.fresnel_factor";
770 return "raytrace_transparency.fresnel";
773 return "raytrace_transparency.fresnel_factor";
797 return "ortho_scale";
813 poin = &(ca->YF_aperture);
816 poin = &(ca->dof_distance);
860 return "linear_attenuation";
862 return "quadratic_attenuation";
865 return "halo_intensity";
894 return "attenuation";
911 return "horizon_color";
914 return "horizon_color";
917 return "horizon_color";
920 return "zenith_color";
923 return "zenith_color";
926 return "zenith_color";
932 return "mist.intensity";
938 return "mist.height";
956 return "settings.clump_factor";
958 return "settings.angular_velocity_factor";
960 return "settings.particle_size";
962 return "settings.drag_factor";
964 return "settings.brownian_factor";
966 return "settings.damp_factor";
968 return "settings.length";
971 return "settings.acceleration";
974 return "settings.acceleration";
977 return "settings.acceleration";
979 return "settings.kink_amplitude";
981 return "settings.kink_frequency";
983 return "settings.kink_shape";
985 return "settings.billboard_tilt";
995 poin = &(part->pd->f_strength);
1000 poin = &(part->pd->f_power);
1005 poin = &(part->pd->maxdist);
1010 poin = &(part->pd2->f_strength);
1015 poin = &(part->pd2->f_power);
1020 poin = &(part->pd2->maxdist);
1052 const char *propname =
NULL;
1055 int dummy_index = 0;
1063 switch (blocktype) {
1112 propname =
"eval_time";
1120 propname =
"effect_fader";
1123 propname =
"speed_fader";
1126 propname =
"blend_alpha";
1140 CLOG_WARN(&
LOG,
"No path for blocktype %d, adrcode %d yet", blocktype, adrcode);
1148 if ((propname ==
NULL) && (blocktype > 0)) {
1160 *array_index = dummy_index;
1166 if ((actname && actname[0]) && (constname && constname[0])) {
1173 buf,
sizeof(buf),
"pose.bones[\"%s\"].constraints[\"%s\"]", actname_esc, constname_esc);
1175 else if (actname && actname[0]) {
1176 if ((blocktype ==
ID_OB) &&
STREQ(actname,
"Object")) {
1180 else if ((blocktype ==
ID_KE) &&
STREQ(actname,
"Shape")) {
1183 strcpy(buf,
"data.shape_keys");
1189 BLI_snprintf(buf,
sizeof(buf),
"pose.bones[\"%s\"]", actname_esc);
1192 else if (constname && constname[0]) {
1196 BLI_snprintf(buf,
sizeof(buf),
"constraints[\"%s\"]", constname_esc);
1200 char seq_name_esc[(
sizeof(seq->
name) - 2) * 2];
1202 BLI_snprintf(buf,
sizeof(buf),
"sequence_editor.sequences_all[\"%s\"]", seq_name_esc);
1219 if (array_index ==
NULL) {
1220 BLI_snprintf(buf,
sizeof(buf),
"[\"%d\"]", dummy_index);
1278 if (idriver->
name[0]) {
1298 dtar->
id = (
ID *)idriver->
ob;
1306 dtar->
id = (
ID *)idriver->
ob;
1320 dtar->
id = (
ID *)idriver->
ob;
1336 dtar->
id = (
ID *)idriver->
ob;
1353 if (groups && grpname) {
1361 memset(&tmp_act, 0,
sizeof(
bAction));
1388 sizeof(agrp->
name));
1492 if (abp && totbits) {
1497 printf(
"\tconvert bitflag ipocurve, totbits = %d\n", totbits);
1509 for (b = 0; b < totbits; b++, abp++) {
1513 if (b < (totbits - 1)) {
1539 for (dst = fcurve->
bezt, src = icu->
bezt, i = 0; i < fcurve->totvert; i++, dst++, src++) {
1560 if (((
int)(dst->
vec[1][1])) & (abp->
bit)) {
1561 dst->
vec[0][1] = dst->
vec[1][1] = dst->
vec[2][1] = 1.0f;
1564 dst->
vec[0][1] = dst->
vec[1][1] = dst->
vec[2][1] = 0.0f;
1605 for (dst = fcu->
bezt, src = icu->
bezt, i = 0; i < fcu->totvert; i++, dst++, src++) {
1635 dst->
vec[0][1] *= fac;
1636 dst->
vec[1][1] *= fac;
1637 dst->
vec[2][1] *= fac;
1668 dst->
vec[0][0] *= fac;
1669 dst->
vec[1][0] *= fac;
1670 dst->
vec[2][0] *= fac;
1680 dst->
vec[0][0] += offset;
1683 dst->
vec[1][0] += offset;
1686 dst->
vec[2][0] += offset;
1725 printf(
"ipo_to_animato\n");
1769 for (icu = ipo->
curve.
first; icu; icu = icn) {
1814 for (achan = act->chanbase.first; achan; achan = achann) {
1816 achann = achan->
next;
1828 conchann = conchan->
next;
1833 id, conchan->
ipo, achan->
name, conchan->
name,
NULL, groups, curves, drivers);
1870 printf(
"ipo to animdata - ID:%s, IPO:%s, actname:%s constname:%s seqname:%s curves:%d\n",
1873 (actname) ? actname :
"<None>",
1874 (constname) ? constname :
"<None>",
1875 (seq) ? (seq->
name + 2) :
"<None>",
1888 printf(
"\thas anim\n");
1898 printf(
"\t\tadded new action - '%s'\n", nameBuf);
1907 if (drivers.
first) {
1909 printf(
"\thas drivers\n");
1924 if (
ELEM(
NULL, adt, act->chanbase.first)) {
1932 printf(
"act_to_adt - set adt action to act\n");
1956 for (as = strips->
first; as; as = asn) {
2060 if (bmain ==
NULL) {
2071 printf(
"INFO: Converting to Animato...\n");
2084 printf(
"\tconverting ob %s\n",
id->
name + 2);
2088 if (ob->nlastrips.first) {
2110 else if ((ob->ipo) || (ob->action)) {
2119 if (ob->action != adt->
action) {
2177 if (ob->constraintChannels.first) {
2181 for (conchan = ob->constraintChannels.first; conchan; conchan = conchann) {
2183 conchann = conchan->
next;
2200 if (adt && adt->
action) {
2211 printf(
"\tconverting key %s\n",
id->
name + 2);
2239 printf(
"\tconverting material %s\n",
id->
name + 2);
2264 printf(
"\tconverting world %s\n",
id->
name + 2);
2294 IpoCurve *icu = (seq->ipo) ? seq->ipo->curve.first :
NULL;
2298 printf(
"\tconverting sequence strip %s\n", seq->
name + 2);
2310 switch (seq->
type) {
2343 printf(
"\tconverting texture %s\n",
id->
name + 2);
2368 printf(
"\tconverting camera %s\n",
id->
name + 2);
2393 printf(
"\tconverting light %s\n",
id->
name + 2);
2418 printf(
"\tconverting curve %s\n",
id->
name + 2);
2454 printf(
"\tconverting action %s\n",
id->
name + 2);
2458 if (act->chanbase.first) {
2471 printf(
"\tconverting ipo %s\n",
id->
name + 2);
2493 printf(
"INFO: Animato convert done\n");
typedef float(TangentPoint)[2]
Blender kernel action and pose functionality.
struct bActionGroup * BKE_action_group_find_name(struct bAction *act, const char name[])
struct bAction * BKE_action_add(struct Main *bmain, const char name[])
void action_groups_add_channel(struct bAction *act, struct bActionGroup *agrp, struct FCurve *fcurve)
struct AnimData * BKE_animdata_from_id(struct ID *id)
struct AnimData * BKE_animdata_add_id(struct ID *id)
struct FCurve * BKE_fcurve_copy(const struct FCurve *fcu)
void BKE_fcurves_free(ListBase *list)
struct FModifier * add_fmodifier(ListBase *modifiers, int type, struct FCurve *owner_fcu)
struct FCurve * BKE_fcurve_create(void)
struct DriverVar * driver_add_new_variable(struct ChannelDriver *driver)
void driver_change_variable_type(struct DriverVar *dvar, int type)
@ IDTYPE_FLAGS_NO_MAKELOCAL
@ IDTYPE_FLAGS_NO_ANIMDATA
@ IDTYPE_FLAGS_NO_LIBLINKING
struct KeyBlock * BKE_keyblock_from_key(struct Key *key, int index)
void id_us_min(struct ID *id)
void BKE_nlastrip_validate_name(struct AnimData *adt, struct NlaStrip *strip)
struct NlaTrack * BKE_nlatrack_add(struct AnimData *adt, struct NlaTrack *prev, bool is_liboverride)
bool BKE_nlatrack_add_strip(struct NlaTrack *nlt, struct NlaStrip *strip, const bool is_liboverride)
A dynamically sized string ADT.
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
char * BLI_dynstr_get_cstring(DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_dynstr_append(DynStr *__restrict ds, const char *cstr) ATTR_NONNULL()
BLI_INLINE void BLI_endian_switch_int16(short *val) ATTR_NONNULL(1)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void BLI_movelisttolist(struct ListBase *dst, struct ListBase *src) ATTR_NONNULL(1
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, const size_t dst_maxncpy) ATTR_NONNULL()
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
bool BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t len)
#define BLO_read_data_address(reader, ptr_p)
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
#define BLO_read_id_address(reader, lib, id_ptr_p)
#define BLO_expand(expander, id)
bool BLO_read_requires_endian_switch(BlendDataReader *reader)
#define CLOG_ERROR(clg_ref,...)
#define CLOG_WARN(clg_ref,...)
#define ID_REAL_USERS(id)
@ NLASTRIP_FLAG_AUTO_BLENDS
@ NLASTRIP_FLAG_SYNC_LENGTH
@ FCM_EXTRAPOLATE_CYCLIC_OFFSET
@ DVAR_TYPE_TRANSFORM_CHAN
@ NLASTRIP_EXTEND_NOTHING
#define IPO_DRIVER_TYPE_PYTHON
Object is a sort of wrapper for general info.
@ SEQ_USE_EFFECT_DEFAULT_FADE
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
#define SEQ_ALL_BEGIN(ed, _seq)
static void mul(btAlignedObjectArray< T > &items, const Q &value)
static const char * ob_adrcodes_to_paths(int adrcode, int *array_index)
static AdrBit2Path ob_layer_bits[]
static void ipo_blend_read_data(BlendDataReader *reader, ID *id)
static void action_to_animato(ID *id, bAction *act, ListBase *groups, ListBase *curves, ListBase *drivers)
static char * shapekey_adrcodes_to_paths(ID *id, int adrcode, int *UNUSED(array_index))
static const char * pchan_adrcodes_to_paths(int adrcode, int *array_index)
static void ipo_blend_read_lib(BlendLibReader *reader, ID *id)
static void nlastrips_to_animdata(ID *id, ListBase *strips)
static void ipo_blend_read_expand(BlendExpander *expander, ID *id)
static void action_to_animdata(ID *id, bAction *act)
static const char * sound_adrcodes_to_paths(int adrcode, int *array_index)
struct AdrBit2Path AdrBit2Path
static const char * light_adrcodes_to_paths(int adrcode, int *array_index)
static void ipo_to_animato(ID *id, Ipo *ipo, char actname[], char constname[], Sequence *seq, ListBase *animgroups, ListBase *anim, ListBase *drivers)
static const char * texture_adrcodes_to_paths(int adrcode, int *array_index)
static const char * constraint_adrcodes_to_paths(int adrcode, int *array_index)
void do_versions_ipos_to_animato(Main *bmain)
static ChannelDriver * idriver_to_cdriver(IpoDriver *idriver)
static AdrBit2Path * adrcode_bitmaps_to_paths(int blocktype, int adrcode, int *tot)
static void ipo_to_animdata(Main *bmain, ID *id, Ipo *ipo, char actname[], char constname[], Sequence *seq)
static void icu_to_fcurves(ID *id, ListBase *groups, ListBase *list, IpoCurve *icu, char *actname, char *constname, Sequence *seq, int muteipo)
static const char * camera_adrcodes_to_paths(int adrcode, int *array_index)
static const char * material_adrcodes_to_paths(int adrcode, int *array_index)
static const char * particle_adrcodes_to_paths(int adrcode, int *array_index)
static const char * world_adrcodes_to_paths(int adrcode, int *array_index)
static short adrcode_to_dtar_transchan(short adrcode)
static void fcurve_add_to_list(ListBase *groups, ListBase *list, FCurve *fcu, char *grpname, int muteipo)
static void ipo_free_data(ID *id)
static char * get_rna_access(ID *id, int blocktype, int adrcode, char actname[], char constname[], Sequence *seq, int *array_index)
static const char * mtex_adrcodes_to_paths(int adrcode, int *UNUSED(array_index))
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
struct bActionChannel * next
ListBase constraintChannels
struct bActionStrip * next
struct bConstraintChannel * next
struct bConstraint * next
struct bPoseChannel * next