«

»

Usando arquivos .slim no RfM

Uma das propriedades menos conhecidas do RenderMan for Maya é a possibilidade de ler arquivos .slim para montar a interface dos shaders escritos em RSL. Com estes arquivos podemos criar uma interface mais amigável para o usuário, controlar a entrada de dados e facilitar a utilização de imagens comuns como textura nos shaders.
Vamos utilizar o shader abaixo como exemplo.

Este shader é um dos exercícios propostos no post “Usando Texturas em RSL”. Ele tem como parâmetros surfacecolor (cor básica da superfície), texturename (nome do arquivo de textura a ser aplicado sobre a cor), useAlpha (usar alpha da imagem na sobreposição da textura na cor básica), mode (modo de aplicação da textura – over, add, subtract, multiply) e isRfm (inverte a coordenada t se o shader vai ser utilizado no RfM).
O shader recebe o nome de uma textura e a aplica sobre a cor básica da superfície da forma definida pelo atributo mode.
As possibilidades de valores para cada parâmetro são as seguintes:
sufacecolor = uma cor qualquer
texturename = uma string com um caminho para um arquivo .tex;
useAlpha = um número sendo: 0 – não usa o alpha da imagem, 1 – usa o alpha da imagem;
mode = um número sendo: 0 – over, 1 – add, 2 – subtract, 3 – multiply;
isRfm = um número sendo: 0 – RAT, 1 – RfM.
Após compilar o shader e carregá-lo no Maya, temos a seguinte interface:

Os parâmetros surfacecolor e texturename têm entradas condizentes com os seus tipos. O primeiro recebe uma cor e o segundo recebe uma string.
Já para os outros parâmetros que são definidos como float, sua utilização é confusa e não existe nenhum lugar para indicar que valores são corretos. Para useAlpha e isRfm, requer um valor 1 ou 0 de ligado/desligado. O atributo mode requer uma entrada com valores inteiros 0/1/2/3 para selecionarmos a opção de aplicação da textura. Para estes parâmetros o shader funcionaria muito melhor se pudéssemos colocar respectivamente uma “checkbox” e uma “optionbox”.
Quando o RfM carrega um RenderMan Shader, além do arquivo .slo ele procura por um arquivo .slim que será utilizado como guia para a criação da interface do shader. Caso ele não encontre este arquivo a interface é criada de um modo padrão para cada tipo de atributo. Como visto na primeira figura o modo padrão do RenderMan para este caso não é claro o suficiente.
Começamos utilizando o programa toslim para gerar um .slim padrão do shader em questão:
> toslim filemapping6.slo –o filemapping6.slim
Na figura abaixo temos ao lado do Attribute Editor a listagem do arquivo filemapping6.slim.

Para cada atributo do shader no Attribute Editor temos o correspondente bloco de código que define a interface à direita (o arquivo filemapping6.slim).
Modificamos então o filemapping6.slim nos parâmetros texturename, useAlpha, mode e isRfm, adicionando onde se fez necessário as opções subtype e range. Na figura abaixo temos novamente a interface lado a lado com o arquivo de configuração. As mudanças estão a vermelho.

Note que modifiquei o nome (label) de cada atributo. Neste exemplo, os nomes dos atributos não são simplesmente os nomes dos parâmetros, mas nomes mais significativos e com espaços entre as palavras. Os atributos useAlpha e isRfM agora têm uma checkbox para podermos ligar ou desligar (1 ou 0) a opção. O atributo mode (Blending Mode na interface) agora é uma optionbox com as opções referentes a cada um dos modos de aplicação. E o atributo texturename ganhou uma opção para mapear um passe de txmake para a criação da textura.
No filemapping6.slim, além de alterar os labels, cheguei a esta nova interface apenas adicionando aos atributos, as opções subtype e range que servem, respectivamente, para escolher o tipo de elemento de interface e a sua faixa de valores.
No subtipo switch escolhemos os valores 0 e 1 (range {0 1}), sendo o primeiro para desligado e o segundo para ligado. Já para o subtipo selector (atributo mode), na definição da faixa de valores, temos primeiro o texto que aparecerá na caixa de seleção e depois o seu respectivo valor (range {over 0 add 1 subtract 2 multiply 3}).
De todas estas opções, a mais interessante é quando adicionamos o subtype “texture” ao atributo texturename. Fazendo isto cria-se a possibilidade de mapear um passe de txmake ao atributo. Desta forma não é necessário converter a textura em um arquivo .tex para poder utilizá-la no RfM. Podemos carregar um arquivo de imagem qualquer e a conversão é automaticamente feita pelo txmake antes do render. Veja na figura abaixo o Attribute Editor do txmake com as opções de conversão. Repare que para termos a texturização no “padrão Maya” utilizamos os dois wraps como “periodic” e o resize mode como “up-“.

A partir de agora, quando criar shaders em RSL lembre-se que você pode construir uma interface e controlar/facilitar a entrada de dados do usuário usando arquivos “.slim”.

Arquivo zip com o shader e slim files mostrados no post: slimFiles.zip
Outros exemplos de utilização de arquivos .slim podem ser vistos em:
http://www.fundza.com/rman_slim/slim_file/slimfile_quickref.html

Leave a Reply

Sharing Buttons by Linksku