TUTORIAL SOBRE LINEAR WORK FLOW
Olá a todos!
Bom, acho que tomei vergonha na cara e resolvi fazer um tutorial. Depois de tanto que a 3D1 me ajudou, acho que é mais do que justo retribuir, e com um assunto que confunde muito as pessoas: a técnica de
Linear Work Flow (LWF) ou Linear Color Space.
LEMBRETE: Esta técnica não é diretamente ligada a um render, é uma técnica geral de iluminação como qualquer outra e, portanto, funciona em qualquer render.
Bom, vamos ao que interessa:
INTRODUÇÃO
Todos os monitores com os quais usamos trabalham com os pixels de forma não-linear, ou seja, é como se nele estivesse um insulfilm que escurecesse tudo. Então, para as cores aparecem direito na tela, a intensidade delas devem ser multiplicadas. Essa mudança da intensidade de cor que nó chamamos de gamma. Em termos mais simples, gamma é o fator de intensidade dos pixels de uma imagem para mostrar com o contraste adequado na tela.
Exemplo: a imagem abaixo tem um teapot cinza simulando um pixel cinza e um plano transparente simulando a tela do computador. Perceba como a cor muda, passando para um cinza mais escuro. Para voltar a original e você ver corretamente, a intensidade do cinza deve ser multiplicada.
Mas nem todos os computadores são iguais. É por isso que o gamma de cada um varia (de 1,8 a 2,5 normalmente). Em modos gerais, coloca-se o gamma valendo 2,2.
Observação importante: Nem o gamma e a não-linearidade são defeitos. Nosso olho humano não vê as cores de forma linear, e sim logarítmica. Então, se quiser se aproximar à realidade, o melhor seria trabalhar com a técnica LWF.
APLICANDO ESSA TÉCNICA NO 3DS MAX
Como vimos, o computador trabalha de forma não-linear. O problema é que o render do 3ds Max trabalha apenas com gamma igual a 1. Então a imagem que é mostrada na tela não está convertida (ou multiplicada) e, assim, está mais escura. É por isso que tem que encher de luzes para iluminar o ambiente corretamente. Segundo palavras do próprio André, a pessoa que trabalha com essa técnica tem que ser um verdadeiro artista porque tem que ter um olho treinado para perceber o que não está realista e fazer ficar realista. Portanto, tudo depende da habilidade do usuário.
Agora, se você habilitar o gamma, tudo vai aparecer corretamente, e bastará colocar algumas luzes nos lugares corretos, ajeitar os materiais e pronto. A imagem sairá fotorrealista.
Por exemplo, o programa faz uma simples suposição de que, em sRGB, 255 tem o dobro de intensidade que 128. Errado. Para achar o valor verdadeiro, tem que elevar 0,5 ao inverso do gamma utilizado, ou seja, [0,5 ^ (1/2,2) x 255 ] = 186.
Para ativar o gamma no 3ds Max, clique em Customize > Preferences > Gamma and LUT, como mostra na imagem:
Enable Gamma/LUT Correction: Habilita a correção de gamma no max.
Load Enable State with MAX Files: Ele pergunta sempre quando um arquivo é aberto no max se deseja modificar o gamma da cena do preservá-lo, caso este esteja alterado.
[u:8e4e7d3284]Display:[/u:8e4e7d3284]
Autodesk View LUT: Abre um arquivo de extensão .LUT.
Gamma: Altera o valor do gamma da cena. Como já citei, é comum colocar 2,2.
[u:8e4e7d3284]Materials and Colors:[/u:8e4e7d3284]
Affect Material Editor: Habilita o gamma no Material Editor. Sempre deixe essa opção ativa, para visualizar as cores corretas no editor.
Affect Color Selectors: Habilita o gamma na caixinha de seleção de cores. Assim como o anterior, o certo é deixá-lo ativo.
[u:8e4e7d3284]Bitmap Files:[/u:8e4e7d3284]
Esse campo é muito importante e é onde muitos têm dúvida.
Input Bitmap: Como já foi dito, a intensidade dos pixels das imagens precisa ser multiplicado para poder-se ver direito na tela. Portanto, em cada imagem já vem imbutido um gamma próprio. Quando você habilita o gamma do max e altera o valor para 2,2, estar-se-á (se amarraram na mesóclise! kkk) na verdade multiplicando a intensidade duas vezes, deixando a imagem mais clara que o normal, ou "lavada". Para solucionar esse problema, têm-se basicamente 4 soluções, das quais uma delas é o Input Bitmap. Com ele, você dá um degamma na imagem com o valor especificado quando ela entra no material editor. É o jeito mais fácil, mas é o mais "preguiçoso", pois ele vai dar um degamma igual para tudo, seja uma imagem que tenha um gamma igual 1,8 ou outra igual a 2,5. Isso acarreta em uma imagem que pode sair mais clara ou escura que o normal. Além disso, vai dar problemas com mapas de bump, displacement e hdr. Por isso é melhor ajeitar manualmente.
Output Bitmap: É o gamma que a imagem vai ter quando o botão de "Salvar" for clicado. É uma opção bastante útil, mas você pode deixar em 1.0 e corrigir na pós-produção. Outro possível jeito é colocar o valor do gamma na opção Override na hora no salvamento.
Observação: A partir do max 2010, os valores de gamma, input bitmap e output bitmap vêm iguais a 2,2. O affect material editor nem o affect color selectors vêm habilitados, o que é um erro.
Não pensem que esqueci das outras soluções. :D Apenas não quis confundir com o que importa da definição. São elas:
- Quando for carregar a textura, marca a opção Override com o gamma desejado.
- Usar o shader presente apenas a partir do max 2009, que é o Utility Gamma & Gain. Com ele você degamma cada textura individualmente com um valor adequado (perceba que o opção De-Gamma está habilitada). A imagem vai ser colocada no canal input dele.
- Tirar o gamma presente de cada imagem através de um editor de imagem. No Photoshop é fácil. É só seguir a imagem abaixo. Cuidado para não colocar 2,2, pois vai deixá-lo claro demais. O valor certo é 0,455, pois é o inverso de 2,2, já que se está fazendo um degamma.
MR PHOTOGRAPHIC EXPOSURE CONTROL
Observação: Esse shader só está presente no mental ray. Porém isto não é um impecilho. Caso queira utilizar outro render deve-se usar outro controlador de exposição.
Apesar da técnica de LWF teoricamente não ter nada a ver com o controle de exposição do mental ray, os dois se completam, sendo muito difícil separar os dois, já que não faz sentido. Dá para fazer cenas somente com o gamma e controlar a exposição depois na pós-produção, mas eu não acho prático. Além disso, o mr photographic exposure oferece muitos recursos e é totalmente integrado com o render, pois ele controla a exposição da luz, evitando os estourados e atenua as sombras distantes, como é na vida real.
Uma coisa importante é usar sempre as photométricas nessa técnica, pois são fisicamente reais. As luzes Standart são boas quando se trabalha não-físicamente, já elas são também não-físicas.
O max 2008 e 2009 contém uma falta grave, no qual o Render Preview não reconhece o gamma, somente no render. A partir do 2010, a Autodesk corrigiu esse erro, e ainda colocou um preview melhorado na viewport.
Meu objetivo nesse tutorial não é explicar cada parâmetro desse shader, mas abordá-lo e explicar as principais características.
Basicamente, o que vai se mexer é no Exposure Value, até chegar numa luminosidade boa, e nos Highlights, Midtones e Shadows, que controlam, respectivamente, os estouros, tons médios e sombras da imagem.
Perceba ainda a opção do gamma embaixo. Caso ele não esteja habilitado, aparece uma mensagem dizendo que é recomendável ativá-lo.
EXEMPLIFICANDO
Eu sempre acreditei que teoria sem exemplo na prática é chato e não dá para entender direito. Então vamos a um exemplo de um ambiente que peguei aqui mesmo da 3D1 do Luis Feitosa. É bem simples e já vem texturizada. Então, é perfeita para o estudo de agora. O link é esse:
http://www.tresd1.com.br/modelos.php?t=13933
Logo quando você abre, vai aparecer uma mensagem perguntando se você quer deixar sem correção de gamma como está na cena ou se você quer habilitá-la. Queremos isso, mas vamos clicar em sim, para ter a cena sem essa técnica de LWF. Depois ativamos manualmente.
Antes de tudo, temos de configurar o gamma. Então entrem no painel dele já mostrado, selecione o Enable Gamma/LUT Correction, altere o valor do Gamma para 2,2 e deixe o Input e Output igual a 1, pois iremos configurar as cores e texturas individualmente.
Entre no Material Editor e veja como tudo ficou mais claro. Aí você deve pensar: "Ai que horrível!". Pois é. Mas isso é só questão de costume. Eu já me acostumei e já acho a antigo escuríssimo. hehehe :D
Ajustado o gamma, vamos deletar todas as luzes, pois iremos iluminar de novo com o Daylight System e Skyportals. Antes disso, perceba a quantidade de luzes usadas para iluminar a cena.
Crie a daylight system, que está no painel Create > Systems e escolha como Sunlight mr Sun e como Skylight mr Sky. Ele irá perguntar se pode criar automaticamente o céu físico mr Phisycal Sky. Clique em Sim.
A posição da Daylight não importa muito, desde esteja apontada para uma das janelas.
Agora posicione duas skyportals de acordo com a imagem abaixo.
No Light Lister, configure as luzes de acordo com a figura abaixo.
Feita a iluminação, vamos partir para os materiais. Veja naquela imagem do Material Editor como as cores ficaram mais claras, inclusive o azul, vermelho e cinza usados na cena. Não queremos isso, portanto, utilizaremos o shader Utility Gamma & Gain. No slot da parede azul, no canal diffuse, aplique esse shader. A seguir, copie e cole a cor no color selector do Utility Gamma & Gain. Como estamos usando um gamma igual a 2,2, usaremos também no campo gamma 2,2. Todo esse processo está explicado na imagem abaixo:
Repita esse mesmo processo para a cor vermelha.
Como nessa cena não tem textura, vou colocar uma no piso para mostrar este caso também. No slot piso, coloquei um material Arch & Design com preset Satin Varnished Wood. Uma peculiaridade deste preset é que a textura imbutida nele vem com uma correção de cor na rollout Output. com ele, a cor da textura fica mais vibrante e bonita e, portanto, deixarei ele lá. O processo de degamma dessa textura é exatamente o mesmo do de cima. Vá no slot diffuse onde está a textura, clique no botão escrito "Bitmap" e escolha "Keep old map as sub-map?" para a imagem já ficar aplicar do shader Utility.
Feito isso, o processo de texturização está pronto. Falta só ajustar as configurações de render e aplicar o mr Photographic Exposure Control. As minhas configurações de GI e FG são:
Observação: Se você tem o cd de mental ray da 3D1, é bom ressalvar que nada do que ensinou sobre FG e GI muda na técnica de LFW. É a mesma charopada.
As minhas configurações do mr exposure são:
E a imagem final é essa de baixo. Olhe como ela ficou clara somente com a daylight e skyportal. Essa é a grande vantagem dessa técnica. Tudo bem que minha imagem imagem pecou em qualidade, tem uma manchas lá no fundo, mas nada como um ajuste melhor nos fótons e no FG.
ATENÇÃO! Não se esqueça de marcar 2,2 em override ou em Output quando for salvar a imagem para nela vir o gamma. Senão ela vai ficar escura.
PERGUNTAS FREQUENTES
- O que significa sRGB?
Significa "standart RGB", um tipo de espaço de cores criado pela HP e Microsoft. Seu espectro vai de 0 a 255 e é o padrão mais difundido hoje em dia.
- O mr exposure control realmente sempre deixa a imagem lavada? Pelo controle dos midtones, highlights e shadows você pode conseguir um resultado com um contraste bom?
Não é verdade, você consegue imagens com alto contraste usando o Mental Ray Photographic Exposure Control, mas não basta ajustar os Highlights, Midtones e Shadows. Depende de corrigir corretamente o Gamma das texturas.
- É verdade que o mr exposure é o jeito mais certo de usar na iluminação, pois na realidade sempre tem controle de exposição, seja na câmera ou no olho humano?
Sim, é verdade.
Mas o olho humano faz um trabalho muito bom que nenhuma câmera ou render 3D consegue fazer de forma fisicamente correta, portanto, em algumas situações é necessário lançar mão de subterfúgios, como quando a pessoa quer ver com a mesma exposição no interior e no exterior de um ambiente.
- A seguinte frase é verdadeira? "As cores em sRGB vão de 0 a 255, mas na realidade as cores são bem maiores do que isso, pois têm várias intensidades de branco e em RGB só tem uma. O render calcula a luz com todas as cores e intensidades, mas não consegue mostrar em RGB pq não aceita estas cores. Então o exposure faz a conversão das cores reais pras cores RGB pra ver direito na tela."
Sim, é verdade.
O render trabalha com todo o espectro de cores reais, enquanto que a tela só consegue mostrar cores no formato sRGB, onde as cores vão apenas de 0 a 255.
- Você precisa corrigir todas as texturas quando usa mr expousure já que elas ficam lavadas?
Não precisa corrigir as texturas para usar o Mental Ray Photographic Exposure Control, apenas se modificar o valor do Gamma no programa, pois o que torna as texturas lavadas é a dupla aplicação de Gamma.
Existem várias formas de corrigir o Gamma das texturas como eu expliquei acima, sendo que 4 delas foram explicadas acima.
- A técnica LWF é mais fácil de iluminar? Alterar o gamma para 2,2 deixa tudo mais claro e sinceramente é um pouco estranho.
Sim, é mais fácil de iluminar porque você vê as luzes e os materiais com as cores corretas.
No começo é difícil, mas depois que se acostuma é uma maravilha.
- Você precisa alterar o gamma para trabalhar com o mr exposure?
Não precisa modificar o Gamma para trabalhar com o Mental Ray Photographic Exposure Control, mas é indicado que modifique, pois o que adianta você usar o controle de exposição e continuar vendo as cores e as luzes com intensidades erradas?
Você terá que ajustar de forma fisicamente incorreta para corrigir, o que torna tudo mais difícil.
BIBLIOGRAFIA
- Minha conversa sobre LWF por e-mail com o André. Foi com ele que consegui entender essa técnica. Por isso, alguns trechos, principalmente nas Perguntas Frequentes, são copiadas de lá.
- Fórum da 3D1 ( www.tresd1.com.br )
- http://mymentalray.com/wiki/index.php/Gamma#Gamma_in_3ds_Max
- http://www.microsoft.com/brasil/windowsxp/using/digitalphotography/prophoto/colorspaces.mspx
- http://www.kxcad.net/autodesk/3ds_max/Autodesk_3ds_Max_9_Reference/gamma_preferences.html
- http://www.highend3d.com/3dsmax/tutorials/rendering/vray/147-2.html
- http://www.aversis.be/tutorials/vray/essential_gamma_01.htm
- http://scripts.breidt.net/gamma_correct_v12.pdf
- http://renderstuff.com/free-3d-tutorial-using-gamma-2.2.php?page=5
- http://www.tresd1.com.br/viewtopic.php?p=418802#418802
- http://www.tresd1.com.br/viewtopic.php?t=53867
Bom, agradeço a quem leu meu testamento até aqui. hehehe
Espero que tenham gostado do meu primeiro tutorial. Qualquer dúvida ou crítica pode berrar! :D
Abraços.