Há um tempo, fiz um trabalho para o Canal 90 que consistia de 2 transições e um lower third editável, com base na identidade que o canal já tinha.
As transições não têm nada demais, só precisei gastar um tempo no Photoshop para criar e combinar as formas e texturas (Bauhaus/Memphis pode ser mais complicado do que parece, às vezes) e depois animar e sonorizar.
O lower third, por outro lado, tinha uma particularidade que me fez quebrar a cabeça: os elementos que acompanhavam o texto deveriam obedecer a largura do retângulo principal. Juro que não achei nada sobre isso na época - não achei até hoje, inclusive - então precisei botar a cabecinha pra funcionar e achei que seria legal deixar público pra quem quisesse usar. Caso alguém saiba de outra forma de atingir o mesmo objetivo, me manda uma DM no Twitter. Não precisa nem ser mais fácil, só diferente, por curiosidade.
Acho que é melhor começarmos pelo mais fácil: a parte central. Caso você não tenha familiaridade com lower thirds editáveis no After Effects, a expressão que a gente usa é sourceRectAtTime().
Basicamente, é só criar um texto e um Rectangle Path por trás. Quando a expressão for aplicada, o retângulo automaticamente vai obedecer ao tamanho do texto.
A única coisa que eu fiz a mais foi alterar o Skew do retângulo, para deixar nem tão retangular, e a Rotation. Isso tira um pouco da dureza que a forma retangular naturalmente tem. E apliquei um Drop Shadow.
Para uma explicação mais detalhada sobre sourceRectAtTime(), eu recomendo este vídeo do ECAbrams. Aliás, o canal inteiro desse cara é muito bom pra quem gosta de brincar com expressões e animações procedurais no After Effects.
Ok, agora vamos ao motivo pelo qual você está aqui e vamos falar dos elementos. Novamente: a nossa ideia aqui é fazer os elementos continuarem nas bordas do retângulo independente do tamanho dele.
A minha ideia (que funcionou; tiveram outras que não funcionaram) foi capturar de alguma forma a distância do centro até uma das bordas do retângulo e usar esse valor como referência para o elemento. Isso aqui é mais matemática do que de fato Javascript ou After Effects.
O jeito que eu encontrei foi ligar o Size do retângulo à posição do elemento. Nesse caso, size[0], afinal só estamos mexendo no eixo X.
Quase isso. Se a gente pegar esse valor do Size, somar à largura da composição (como essa é uma composição em Full HD, 1920px) e dividir tudo por 2, o resultado é a posição da borda do retângulo. Exatamente o que a gente precisa.
temp = thisComp.layer("rectangle").content("Rectangle 1").content("Rectangle Path 1").size[0];metade = (temp+1920)/2;
[metade, value[1]]
Essa é a expressão completa. Lembre-se de alterar os nomes entre aspas de acordo com o nome da sua layer. Caso queira que o elemento fique do lado esquerdo, altere a segunda linha de temp para -temp
Graças ao Abiscoitado, existe uma versão atualizada dessa expressão que funciona tanto no eixo X quanto no eixo Y. Aproveitei e dei nomes mais fáceis de entender para as variáveis.
x = thisComp.layer("shape").content("Rectangle 1").content("Rectangle Path 1").size[0];y = thisComp.layer("shape").content("Rectangle 1").content("Rectangle Path 1").size[1];
metadeX = (x + 1920) / 2;
metadeY = (y + 1080) / 2;
[metadeX, metadeY]
O princípio é o mesmo. Alterar os nomes das layers para ficar de acordo e usar x, -x, y e -y de acordo com a necessidade. Não se esqueça de alterar os valores de metadeX e metadeY de acordo com as dimensões do seu projeto.
Espero ter ajudado! Algumes amigues já fizeram uso dessa minha expressão em lower thirds para uso próprio ou para clientes e eu acho muito legal poder ter ajudado. Assim que possível, vou adicionar alguns exemplos aqui.
Caso tenha alguma dúvida ou queira me mostrar o que fez com a expressão, pode me mandar uma DM ou mention no Twitter!