Forum Replies Created

Page 12 of 277
  • Filip Vandueren

    April 20, 2023 at 7:50 am in reply to: Random vertical strokes generator!

    Two avenues:

    create a precomp with narrow solid layers and add very slow wiggles() to the position and horizontal scale, you’ll get more or less lines by adding more layers.

    Or instead of noise, I experimented with a Cell Pattern (Crystals) that was stretched out with CC Scale Wipes and got this:

    https://imgur.com/a/tpZ2vg2

    Using the offset results in sliding over an irregular grid where lines always join or split, but never suddenly disappear. And using evolution gives a different effect, but like noise, the evolution can optionally be seamlessly looped which can be interesting

    View post on imgur.com

  • Filip Vandueren

    April 19, 2023 at 8:57 pm in reply to: Random vertical strokes generator!

    It is something that can be done with expressions, or with a particle systems, or perhaps even with fractal noise with some different settings, but it’s hard to pinpoint without seeing a few styleframes, or a render with a description of what’s good and what’s lacking.

    Not sure what you meant with the sudden disappearance of the lines ?

  • Filip Vandueren

    April 18, 2023 at 8:08 am in reply to: Golden Cow Tutorial

    Hi Craig,¨

    you’re in luck as it seems to have been all harvested by the wayback machine at archive.org:

    https://web.archive.org/web/20100115184944/http://leaders.creativecow.net/leaders/hamad_serge/

    (some images are missing but most of it is there.)

  • Filip Vandueren

    April 18, 2023 at 7:57 am in reply to: Shape width match

    yes, the expression is formulated so that it can be used on both.

  • BTW,

    const heightLog2 = Math.ceil(Math.log(h)/Math.log(2));
    const widthLog2 = Math.ceil(Math.log(w)/Math.log(2));

    These should both be Math.floor in hindsight.

  • Filip Vandueren

    April 16, 2023 at 3:11 pm in reply to: Shape width match

    Hi Mario,

    I would use Math.max like this on both “width” sliders:

    Math.max(
    thisComp.layer("Subtitle").sourceRectAtTime().width + thisComp.layer("SubtitleBg").effect("SubtitleMargin")("Slider").value
    ,
    thisComp.layer("Title").sourceRectAtTime().width + thisComp.layer("TitleBg").effect("Margin")("Slider").value
    );

    And if you use Centered paragraphs you might want to add this expression on both the sourceText properties:

    text.sourceText.trim();

    This disregards any Whitespace at start and end of a string. (they don’t count for the sourceRect width, but they do alter the layout of the paragraph, so that in an edge case, a name preceded or followed by 100 spaces pushes the text out of its box)

  • Hi Rasit,

    it works correctly for me with multiple text keyframes,

    even when those keyframes have different style settings.

  • Hey Adam,

    There’s a bug in After Effects that when using posterizeTime(0) it shows you a wrong value in the timeline, but it’s not the actual value being used.

    if you change to posterizeTime(0.1), or omit the line, you’ll see the same visual result, but the actual number that’s calculated. So even though it says the scale is reported as negative, it is behind the scenes correct. (if you pick whip a different property to it, you’ll see the correct value for example)

    The layer that doesn’t work is continuously rasterized, which seems to confuse the coordinate system sampleImage uses, not sure how to fix that…

    perhaps by using 1 invisible non continuosly rasterized version as a parent of the rasterized one is a quick hack.

  • Hey Adam,

    This gives you everything you need:

    posterizeTime(0);
    const l = thisComp.layer("Logo");
    const w = l.width;
    const h = l.height;
    const heightLog2 = Math.ceil(Math.log(h)/Math.log(2));
    const widthLog2 = Math.ceil(Math.log(w)/Math.log(2));
    const threshold = 1; // on average 1 pixel in a row is opaque to count as the topEdge;
    var topEdge = 0;
    var bottomEdge = h;
    for(i=heightLog2; i>-1; i--) {
    let partition = 2 ** i;
    let s = l.sampleImage([w / 2, topEdge+partition/2], [w / 2, partition/2], false, time);
    if (s[3]<=threshold/(w*partition)) topEdge+=partition;
    s = l.sampleImage([w / 2, bottomEdge-partition/2], [w / 2, partition/2], false, time);
    if (s[3]<=threshold/(w*partition)) bottomEdge-=partition;
    }
    var leftEdge = 0;
    var rightEdge = w;
    for(i=widthLog2; i>-1; i--) {
    let partition = 2 ** i;
    let s = l.sampleImage([leftEdge+partition/2, h / 2], [partition/2, h / 2], false, time);
    if (s[3]<=threshold/(h*partition)) leftEdge+=partition;
    s = l.sampleImage([rightEdge-partition/2, h / 2], [partition/2, h / 2, ], false, time);
    if (s[3]<=threshold/(h*partition)) rightEdge-=partition;
    }
    alphaRect= {
    left: leftEdge,
    top: topEdge,
    right: rightEdge,
    bottom: bottomEdge,
    width: rightEdge-leftEdge,
    height: bottomEdge - topEdge,
    center: mul([leftEdge+rightEdge, topEdge+bottomEdge],0.5)
    };

    With this setup code you can use the properties of alphaRect on scale and anchorPoint to center and scale up like this:

    anchorPoint:

    alphaRect.center;

    scale:

    mul(
    [100,100],
    Math.min(thisComp.width/alphaRect.width, thisComp.height/alphaRect.height)
    );

    Now, because both scale and anchorPoint need to know the value of alphaRect, you will have to copy the whole first code in both, and only add that last bit for each.

    and maybe position needs to be explicitly centered ?

    [thisComp.width/2, thisComp.height/2];

  • Filip Vandueren

    April 13, 2023 at 7:38 am in reply to: Counter – no moving text + no monospace

    You can use a text animator that transforms the numbers with unicode character offsets instead of changing the sourceText, unless you explicitly choose the “adjust kerning” option, the following text will not move.

Page 12 of 277

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