Forum Replies Created

Page 59 of 277
  • I’m assuming that when you type Carl in B,

    C shows:

    Carl Jones (1), Carl Jones (2), Carl Smith…

    but also:

    Carlos Esperanz, Carla Rogers, Geoff Carlston…

    The expression for C’s sourceText:

    names = thisComp.layer("A").text.sourceText.replace("\u200B","").split(","); // this makes it an Array, (after removing any invisible spaces)

    word = thisComp.layer("B").text.sourceText.value;

    regex = new RegExp(word, "gi"); // ,"i" makes it a case insensitive search

    if (word.length > 0) {

    names

    .filter(a => a.match(regex)) // only array elements that match the word

    .map(a => a.trim().replace(regex, "\u200B$&\u200B")) // trim extra whitespace, then surround the found queries with invisible spaces

    .join("\r"); // turns the array into a string

    } else {

    "";

    }

    Now, you can’t set the styling of individual characters, so we have to faux our faux bold with a text animator. That’s why we inserted the invisible spaces (Unicode character 200B = “\u200B”) around every match we want to highlight.

    Paste these keyframes on the layer C, and resulting Animator should be a “faux bold”

    Adobe After Effects 8.0 Keyframe Data
    Units Per Second 30
    Source Width 1
    Source Height 1
    Source Pixel Aspect Ratio 1
    Comp Pixel Aspect Ratio 1
    Text Animators Animator #1 Selectors Expression Selector #1 Amount
    Frame X percent Y percent Z percent
    100 100 100
    Expression Data
    txt=text.sourceText.value.replace(/\r/g,""); // text without line breaks because the textIndex doesn't count them as a character
    sel=false;
    for (i=1; i<textindex; i++)="" {<br=""> if (txt[i-1]=="\u200B") sel = !sel;
    }
    sel && txt[i-1]!="\u200B" ? 100 : 0;
    End of Expression Data
    Text Animators Animator #1 Selectors Expression Selector #1 Based On
    Frame
    1
    Text Animators Animator #1 Properties Stroke Color
    Frame alpha red green blue
    255 255 0 0
    Expression Data
    rgb=text.sourceText.style.fillColor;
    rgb.push(1);
    rgb;
    End of Expression Data
    Text Animators Animator #1 Properties Stroke Width
    Frame
    10
    Expression Data
    text.sourceText.style.fontSize/24;
    End of Expression Data
    Text Animators Animator #1 Properties Tracking Amount
    Frame
    0.8
    Text Animators Animator #1 Properties Tracking Type
    Frame
    3
    Text Animators Animator #1 Properties Stroke Opacity
    Frame percent
    100
    Expression Data
    100
    End of Expression Data
    End of Keyframe Data</textindex;>
  • If you create a dropdown menu controller, the result (.value) of those is an integer (1-n) of which item is selected.

    So you need to set up a dropdown menu with the options “period”, “comma”, “space” and use the value of that to get a value out of a fixed array (0 – n-1) that is also defined in your expression, and uses the corrsponding strings like so:

    dropdownValues=[".", ",", " "];
    dropdownindex=thisComp.layer("control").effect("thousands separator")("Menu").value;
    selectedValue = dropdownValues[dropdownindex-1];
  • Filip Vandueren

    February 26, 2021 at 3:44 pm in reply to: Render Friendly Alternative to Echo

    Cc blend time, which you can access via the animation presets available here:

    http://www.cycorefx.com/dloads_ccfxhd.php

    It’s an officially unsupported but lightning fast way to just copy the previous render buffer back over the frame. Which means it doesn’t do what you expect it to do if you quickly scrub around the timeline. So clear the cache often and just do straight ram previews from start to finish of the layer to get the actual effect.

  • Filip Vandueren

    February 24, 2021 at 10:12 pm in reply to: Changing text position by determining character length

    The easiest way is to parent the 3rd to the 2nd and the 2nd to the first word.

    Then give 2nd and 3rd words position properties both this expression:

    [20,0] + [parent.sourceRectAtTime().width,0];

    20 in this case is the horizontal margin between the words.

  • Filip Vandueren

    February 24, 2021 at 10:55 am in reply to: Expression Query for Word Processor Cursor

    There’s no easy way to just get the position of the final character.

    Your best bet is to create a duplicate text-layer where all characters except the last one are scaled down to be 0,0%, and then use sourceRectAtTime() to find the pixel-coordinates of the layer, and thus the single characrer.

  • Filip Vandueren

    February 24, 2021 at 8:39 am in reply to: Multi-object uniform scale wiggle + loop

    Forgot to mention: to get a perfectly looping wiggly text selector, you can do this:
    Set wiggles per second to 0
    add this expression to temporal phase:

    loopTime = 10;
    wigglesperSecond = 1;
    a=degreesToRadians(time * 360/loopTime);
    r=360*(loopTime*wigglesperSecond)/(2*Math.PI);
    Math.cos(a)*r;

    add this expression to spatial phase:

    loopTime = 10;
    wigglesperSecond = 1;
    a=degreesToRadians(time * 360/loopTime);
    r=360*(loopTime*wigglesperSecond)/(2*Math.PI);
    Math.sin(a)*r;

    So exactly the same except cos vs sin. This will get random values along a circle, so after loopTime we are back at the start of the circle and encounter the same randomvalues. Similar to two dimensions of a noise() function.

  • Filip Vandueren

    February 24, 2021 at 8:18 am in reply to: Multi-object uniform scale wiggle + loop

    If you use a font like Source Serif Pro that has unicode glyphs for triangle upa nd trianlge down, then you can do this with a text animator.

    Make a new empty text-layer, then paste these settings on them.

    This worked perfectly for me with these fontsettings:

    Source Serif Pro Regular, 64 px /38px leading, tracking -74,

    But you can tweak those to get more or less spacing. And you should use less repeats in the sourceText expression

    Adobe After Effects 8.0 Keyframe Data
    Units Per Second 25
    Source Width 1
    Source Height 1
    Source Pixel Aspect Ratio 1
    Comp Pixel Aspect Ratio 1
    Text Source Text
    Frame
    Expression Data
    (("▲▼".repeat(30)+"\r")+("▼▲".repeat(30)+"\r")).repeat(15);
    End of Expression Data
    Text More Options Grouping Alignment
    Frame X percent Y percent
    0 -33.3333
    Text Animators Animator #1 Selectors Text #1 Min Amount
    Frame percent
    0
    Text Animators Animator #1 Selectors Text #1 Lock Dimensions
    Frame
    1
    Text Animators Animator #1 Properties Scale
    Frame X percent Y percent Z percent
    0 0 0
    Text Animators Animator #2 Selectors Text #1 Min Amount
    Frame percent
    0
    Text Animators Animator #2 Selectors Text #1 Lock Dimensions
    Frame
    1
    Text Animators Animator #2 Properties Opacity
    Frame percent
    0
    Transform Position
    Frame X pixels Y pixels Z pixels
    -28 18 0
    End of Keyframe Data
  • Filip Vandueren

    February 23, 2021 at 8:01 pm in reply to: Text highlight (expression selector)

    It’s not that easy I believe, because the brackets could span multiple lines and you have to test for that.

    Like I hinted, usually just a bit of extra horizontal padding can bleed them together.

    BTW: I haven’t actually tested it in Premiere ? I hope it doesn’t break there ?

  • Filip Vandueren

    February 23, 2021 at 3:43 pm in reply to: Text highlight (expression selector)

    Oh yeah as a bonus: since the marker lines are textcharacters you can do all kinds of fancy reveal animations with them by varying the type of range selector and or adding different properties instead of just the horizontal scaling I did in the example

  • Filip Vandueren

    February 23, 2021 at 3:40 pm in reply to: Text highlight (expression selector)

    Thanks Yoan 🙂

    I use calculations here to copy some pixels from another layer to this layer and combine it with the alpha.

    That way we get the words of the text layer, but matted by the alpha of the marker.

    Then we colorize and finally, using cc blend, the original pixels of the layer (again, the marker lines) are composited under the words.

    It’s a way to do compositing using effects rather than with extra layers. Usually you have to take care that the layers are of equal size, but because we are operating on continuously rasterized text-layers every layer is interpreted as composition sized.

Page 59 of 277

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