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.
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:
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!
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….
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:
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:
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:
Seleccione o Gravar uma Nova Predefinição do SeExpr… para abrir a seguinte janela:
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:
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:
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.