Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Expressions Position changes rotation expression

  • Position changes rotation expression

    Posted by Wick Van den belt on November 18, 2014 at 10:52 am

    Dear Cow-Forum,

    I have a very simple character that needs a certain expression that I just can’t seem to figure out.
    The main idea is that I want the Y-position of a certain layer to influence the rotation of another layer.

    To kind of explain the situation : I have a character that jumps up and down. (So just ‘bounces’ on the y position)
    I have a few separate layers which are the hairs of the character. (It’s a round, fluffy type of character)
    I have the hair layers parented to the main body, and I would like these to slightly rotate when the character moves up and down. If it would be just 1 shot I could obviously do that manually, but the character bounces around quite a lot so I think that an expression would work the best in this situation.

    So it would be a kind of expression saying : If Position-value of ‘Layer1’ decreases rotate this layer X degrees. If position-value of Layer1 increases rotate this layer X degrees.

    I hope anyone could point me in the right direction here.
    Many thanks!

    WickieMedia.net

    Wick Van den belt replied 11 years, 5 months ago 2 Members · 2 Replies
  • 2 Replies
  • David Conklin

    November 18, 2014 at 3:55 pm

    To get this to work, you need to know what the Y-val of your character would be on the ground as well as when he’s in the air. Additionally, you need to know what rotation vals you want those states to correspond to. Once you have those 4 values, it’s a very simple expression to link the two. For instance you could put this expression on your hair layer’s rotate property.

    This expression, in simple terms, basically says as yPosition goes from 0 to 100, rotation goes from 0 to 60.

    Hope it helps!

    //get the jumping layer
    var jump = thisComp.layer("jump_control").transform.position[1];

    //get values
    var groundY = 0; //the value of your character on the ground
    var jumpY = 100; //the value of your character in the air
    var groundRotate = 0; //the hair rotation on the ground
    var jumpRotate = 60; //the hair rotation in the air

    //use linear() to match these values
    linear(jump, groundY, jumpY, groundRotate, jumpRotate);

  • Wick Van den belt

    November 20, 2014 at 7:12 pm

    Worked like a charm!

    Thanks a lot!

    WickieMedia.net

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