FROM THE BLOG

Linear Work Flow no Maya

Antes de continuar, se você não sabe o que é Linear Work Flow (LWF), leia o artigo sobre o assunto: O que é Linear Work Flow?

Existem algumas formas diferentes de se trabalhar com LWF no Maya. Lembrem-se de habilitar o Mental Ray como renderizador.

Como estamos usando o Mental Ray, é melhor trabalhar com o shader mia_Material_x por ter características físicas reais.

Abaixo, segue o cenário que estou usando de teste, a configuração da luz e um render.

maya-lwf01

Método 01 – Correção de Gamma via Controle de Exposição da luz

Nesse método, a correção do Gamma é feita adicionando um shader de exposição no slot Lens Shader da câmera. Para simplificar o processo, optei por usar o mia_exposure_simple, que, como o próprio nome já diz, é mais simples. O shader mia_exposure_photographic é mais completo, possuindo atributos de uma câmera real. Esse tipo de shader controla a exposição da luz na imagem, tendo controles para clarear, escurecer e trabalhar o contraste do render. Note, na imagem abaixo, que um dos parâmetros do shader de exposição é o Gamma. Seu valor padrão é 2.2, permitindo assim, que o gamma da imagem seja corrigido para 2.2.

maya-lwf02

Veja uma comparação entre a imagem sem correção de Gamma (figura da esquerda) e a imagem com correção de Gamma (figura da direita).

maya-lwf03

Esse método corrige a luminosidade da imagem, mas não faz o de-gamma das cores dos materiais, deixando-os com a aparência de “lavados”. Esse de-gamma deve ser feito manualmente, conectando o shader gammaCorrect no slot de cor do material e alterando a cor preta padrão do shader para a cor atual do material. Não esqueça de alterar o valor 1, nos três campos (esses campos não tem rótulo, mas são respectivamente valores de R, G e B) para 0.455, que é o inverso de 2.2. Isso é o de-gamma.

maya-lwf04

Abaixo, segue o comparativo da imagem sem de-gamma nos materiais, e com de-gamma nos materiais.

maya-lwf05

Agora, vamos incrementar o cenário com uma esfera que englobe toda a cena. Nela, eu apliquei um shader Surface com uma textura HDR. No piso, apliquei uma textura sRGB. Habilitei o Final Gathering para fazer com que a imagem HDR emita luz. Estou mantendo o material das esferinhas com de-gamma, mas na textura do piso não. Como é uma textura sRGB, ela já tem gamma 2.2. Note que a textura tem um tom mais escuro e no render ficou mais clara. Isso porque o gamma da imagem (2.2) se somou ao gamma que apliquei no render (2.2) através do shader de exposição.

maya-lwf061

Para corrigir a aparência da textura do piso, é necessário fazer o de-gamma, da mesma forma que eu fiz com o material laranja das esferinhas. Porém, como a textura já está conectada no material, mostro abaixo como desconectar, inserir o shader gammaCorrect e reconectar tudo, através do Hipershade (Window > Rendering Editors > Hipershade).

maya-lwf07

Abaixo, mais comparativo: render da esquerda sem de-gamma no piso, render da direita com de-gamma no piso.

maya-lwf08

Não há necessidade de fazer de-gamma da imagem HDR pois ela é Linear, não possuindo adição de gamma.

Método 02 – Correção de Gamma através do Framebuffer

Outra forma de corrigir o Gamma, no Maya, é através do gamma no Framebuffer (Window > Rendering Editors > Render Settings > Quality > Framebuffer). A vantagem é que não precisa fazer de-gamma nas cores dos materiais, nem nas texturas sRGB. Porém, aqui existe uma particularidade. Veja a imagem abaixo:

maya-lwf09

No teste acima, não há shader de exposição. Ao fazer a correção trocando o valor de 1 para 2.2, no atributo Gamma, a imagem escurece ao invés de clarear. A documentação do Maya diz que o comportamento do Gamma no mental ray, através do Quality > Framebuffer é reverso, pois ele remove toda correção de Gamma existente para assegurar que a imagem gerada seja realmente Linear, antes de computar o render. Logo, valores altos de gamma escurecem a imagem e valores baixos clareiam a imagem.

Então, para termos a imagem correta com esse método, é necessário colocar o valor inverso de 2.2, ou seja, 0.455.

E se quisermos usar um shader de exposição para controlar a exposição da luz no render? Não tem problema. É só lembrar de baixar o valor do Gamma do shader de exposição para 1, caso contrário, ao render ficará 2 vezes mais claro, por causa da soma dos Gammas, como mostrado abaixo:

maya-lwf10

Método 03 – Correção de Gamma através do Color Management

A partir do Maya 2011, foi acrescentado o Color Management, na guia Commom do Render Settings (Window > Rendering Editors > Render Settings). Abaixo seguem os primeiros comparativos entre as configurações deste método:

maya-lwf111

A correção do gamma acontece quando “Default Input Profile” está como “Linear sRGB” e “Default Output Profile” está como “sRGB“, o que siginifica que os dados (texturas HDR, sRGB, cor de materiais, luz) entram (input) como Linear e saem (Output) com correção de gamma 2.2 (sRGB).

Abaixo, mais um comparativo mostrando o piso sem de-gamma e com de-gamma.

maya-lwf12

Com esse método, assim como o primeiro, é necessário fazer o de-gamma das cores e texturas sRGB.

Lembre-se que quando usar um shader de exposição, altere o valor do atributo Gamma para 1, para não aplicar o gamma 2.2 duas vezes na imagem:

maya-lwf13

Método 04 – Correção de Gamma através do View Color Management (Render View)

Com esse último método, a correção de gamma é feita, em tempo real, na janela de render (Render View). Para acessá-lo, clique em Display, na barra de ferramentas da Render View (Display > Color Management…):

maya-lwf14

A configuração que aplica a correção de gamma é a mesma do Color management do Render Settings com algumas configurações a mais:

  • Exposure: controla a exposição da luz na imagem. Valores negativos deixam a imagem escura e positivos, clara.
  • Contrast: controla o contraste da imagem.
  • LUT file: pode-se usar um arquivo para controlar a cor da imagem ou um arquivo de calibragem específico do seu monitor. Esses arquivos são de uso bem específicos. Eu mesmo nunca usei.

Após fazer os ajustes em tempo real da imagem, é possível salvar o render de duas formas: com essas alterações ou sem as alterações (RAW). Para isso, acesse as opções de salvamento (barra de ferramentas do Render View – File > Save Image):

maya-lwf15

Por que essa opção de salvar a imagem sem a correção de gamma? Porque a correção de gamma pode ser feita em softwares de pós-produção, também. Mas esse é um outro assunto.

Conclusão

Os 4 métodos acima farão a correção de gamma, porém, nos meus testes, o resultado entre eles não foi idêntico, como mostrado abaixo. Os renders foram salvos a partir do BatchRender (módulo Rendering > Render > Batch Render):

maya-lwf16

Listo aqui o resumo das características que notei em cada um:

Método 01

  • Correção de gamma feita através de um shader de exposição de luz
  • É necessário fazer de-gamma de cores e texturas sRGB
  • O resultado também é mostrado no Batch Render

Método 02

  • Correção de gamma alterando o valor do Gamma do Framebuffer
  • Valor de gamma deve ser inverso do usual
  • Não necessita de de-gamma nas corem nem texturas sRGB
  • Ao usar shader de exposição de luz, lembrar de alterar o valor do Gamma do shader para 1
  • O resultado também é mostrado no Batch Render

Método 03

  • Correção de gamma através de opções pré-definidas (não usa valores numéricos)
  • É necessário fazer de-gamma de cores e texturas sRGB
  • Ao usar shader de exposição de luz, lembrar de alterar o valor do Gamma do shader para 1
  • O resultado também é mostrado no Batch Render

Método 04

  • Correção de gamma através de opções pré-definidas (não usa valores numéricos) e em tempo real
  • É necessário fazer de-gamma de cores e texturas sRGB
  • Ao usar shader de exposição de luz, lembrar de alterar o valor do Gamma do shader para 1
  • O resultado é renderizado salvando a imagem pelo Render View

Muito provavelmente, existem outras características ligadas a pós-produção. Pretendo falar disso numa outra ocasião, quando abordar Render Layers e Pós-Produção.

Observação a respeito do node gammaCorrect

Só para esclarecer, ao usar o node gammaCorrect para fazer o de-gamma na cor de um material, ele escurecerá e alterará o tom da cor escolhida. Isso acontece para fazer a compensação da aplicação do Gamma 2.2 duas vezes na cor do material. Se o node for desconectado, a cor que permanecerá no slot Color é a cor do de-gamma. Na prática, ao renderizar essa imagem, não muda nada, pois a cor foi alterada para fazer o de-gamma. Porém, se houver necessidade de alterar a cor vai ficar difícil usando essa referência. As opções são, caso o de-gamma seja necessário:

  1. Não desconectar o node gammaCorrect e fazer a alteração da cor pelo slot Value desse node
  2. Se desconectar, aplicar novamente a cor original e reconectar o node gammaCorrect para alterar a cor e continuar o de-gamma

maya-lwf171

O assunto é confuso? Um pouco… Não me envergonho em dizer que também estou aprendendo mais sobre ele. Porém, havendo dúvidas, mande um comentário.

Abraço,