forked from bartvdbraak/blender
Bugfix #20351:
- Offset parameter of the path constraint has no effect on the animation - Path animation was being repeated multiple times even though it was not supposed to
This commit is contained in:
parent
b2de6b93a6
commit
e01b030817
@ -1191,17 +1191,17 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
|
||||
if ((data->followflag & FOLLOWPATH_STATIC) == 0) {
|
||||
/* animated position along curve depending on time */
|
||||
if (cob->scene)
|
||||
curvetime= bsystem_time(cob->scene, ct->tar, ctime, 0.0) - data->offset;
|
||||
curvetime= bsystem_time(cob->scene, ct->tar, cu->ctime, 0.0) - data->offset;
|
||||
else
|
||||
curvetime= ctime - data->offset;
|
||||
curvetime= cu->ctime - data->offset;
|
||||
|
||||
/* ctime is now a proper var setting of Curve which gets set by Animato like any other var that's animated,
|
||||
* but this will only work if it actually is animated...
|
||||
*
|
||||
* we firstly calculate the modulus of cu->ctime/cu->pathlen to clamp ctime within the 0.0 to 1.0 times pathlen
|
||||
* range, then divide this (the modulus) by pathlen to get a value between 0.0 and 1.0
|
||||
* we divide the curvetime calculated in the previous step by the length of the path, to get a time
|
||||
* factor, which then gets clamped to lie within 0.0 - 1.0 range
|
||||
*/
|
||||
curvetime= fmod(cu->ctime, cu->pathlen) / cu->pathlen;
|
||||
curvetime /= cu->pathlen;
|
||||
CLAMP(curvetime, 0.0, 1.0);
|
||||
}
|
||||
else {
|
||||
@ -1251,9 +1251,9 @@ static void followpath_evaluate (bConstraint *con, bConstraintOb *cob, ListBase
|
||||
float size[3];
|
||||
bFollowPathConstraint *data= con->data;
|
||||
|
||||
/* get Object local transform (loc/rot/size) to determine transformation from path */
|
||||
//object_to_mat4(ob, obmat);
|
||||
copy_m4_m4(obmat, cob->matrix); // FIXME!!!
|
||||
/* get Object transform (loc/rot/size) to determine transformation from path */
|
||||
// TODO: this used to be local at one point, but is probably more useful as-is
|
||||
copy_m4_m4(obmat, cob->matrix);
|
||||
|
||||
/* get scaling of object before applying constraint */
|
||||
mat4_to_size(size, cob->matrix);
|
||||
|
@ -1664,10 +1664,10 @@ static void ob_parcurve(Scene *scene, Object *ob, Object *par, float mat[][4])
|
||||
/* ctime is now a proper var setting of Curve which gets set by Animato like any other var that's animated,
|
||||
* but this will only work if it actually is animated...
|
||||
*
|
||||
* we firstly calculate the modulus of cu->ctime/cu->pathlen to clamp ctime within the 0.0 to 1.0 times pathlen
|
||||
* range, then divide this (the modulus) by pathlen to get a value between 0.0 and 1.0
|
||||
* we divide the curvetime calculated in the previous step by the length of the path, to get a time
|
||||
* factor, which then gets clamped to lie within 0.0 - 1.0 range
|
||||
*/
|
||||
ctime= fmod(cu->ctime, cu->pathlen) / cu->pathlen;
|
||||
ctime= cu->ctime / cu->pathlen;
|
||||
CLAMP(ctime, 0.0, 1.0);
|
||||
}
|
||||
else {
|
||||
|
Loading…
Reference in New Issue
Block a user