Introdução ao SeExpr

Novo na versão 4.4: Este documento introduzi-lo-á à linguagem de expressões SeExpr.

O que é o SeExpr?

O SeExpr é uma linguagem de expressões incorporada, desenhada pela Disney Animation, que permite às aplicações desenhar conteúdos gerados de forma dinâmica. A Pixar chama-lhe na sua documentação um «gerador e combinador de padrões programáveis».

O SeExpr está disponível dentro do Krita como uma Camada de Preenchimento.

Fundo

Para compreender o que é o SeExpr, é necessário diferenciar entre dois tipos de gráficos, os rasterizados e os procedimentais.

A grande maioria de coisas geradas por computador que vê todos os dias pertence ao primeiro tipo– imagens como as fotografias, as suas fotografias favoritas, os memes são todos um grande agregado de pequenos pontos de cores, ou pixels, dispostos numa grelha.

Os gráficos rasterizados têm duas desvantagens. A primeira é que, assim que os criar, a sua resolução fica fixa. Não poderá ampliar e obter mais detalhes de forma mágica. Assim, caso precise de os alterar, terá de usar a versão original e criar uma nova amostra do mesmo (o que pode ser impossível às vezes) ou editá-la com um programa de gráficos rasterizados, como o Krita.

Outro dos maiores problemas, contudo, é que ficamos sempre limitados pelo espaço que os nossos programas conseguem usar; seja o armazenamento secundário, como os cartões SD, ou a RAM. A menos que sejam comprimida, a necessidade de memória da imagem é o quadrado do tamanho da imagem. Para um exemplo rápido, a janela Criar um Novo Documento do Krita dá-lhe três pequenas informações: o seu tamanho em pixels, o tamanho de cada pixel e a memória total necessária.

../_images/Krita_newfile.png

Aqui está um resumo para as texturas quadradas. Lembre-se que a memória necessária é apenas para uma camada:

Tamanho

Memória necessária

256

256 KB

512

1 MB

1024

4 MB

2048

16 MB

4096

64 MB

Uma alternativa é usar os Gráficos Vectoriais. Os gráficos vectoriais, como por exemplo os SVG’s, aplicam fórmulas matemáticas como as curvas normais ou Bézier, para descrever uma forma. Como são definidas de forma matemática, poderão ser dimensionadas para se ajustar às suas necessidades sem perder resolução.

O SeExpr pertence uma classe diferente, os gráficos procedimentais. De forma semelhante aos gráficos vectoriais, os gráficos procedimentais só precisam de alguns KB’s de armazenamento secundário para a sua definição. A diferença é que não são definidos com fórmulas matemáticas; você realmente programa como é calculada a cor em cada ponto da textura. E dado que não está limitado à sua precisão, poderá desenhar padrões complexos nas suas camadas com resoluções completamente arbitrárias.

Criar um programa

Neste tutorial, mostrar-lhe-emos como criar um programa em SeExpr, desenhá-lo numa camada e depois gravá-lo como uma predefinição.

Começamos por ir à Camadas e adicionar uma nova Camada de Preenchimento. Depois, seleccione o gerador SeExpr na lista. Ser-lhe-á então apresentada esta janela:

../_images/SeExpr_editor.png

A janela do gerador de SeExpr está dividida em duas páginas. Por agora, iremos ficar nas Opções.

Nota

A Camadas de Preenchimento descreve estas páginas com mais detalhe.

Comecemos por pintar uma camada de azul claro.

Em primeiro lugar, os programas do SeExpr devem definir uma variável de saída, como por exemplo $cor. Dado que o SeExpr compreende as cores no espaço de cores RGB, as variáveis de cores são definidas com uma lista de três números, identificada como um vector. Comecemos por definir a variável $cor e atribuir-lhe um valor.

Vá ao campo de texto e limpe-o se tiver algum texto. Depois, defina e altere a $cor como algo do tipo [0.5, 0.5, 1] (meio-vermelho, meio-verde, azul completo):

$cor = [0.5, 0.5, 1];

O SeExpr precisa de saber qual a variável que guarda o valor final da cor. Isto é feito ao escreve no fim, na sua própria linha, o nome da variável:

$cor

O programa agora deverá ficar semelhante a isto:

$cor = [0.5, 0.5, 1];
$cor

Carregue em OK, e irá desenhar o seu primeiro programa!

../_images/SeExpr_first_render.png

Aviso

Para ser exacto em absoluto, o SeExpr não tem nenhuma gestão de cores. Desenha sempre as texturas como imagens sRGB de números de vírgula flutuante de 32-bits, com correcção de gama. O Krita transforma-os para o espaço de cores do seu documento com o perfil “sRGB-elle-V2-srgbtrc.icc”.

Veja em Processos Geridos por Cores o que significa isto.

Gerir o seu programa com elementos gráficos

Existe também outra forma de definir e editar as suas variáveis. Abra as propriedades da camada de preenchimento ao carregar com o botão direito na Camada de Preenchimento 1 e seleccionar as Propriedades da Camada….

../_images/SeExpr_prop_1.png

Reparou no campo do meio? Assim que detecta um programa sintacticamente correcto, o SeExpr permite um conjunto grande de botões para gerir as variáveis individualmente. No nosso exemplo acima, poderá alterar a $cor de três formas:

  • indique o valor do canal vermelho, verde ou azul nos campos de texto

  • mova as pequenas barras coloridas para modificar o canal respectivo

  • carregue no botão de antevisão à esquerda dos campos para seleccionar uma cor completamente nova.

O último botão do campo do meio é sempre o Adicionar uma nova variável. Carregue nele para abrir esta janela:

../_images/SeExpr_add_variable.png

Esta janela mostra-lhe todos os tipos de variáveis que o SeExpr aceita:

“Curve” e “Color curve”

São a versão em SeExpr dos Gradientes Pontuais: eles interpolam uma rampa com base num conjunto de valores.

As curvas representam gradientes em 1D, devolvendo um valor de vírgula flutuante em cada ponto de avaliação.

As curvas de cores representam gradientes RGB, devolvendo uma cor em cada ponto.

Inteiros e Fraccionários

Números.

Vector

Uma lista de três números fraccionários.

Cor

Um vector que representa uma cor RGB.

Amostra

Uma lista de Cores.

Texto

Normalmente palavras individuais.

Por exemplo, iria replicar a $cor na página Vector:

../_images/SeExpr_add_variable_vector.png

Criar a sua primeira predefinição

Assim que estiver pronto o seu programa, podê-lo-á reutilizar ao criar uma predefinição.

Poderá criar uma através da barra de topo na página de Opções:

../_images/SeExpr_editor.png

Seleccione o Gravar uma Nova Predefinição do SeExpr… para abrir a seguinte janela:

../_images/SeExpr_save.png

Poderá editar o nome da predefinição no campo de texto da linha superior e definir uma miniatura para uma identificação mais simples.

Dica

A janela irá adicionar «Cópia» ao nome da predefinição se for a cópia de uma existente. Podê-la-á mudar à vontade.

A janela oferece as seguintes opções para definir uma miniatura:

Carregar a Miniatura Existente

Se a predefinição já tem uma miniatura (por exemplo, se a tiver criado a partir de uma predefinição existe), este botão irá carregá-la e aplicá-la.

Carregar a Imagem

Aplica uma imagem do sistema de ficheiros como uma miniatura.

Desenhar o Programa numa Miniatura

Desenha o seu programa numa textura de 256x256, aplicando a última como uma miniatura.

Limpar a Miniatura

Apaga a miniatura. Lembre-se que, se a predefinição é a cópia de uma existente, isto poderá ser revertido ao carregar em Carregar uma Miniatura Existente.

Modificar as predefinições existentes

Se modificar o programa de uma predefinição, irá reparar em dois novos botões na barra de topo da página de Opções:

../_images/SeExpr_overwrite_preset.png

O botão para recarregar irá repor a predefinição com as suas propriedades originais, enquanto que o Sobrepor a Predefinição irá gravar as suas alterações.

Adicionalmente, poderá editar o nome da predefinição se carregar no botão para mudar de nome, introduzir o novo nome e carregar em Gravar:

../_images/SeExpr_rename_preset.png

Criar pacotes das suas predefinições

A partilha dos seus prorgramas é simples! As predefinições dos programas SeExpr são iguais a qualquer outro recurso no Krita. Siga as instruções em Gestão de Recursos para criar os seus próprios pacotes.