Composição com transparência
Quando a transparência está envolvida em ambos os quadros processados por uma das transições de composição dinâmica do Kdenlive, o resultado pode surpreender alguns usuários. Felizmente, as coisas não são tão inexplicáveis quanto parecem, então vamos direto ao assunto: transparência e transições.
Transparência e transições dinâmicas
No que diz respeito ao tratamento da transparência, as transições do Kdenlive dividem-se em duas categorias:
Afim utiliza o operador de composição denominado acima
Composição, Composição e transformação, Mistura Cairo (Afim) utilizam o operador de composição sobre
Então, o que acima e sobre realmente significam? Vamos descobrir o que esses operadores de composição fazem usando um exemplo típico de título e fundo semitransparente. Para simplificar, primeiro ignoraremos o parâmetro de opacidade das transições mencionadas para facilitar a compreensão. Depois de dominarmos essa etapa, finalmente veremos como o parâmetro de opacidade se encaixa no contexto geral.
Afim: Composição acima
O resultado da composição acima é melhor explicado inicialmente mostrando seu efeito: o texto do clipe de título superior (parcialmente) desaparece nas regiões onde o clipe subjacente na faixa do meio é (semi)transparente.
O clipe quadriculado na parte inferior da faixa serve apenas para fins ilustrativos, para que possamos ver melhor as regiões transparentes.
Observe como as duas transições Afim estão encadeadas: primeiro, a transição Afim superior compõe o clipe do título sobre o fundo gradiente. Em seguida, a transição Afim inferior compõe o resultado sobre o fundo quadriculado.
Mas como exatamente a transição Afim lida com a transparência? Vejamos esta ilustração feita à mão, onde temos dois pixels com algum grau de transparência cada (os valores alfa, αA e αB). É importante não confundir a transparência do pixel com o parâmetro de opacidade das transições.
Nosso pixel vermelho vem do quadro de rastreamento superior (B), enquanto o pixel verde vem do quadro de rastreamento inferior (A). Um valor alfa de 0 significa um pixel completamente transparente, enquanto um valor alfa de 1,0 (ou 255) significa um pixel totalmente opaco.
A transição Afim agora simplesmente ignora as informações de transparência do pixel do quadro superior (o vermelho).
Utiliza exclusivamente a informação de transparência (verde) contida nos fotogramas inferiores! Ou, de forma mais matemática: α = αA
E essa é a explicação de por que, no exemplo acima, o texto do título desaparece nas regiões onde o clipe do meio é transparente.
Composição & Co: Sobreposição de composições
Novamente, basicamente usamos a mesma configuração de antes, mas desta vez usamos Composição e transformação em vez de transições Afim. Encadeamos as transições como antes, de modo que a transição inferior atue no resultado da transição superior.
Mas veja só: o resultado é diferente! O resultado do operador sobre provavelmente está mais de acordo com as expectativas da maioria dos usuários. Agora, o clipe de título superior não é mais cortado.
Uma vez que a operação sobre produz resultados mais próximos das expectativas de muitos de nós, como ela lida exatamente com a transparência?
Em termos simples: se você pintar um pixel semitransparente sobre outro pixel semitransparente, o resultado será menos transparente. Será ainda menos transparente do que a transparência do pixel do quadro inferior. Isso é o que provavelmente esperaríamos ao pintar com tinta semitransparente.
Calcular a transparência resultante para dois pixels dados de um quadro superior e (B) e um quadro inferior (A) é, portanto, mais complexo desta vez.
Novamente, começamos com a transparência do pixel do quadro inferior (verde) como base. Mas desta vez, não podemos ignorar a transparência do pixel do quadro superior (vermelho). Mas simplesmente somar as duas transparências não produziria resultados sensatos; o que significa uma transparência de 2,0 ou 511?
Portanto, a transparência do pixel vermelho é escalonada - você pode pensar em reduzir a escala original de 0 a 1,0 para o espaço disponível acima do valor de transparência verde. A transparência resultante é então a soma do valor alfa base verde, mais o valor alfa vermelho reescalonado. Lembre-se, nós meio que pintamos sobre o quadro inferior. Para a fórmula afim: α = αA + αB (1-αA)
Opacidade do parâmetro de transição
As transições de composição dinâmica também apresentam um parâmetro chamado Opacidade. É fácil confundi-lo com a transparência de pixels, mas é algo diferente. O parâmetro de opacidade se aplica apenas aos quadros superiores (B). É uma espécie de controle mestre, mas como funciona?
Vamos começar novamente com a transição Afim. Acima, vimos que a transição Afim ignora a transparência dos pixels (vermelhos) da parte superior do quadro. E a transição Afim também ignora o parâmetro de opacidade ao calcular a transparência de pixel resultante.
Em vez disso, o parâmetro de opacidade influencia como a cor do pixel resultante é calculada: trata-se de uma interpolação linear entre a cor do pixel do quadro superior e (B) e o pixel do quadro inferior (A). A opacidade agora controla o ponto de mistura exato. Uma opacidade de 0,0 resulta apenas na cor do pixel do quadro inferior (B), enquanto 1,0 produz exclusivamente a cor do pixel do quadro superior (A). 0,5 seria um valor intermediário entre as duas cores de pixel.
Resumindo: no caso da transição Afim, o parâmetro de opacidade apenas afeta a mistura de cores entre os pixels do quadro superior (B) e do quadro inferior (A).
Em seguida, vamos analisar as outras transições: Composição e Co.
Quanto à mistura de cores, aplica-se o mesmo procedimento que acabamos de ver com a transição Afim: o parâmetro de opacidade controla a quantidade de cor do pixel do quadro superior (B) que entra na mistura.
Mas quando observamos como a transparência do pixel resultante é calculada, as coisas começam a parecer diferentes. Vimos que a transparência do pixel do quadro superior (B) é reduzida em proporção inversa à transparência do pixel do quadro inferior (A). O parâmetro de opacidade leva isso ainda mais longe: ele também reduz a transparência do pixel do quadro superior (B). Veja também a ilustração.
Consequentemente, o parâmetro de opacidade controla a quantidade de opacidade aplicada a um pixel do quadro superior (B). Dessa forma, você pode aumentar ou diminuir o brilho do quadro superior.
Resumindo: no caso das transições Compostas (e Co), o parâmetro de opacidade afeta a mistura de cores dos pixels do quadro superior (B) e do quadro inferior (A), bem como a transparência do quadro superior (B).
Notas
- Leitura complementar
Artigo da Wikipédia sobre Alpha Compositing, com referência ao artigo original de Porter Duff na SIGGRAPH’84 sobre «Composição de Imagens Digitais».
O SVG Open 2015 paper de Craig Northway sobre “Entendendo a composição e as extensões de cor no SVG 1.2 em 30 minutos!” - especialmente a tabela do operador Porter Duff no capítulo 6 com a coluna de cálculo alfa resultante.
- Fontes
O texto original foi enviado pelo usuário TheDiveO para o blog kdenlive.org, agora extinto. Para esta documentação, ele foi extraído do kdenlive.org, atualizado e adaptado para corresponder ao estilo geral.