Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Expressions composition not updating when keyframe or time-vary stop watch is on

  • composition not updating when keyframe or time-vary stop watch is on

    Posted by Ben Wolfinsohn on November 23, 2012 at 8:16 am

    let me try to explain what i have going on best i can here –

    comp 1 – has 2 items, a null with 2 sliders that control a characters head rotation and body rotation, and it has comp 2 in it.
    comp 2 – has the pre comp of comp 3 and is timeremaped, that time remapping is being controlled in the slider in comp 1.
    comp 3 holds the body rotation and holds comp 4.
    comp 4 holds the head rotation, that head rotation is controlled by the slider in comp 1.

    when I move the sliders in comp 1 everything moves as it should. BUT when I start to add keyframes onto the sliders the sliders no longer update with the correct image. I assume this has something to do with the timeremapping but can’t figure out how to get the keyframes to work.

    note- and I made sure all of my comps are the same length and frame rates

    Ben Wolfinsohn replied 13 years, 5 months ago 2 Members · 11 Replies
  • 11 Replies
  • Dan Ebberts

    November 23, 2012 at 4:49 pm

    I don’t think you’re going to be able to get nested time-remapped comps to work the way you’re expecting.

    For example, suppose you’ve got a control for the outer time-remaped comp to set to 1 second. Then you keyframe the control for the time remapping of one of the nested comps. You would be expecting the same frame (at 1 second) of the outer comp to render differently, depending on what’s going on in the nested comp. I don’t see how that could work.

    Dan

  • Ben Wolfinsohn

    November 23, 2012 at 10:07 pm

    ok. if I can’t do that, then how about this?

    if i have 1 object and 4 nulls in a comp. and i want to be able to have the object follow the position and the scale of each null individually with a slider on a 5th null that allows you to change with of the 4 nulls its following. so if you took the slider on the 5th null to 1 the object would follow null 1 and if you took the slider to 3 it would follow the 3rd null.

  • Dan Ebberts

    November 23, 2012 at 10:31 pm

    You could do that with something like this (for position):

    slider = thisComp.layer(“Null 5”).effect(“Slider Control”)(“Slider”);
    thisComp.layer(“Null “+ clamp (parseInt(slider,10),1,4)).transform.position;

    Dan

  • Ben Wolfinsohn

    November 23, 2012 at 10:41 pm

    great. and how about this – can i have the position of an object pointing to a slider in the null, so when the slider goes to 1 the position is 140,140. and if the slider goes to 2 then the position goes to 145,145, and so on. so i can somehow manually put in the position and then the slider takes it there.
    thanks!

  • Dan Ebberts

    November 23, 2012 at 11:45 pm

    Something like this should work:

    slider = thisComp.layer(“Null 1”).effect(“Slider Control”)(“Slider”);
    pos = [[100,100],[200,200],[300,300],[400,400]];

    idx = clamp(parseInt(slider,10),0,pos.length-1);
    pos[idx]

    This will give you the first postion ([100,100]) when the slider is zero, but it would be pretty easy to change that to 1 if you really want that.

    Dan

  • Ben Wolfinsohn

    November 26, 2012 at 5:32 am

    slider = thisComp.layer(“Null 5”).effect(“Slider Control”)(“Slider”);
    thisComp.layer(“Null “+ clamp (parseInt(slider,10),1,4)).transform.position;

    one last thing on this one regards to the above-

    instead of the slider on null 5 telling it which null it should follow, what if i had 4 more nulls, each null had its own slider, the nulls were called null 6 though 9, and when the slider on null 6 was > 1 then it would follow the position of null 1, and when the slider on null 7 was > 1 then it would follow the position of null 2 and so on all the way to null 4. does that make sense?

    thanks!

  • Ben Wolfinsohn

    November 26, 2012 at 6:43 am

    i thought i got it below, but it gives me an error – getting an error of – invalid numeric result (divide by zero?)

    slider = thisComp.layer(“all head-body contols view 1”).effect(“turning”)(“Slider”) > 1;
    comp(“body-head together comp Pre-comp 1”).layer(“Null “+ clamp (parseInt(slider,10),1,8)).transform.position;

  • Dan Ebberts

    November 26, 2012 at 8:06 am

    I don’t understand what you’re trying to do with the ” > 1″ part in the first line. It will turn your slider variable into a boolean with a value of true or false, which won’t work in the second line.

    Dan

  • Ben Wolfinsohn

    November 26, 2012 at 8:35 am

    maybe i can explain a bit better what i’m trying to do –

    I have 6 null layers, 1 though 6, with sliders in them.
    I have a 7th null that has a slider.
    when null 1 has a value greater then 1 in the slider it forces the 7th null to go to a value of 1
    when null 2 has a value greater then 2 in the slider it forces the 7th null to go to a value of 2
    and so on down the row….

    thats what i need if that makes sense.

    thanks!

  • Dan Ebberts

    November 26, 2012 at 7:31 pm

    Maybe something like this:

    if (thisComp.layer(“Null 6”).effect(“Slider Control”)(“Slider”) > 6)
    6
    else if (thisComp.layer(“Null 5”).effect(“Slider Control”)(“Slider”) > 5)
    5
    else if (thisComp.layer(“Null 4”).effect(“Slider Control”)(“Slider”) > 4)
    4
    else if (thisComp.layer(“Null 3”).effect(“Slider Control”)(“Slider”) > 3)
    3
    else if (thisComp.layer(“Null 2”).effect(“Slider Control”)(“Slider”) > 2)
    2
    else if (thisComp.layer(“Null 1”).effect(“Slider Control”)(“Slider”) > 1)
    1
    else
    0

    Dan

Page 1 of 2

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy