Posts Taged 3d

Importando arquivo do AutoCAD, DraftSight ou NanoCAD para o Blender

Essa dica vale para Blender 2.7 ou superior. Basta salvar o arquivo no formato DXF e habilitar o Add-On no Blender responsável pela importação. Assista ao vídeo para maiores detalhes:

Por que e como eu deixei de usar software pirata?

Pirataria é crime. Isso todo mundo sabe. Mas não é um tema simplista. Falando em softwares de computação gráfica, que costumam ser muito caros, nem todas as empresas seguem o exemplo da Autodesk e, recentemente, da Foundry, que disponibilizam versões gratuitas não-comerciais de seus softwares para serem usadas em estudos ou em trabalhos pessoais. Afinal de contas, do que adianta investir num curso se não vai poder usar o software para treinar? Por isso, a solução de muitas pessoas é baixar versões piratas. A quem diga que nos anos 90 algumas empresas permitiam que seus softwares fossem distribuídos propositalmente de forma ilegal para que ganhassem fama. Teorias da conspiração (ou não?) à parte, os tempos mudaram e eu acredito que existem formas de sair da pirataria.

 

POR QUÊ?

Em 2011, a questão da pirataria começou a me incomodar. Eu já estava achando um saco correr atrás de software na versão que eu queria, me frustrando quando vários links se encontravam quebrados ou quando o crack não funcionava. E a cada atualização do software, tinha que fazer tudo de novo… No Windows, a cada nova atualização que fazia uma verificação de originalidade, tinha que entrar na mesma corrida para burlar o sistema. Isso definitivamente me cansou. Sem falar no risco de vírus que podem vir dentro dos cracks e sem mencionar o fato da pirataria em si, pois gostando ou não, alguém, seja empresa grande ou não, gastaram para desenvolver essas ferramentas.

 

SOLUÇÕES

Comecei a pesquisar quais softwares poderiam substituir os que eu usava de forma ilegal. Descobri uma gama de softwares gratuitos, muitos Open Source, ou com preços acessíveis. Comprei o Windows e fui usando os softwares substitutos paralelamente aos piratas até ter certeza de queles supririam minhas necessidades. Com relação a jogos, adotei plataformas como Steam e GOG que os vendem a preços acessíveis (exceto lançamentos. Mas eu não me importo com lançamentos. Logo, pra mim funciona). Passei a comprar até mesmo jogos antigos que eu gostava e tinha pirata. Depois, resolvi testar outro sistema operacional, que eu já havia testado em 2005, mas não tinha me dado muito bem. Dei outra chance pro Ubuntu. Fiquei um ano e meio usando Windows e Ubuntu em dual boot, até ter certeza de que eu poderia viver sem Windows. Tive que ir atrás de softwares que rodassem em Linux, o que não foi problema, precisei apenas testá-los, assim como o novo sistema.

Pra que tudo isso desse certo, eu tive que tirar aquela visão de discriminação que nos ilude por causa da nossa falta de conhecimento do novo. Por isso, antes de dizer que determinado software é ruim, você precisa de tempo para aprender a usá-lo para, aí sim, chegar a uma conclusão concreta.

 

SUGESTÕES DE SOFTWARES

Como eu trabalho com Computação Gráfica, pode ser que a minha lista de sugestões não sirva para você, mas acredito que parte dela possa ser um começo.

 

Software 3Dblender_logo_socket

De 1995 à 2011, eu usei 3dsmax (começando pelo 3D Studio for DOS). Estudei um pouco de XSI e, de 2011 a 2014 usei Maya, que já havia começado a estudar em 2006 por causa do curso de animação. Atualmente uso Blender, que é gratuito, não necessita instalação e, no Windows, ocupa 300Mb no disco, enquanto os outros não ficam por menos 5Gb… Tudo que eu fazia nos outros, eu faço nele. Além de ser uma ferramenta 3D, uso o Blender para pós-produção e estou me aventurando em edição de vídeos.

 

Editor de imagens gimp-logo-1

Gimp, mas confesso que para quem trabalha com fotografia TALVEZ ele não seja a melhor opção, por enquanto. Não posso opinar nessa área, pois sempre usei Photoshop para edição de texturas e pós produção. Para essas tarefas, o Gimp tem me suprido. O Dionatan Simioni (Diolinux) criou uma versão que tem a cara e os atalhos do Photoshop, para quem quiser migrar de forma mais fácil: PhotoGIMP.

 

Pintura digital logo_inkscape_gimp_krita2000px-Mypaint-icon.svg

Krita. Existe também o My Paint, mas eu prefiro o Krita.

 

Vetor logo_inkscape_gimp_krita

No lugar no Corel ou Illustrator, uso o Inkscape. Mas sou um usuário básico, como sempre fui nesse tipo de software. Ele tem as ferramentas que eu preciso e salva em SVG que é facilmente importado pelo Blender.

 

Office LibreOffice_logo.svg office

Libre Office. Eu uso apenas para textos e planilhas simples, mas pelo que eu já andei vendo, pode ser usado por usuários avançados também. Existe também um chamado WPS Office que é a cara do MS Office e tem uma compatibilidade, até onde sei, perfeita com os formatos da Microsoft.

 

Edição de vídeos Logo-kdenlive.svg

Kdenlive. Ainda testei pouco, mas parece ser muito bom.

 

Editoração 2000px-Scribus_logo.svg

Scribus. Estou testando aos poucos, pois estou escrevendo um livro e quero tentar fazer a diagramação nele.

 

Compactador de arquivos 2000px-7ziplogo.svg

7Zip. Compacta em formatos 7zip, zip, tgz e descompacta nos formatos citados além do RAR. Só lembrando que WinRAR não é um software gratuito. Após 30 dias de uso, você deve pagar por ele, caso queira continuar usando, como eram os antigos sharewares. Na nossa cultura, infelizmente, isso não funciona muito bem…

 

CAD draftsight-masterlogotm

Preciso de um software para abrir plantas feitas no AutoCAD ou de qualquer software que salve em DWG. Como sou usuário de Linux, o software que tem me atendido é a versão gratuita do Draft Sight, da Dassault Systems, a mesma desenvolvedora do Solid Works. Existem outros como o LibreCAD, FreeCAD e o NanoCAD. O NanoCAD também é muito bom, mas não roda no Linux.

 

Sistema Operacional logo-ubuntu_st_no®-orange-hex Xubuntu_logo_and_wordmark.svg

Linux. Comecei com o Ubuntu e hoje estou usando uma variação dele, o Xubuntu, pois tem uma interface mais leve. Na minha opinião, além de gratuito, é mais leve e tem melhor desempenho e segurança que o Windows.

Se, por um acaso, você precisa usar um software que só tenha versão para Windows, pode-se tentar rodá-lo pelo Play On Linux ou pelo Crossover, a versão paga do Play On Linux.

 

CONCLUSÃO

Você não precisa ser radical e mudar sua lista de softwares toda de uma vez. Como eu expliquei no início, fui fazendo isso aos poucos até sentir segurança. Outro hábito que eu criei foi, ao analisar um software pago, procurar saber o quanto ele custa. Conheci pessoas tão viciadas na pirataria que nem cogitavam saber se o software era acessível ou não. Nem todos custam R$15.000,00.

Parei de baixar tutoriais pagos por meios ilegais por uma questão moral. Eu estava dando aulas e produzindo materiais semelhantes, o que, confesso, me fez sentir na pele o que é ter seu material distribuído de forma ilícita. Material que dá bastante trabalho pra produzir. Apaguei tudo do meu HD e mantive os que eu havia comprado. Sempre que eu preciso te tutoriais pagos ou AddOns pagos para Blender eu os compro.

 

Usando Unwrap no Blender

E aí pessoal. Esse é o meu primeiro tutorial sobre Blender. Nele mostro o workflow para gerar as UVs de um objeto não muito simples.

Como importar arquivo DWG no Blender

Olá pessoal,

Segue o vídeo de um tutorial que eu fiz explicando como importar arquivos DWG (arquivos do AutoCAD) para dentro do Blender.

Introdução ao Blender

Seguem 25 vídeos que eu disponibilizei para um curso de introdução ao Blender. Clique aqui para ter acesso a playlist.

 

Displacement no Maya

Com Displacement é possível criar relevo verdadeiro nas superfícies dos objetos (elevações e depressões), baseados em imagens em tons de cinza ou mapas procedurais em tons de cinza (Checker, Noise, Fractal, etc). Ou seja, a topologia da geometria é alterada, criando formas reais, diferente do que ocorre com Bump, que cria apenas a ilusão de relevo.

displacement_fig01

Ao renderizar um objeto com Displacement aplicado, os renderizadores (no nosso caso, Maya Software e Mental Ray) configuram o chamado Tessellation na malha poligonal ou NURBS.

Tessellation é o processo que os renderizadores usam para converter superfícies NURBS, ou malhas poligonais com displacement, em triângulos. Os triângulos determinam quão suavizado um objeto parecerá quando a câmera estiver próximo a ele. Objetos com poucos triângulos parecerão facetados perto da câmera, mas quando estiverem distantes da mesma, parecerão suavizados.

No Mental Ray, Tessellation é chamado de Approximation.

displacement_fig02

Se o displacement for gerado através de uma imagem bitmap, automaticamente o canal alpha da imagem é conectado ao node displacementShader (node responsável por gerar o displacement). Se a imagem não tiver um canal alpha ou não suportar canal alpha e o displacement não ocorrer, habilite o atributo “Alpha is Luminance” localizado na seção “Color Balance” do node “File”.

displacement_fig03

A intensidade do Displacement (altura) é configurada pelo atributo “Alpha Gain” (veja imagem acima).

O workflow para gerar o Displacement é:

  1. Abra o Hipershade
  2. Insira um novo node de material na Work Area do Hipershade (no meu caso, usei um novo Lambert)
  3. Insira na Work Area um node File, caso use um bitmap, ou node procedural qualquer, seja 2D Texture ou 3D Texture.
  4. Selecione o node File ou outro node procedural e arraste com o botão do meio do mouse até o node do material (no meu caso, lambert2)
  5. Solte o botão e escolha a conexão “displacement map”.
  6. Automaticamente, o node displacementShader é criado e conectado ao node Shading Group do lambert2 (lambert2SG)

A montagem está sendo mostrada na Fig 03, logo acima. Diferente de outros nodes mais comuns, o node displacentShader não é conectado diretamente ao node do material e sim ao seu Shading Group.

Configuração do Displacement no Maya Software

As configurações do Displacement para o Maya Software estão localizadas no node Shape do objeto. No meu caso, como estou aplicando o Displacement num Poly Plane, as configurações estão dentro pPlaneShape1, no Attribute Editor, seção Displacement Map.

displacement_fig04

Feature Displacement

Deixe-o habilitado para que o displacement funcione.

Initial Sample Rate

Esse atributo controla a qualidade do displacement, processando o tessellation. O que ele faz é checar os valores da textura para determinar a diferença entre as alturas do displacement e onde novos vértices devem ser introduzidos. Ele cria um grid de amostras em cada triângulo da malha do objeto. Por exemplo, o valor padrão 6 gera um grid de 6×6.

Na prática, quanto maior esse valor, melhor será a qualidade do displacement. Mas cuidado! Maior também será o tempo de render, pois ele está acrescentando triângulos, lembra? Comece com valores baixos e vá testando aos poucos, até alcançar o resultado esperado.

Extra Sample Rate

Esse atributo é usado para refinar os novos vértices adicionados pelo Initial Sample Rate. Ele ajusta os vértices alinhando-os com o Displacement.

Na prática, quanto mais drástico, “duro” for o resultado do displacement em encontros de planos, maior deverá ser o valor do Extra Sample Rate. Ele suavizará essas áreas do displacement.

O valor padrão é 5, mas é recomendado começar a configurá-lo usando 0 e ir aumentando aos poucos, não passando de 20 (normalmente, 20 é um valor máximo que costuma resolver os casos mais difíceis).

Texture Threshold

Esse atributo é usado para eliminar vértices que não contribuem de forma significativa para o displacement. Qualquer vértice onde a variação for menor que o valor de Texture Threshold não será considerado.

Dicas:

  • Recomenda-se que se for usada uma imagem bitmap para gerar o displacement, que esta tenha boa qualidade, com o mínimo de granulação. Assim, é possível manter o valor do Texture Threshold em 0 (zero).
  • Se o tempo de render estiver muito alto, aumente o valor deste atributo, mas bem pouco (comece com valores decimais).
  • Se na imagem o valor de branco e preto for drástico, sem tons de cinza entre eles para suavizar a transição, então deixe mantenha o valor padrão (zero).
  • Se imagem tiver transição suave entre os valores de branco e preto, então mantenha o valor deste atributo o mais próximo possível de zero.

Normal Threshold

Determina o limiar do ângulo (em graus) entre as normais de dois triângulos adjacentes. Recomenda-se usar o valor padrão de 30 graus.

Abaixo, seguem testes com diferentes valores:

displacement_fig05

Dica Master: a qualidade, o tempo de render e os valores dos atributos acima também dependerão da quantidade de polígonos atual do objeto e da qualidade do Anti-aliasing. Nas comparações acima, o Poly Plane está com 2500 faces e o Antialising (Render Settings > Maya Software > Anti-aliasing Quality) no campo Quality está com o preset “Intermediate quality”.

Configuração do Displacement no Mental Ray

Configurar o Displacement no Mental Ray é mais complicado, pois existe uma gama de atributos que permite ajustes finos em diferentes situações. Então, mostrarei da forma mais fácil e rápido, ou seja, usando presets (configurações pré-estabelecidas). Numa outra ocasião, tentarei escrever um post falando somente dessas configurações.

Nos exemplos a seguir, apliquei o mesmo Lambert no Poly Plane. Só alterei o renderizador para Mental Ray e configurei o Anti-Aliasing.

Ao renderizar, o Mental Ray utiliza as configurações do Maya Software para gerar o Displacement. Para usar as configurações do próprio Mental Ray, faça o seguinte:

  1. Selecione o objeto que possui o Displacement aplicado (no meu caso, polyPlane1)
  2. Acesse Window > Rendering Editors > mental ray > Approximation Editor
  3. Na primeira seção, Displacement, clique no botão Create.
  4. Para ter acesso às configurações, acesse o Attribute Editor (caso não veja as configurações, clique no botão Edit, no Approximation Editor).

Ao clicar no botão Create, o Mental Ray cria um node chamado mentalrayDisplaceApprox1, e o conecta ao objeto.

displacement_fig06

Presets

Lista de presets para executar o Tesselation (Approximation). Você pode usar os presets da forma como estão configurados ou usá-los como um início de configuração, ou seja, você pode alterar os valores da forma que achar melhor (lembrando que não vou falar de cada atributo neste post).

Parametric Grid (Low/Mid/High) Quality

Com esse método, cada patch da superfície (área entre isoparms) é subdividida em uma quantidade fixa de triângulos.

Regular Grid (Low/Mid/High) Quality

Este método subdivide toda a superfície (ao invés de fazê-lo por partes – patches) usando uma quantidade fixa de triângulos.

Angle Tolerance (Low/Mid/High) Quality

Usa um método de tessellation adaptativo no qual mais triângulos são adicionados em áreas de curvatura. O bom desse método é que ele adiciona mais triângulos nas áreas que são mais necessárias (áreas onde a superfície é curva) e adiciona menos triângulos em áreas maiores e planas, onde não são necessários tantos triângulos.

Pixel Length (Low/Mid/High) Quality

Adiciona triângulos com base no tamanho (em pixels) da superfície. As superfícies que estiverem perto da câmera terão muito mais triângulos, enquanto as que estiverem distantes, terão menos triângulos. A vantagem deste método é dar mais atenção nas superfícies que realmente precisam de maior suavização.

Abaixo, seguem alguns testes comparativos:

displacement_fig07

Introdução ao render – Maya

Este post tem a finalidade de mostrar as principais ferramentas para render. É uma introdução e um guia rápido para começar a trabalhar com render pelo Maya Software. O Maya possui 4 renderizadores:

  • Maya Software (padrão): não gera iluminação fisicamente correta, nem materiais reais. É o método “old school”.
  • Mental Ray: gera GI e possui materiais reais e outros efeitos fisicamente corretos.
  • Maya Hardware: renderiza previews usando a placa de vídeo, passos específicos e partículas específicas.
  • Maya Vector: gera imagens em vetor ou estilo vetor.

Para visualizar na viewport o enquadramento correto da cena, habilite o Resolution Gate:

introrender01

O tamanho final do render, mostrado no Resolution Gate, é configurado dentro do Render Settings, grupo Image Size:

introrender02

O Render Settings também pode ser acessado através do menu Window > Rendering Editors > Render Settings.

Para visualizar a imagem na Render View, basta clicar no botão Render the current frame (renderizar frame atual). Isso fará com que a Render View seja aberta e o render comece no mesmo instante. Se você clicar no botão Open Render View, esta será aberta, porém, sem gerar render. Se nenhum render tiver sido feito antes, a Render View mostrará uma imagem preta, caso contrário, ela mostrará o(s) último(s) render(s) feito(s). Para renderizar a partir da Render View, basta clicar em Redo Previous Render (veja mais abaixo):

introrender03

introrender04

  • Redo Previous Render: renderiza imagem no frame atual
  • Render Region: renderiza somente a área onde foi feita uma janela de seleção. Clique com o botão esquerdo do mouse  em qualquer parte da imagem renderizada e arraste o mouse para desenhar uma área retangular, de borda vermelha. Solte o botão e clique em Render Region. Isso fará um render somente dessa área.
  • Snapshot: mostra a imagem da viewport no lugar da imagem renderizada. Isso é bom, pois gera uma referência para se usar o Render Region, caso nenhum render tenha sido feito previamente.
  • Open Render Settings window: abre as opções de render.
  • Display RGB Channels: mostra a imagem colorida, ou um dos canais RGB, ou em tons de cinza (Luminance). Clique com o botão direito sobre este botão para ter acesso a essas opções.
  • Dislay Alpha Channel: mostra o canal Alpha da imagem renderizada.
  • Display Real Size: na render view, é possível usar o Pan e o Zoom, da mesma forma que na viewport. Depois de dar um Zoom Out ou Zoom In na imagem, clique neste botão para que a imagem seja mostrada no tamanho real.
  • Keep Image: mantém uma cópia da imagem renderizada na Render View. Ao fazer outro render, tanto a imagem anterior quanto atual ficam na render view para comparação.
  • Remove Image: deleta imagens mantidas com o botão Keep Image.
  • Renderizador Atual: permite escolher o renderizador.

Por padrão, algumas informações são mostradas embaixo da imagem renderizada:

introrender05

  • Tamanho da imagem: mostra o tamanho final da imagem gerada, configurada no Render Settings.
  • Zoom: mostra a quantidade de zoom atual na Render View, usando Alt + Botão Direito. O valor 1 significa imagem sem zoom (clique no botão Display Real Size).
  • Renderizador atual: mostra o nome do renderizador usado para gerar a imagem atual.
  • Frame: especifica qual frame foi renderizado.
  • Tempo de render: mostra o tempo que a imagem levou para ser gerada.
  • Câmera: mostra de qual vista a imagem foi renderizada.

Para salvar a imagem gerada na Render View, acesse o menu da Render View: File > Save Image…

Para escolher qual vista será renderizada na Render View, acesse o menu da Render View: Render > Render > escolha vista . O mesmo pode ser feito com o Snapshot: Render > Snapshot > escolha vista.

introrender06

Por padrão, o renderizador usado no Maya  é o Maya Software. Se você tentar renderizar uma imagem cujas luzes projetam sombras do tipo Raytrace ou que tenham materiais no qual o valor do campo Reflectivity seja maior que 0 (zero), deve-se habilitar a engine Raytrace, no Render Settings. Caso contrário, sombras Raytrace não serão geradas, assim como os reflexos dos materiais, pois os reflexos reais são Raytrace. Para habilitar a engine Raytrace, acesse o Render Settings > Maya Software > Raytracing Quality e habilite a opção Raytracing:

introrender07

Para renderizar animações, deve-se usar o Batch Render (modo Rendering > Render > Batch Render ):

introrender08

Porém, antes, é necessário fazer algumas configurações no Render Settings:

introrender10

Grupo File Output

File name prefix: nome base do arquivo de imagem que será gerada.

Image format: tipo de arquivo de imagem. Em animação, renderiza-se sequência de imagens, uma para cada frame.

Frame/Animation ext: define como será a nomenclatura dos arquivos que serão gerados. Por exemplo, se o nome definido em File name prefix tiver sido casa, a opção do Frame/Animation ext for name#.ext, e Image Format for TGA, então, os arquivos se chamarão casa1.tga, casa2.tga, casa3.tga e assim por diante (name = nome do arquivo; # = número do frame e ext = extensão do arquivo).

Frame padding: define quantos dígitos haverão na nomenclatura do frame. Por exemplo, no valor padrão (1), a nomenclatura fica casa1.tga, casa2.tga, etc. Com valor 3, fica casa001.tga, casa002.tga, etc.

Grupo Frame Range

Nota: se o campo Frame/Animation ext estiver com o valor padrão name (Single Frame) ou name.ext (Single Frame), o grupo Frame Range estará desabilitado.

Start Frame: define o início da renderização da animação, ou seja, a partir de qual frame a animação deve ser renderizada.

End Frame: define o final da renderização da animação, ou seja, até que frame a animação deve ser renderizada.

Grupo Renderable Cameras

Renderable camera: define a vista que será renderizada.

Cor do Background da imagem

A cor de fundo (background) está atrelada à câmera. Ou seja, se houver mais de uma câmera, cada uma pode gerar uma cor diferente para o fundo. Para alterar esse atributo, selecione a câmera (pode ser pelo Outliner – Window > Outliner, ou pelo ícone da viewport). No Attribute Editor, procure pelo grupo Environment e altere o valor de Background Color:

introrender101

Abaixo, segue um render com a cor de fundo alterada para azul:

introrender12

Qualidade do render

Por último, para aumentar a qualidade do render no Maya Software, acesse Render Settings > Maya Software > Anti-aliasing Quality e configure os campos Quality e Edge anti-aliasing, usando os presets existentes. Quanto melhor a qualidade, maior o tempo de render:

introrender09

Mais uma vez, esse post é só uma introdução e um guia rápido, sendo assim, só os principais atributos foram mostrados. Posts futuros discutirão essas mesmas áreas de forma mais profunda e abordarão outras áreas que não foram mostradas aqui. Qualquer dúvida, entre em contato.

 

Maya Joint Orient

Introdução

Quando se fala em rigging no Maya, a primeira questão que vem na minha cabeça é como ficam as orientações dos eixos locais dos bones? Até que ponto elas influenciam no bom funcionamento do rigging? Fazendo algumas pesquisas e conversando com alguns amigos, gostaria de compartilhar as diferentes formas de corrigir a orientação dos bones (os quais o Maya também chama de Joints) e as difentes opiniões a respeito do assunto.

Ao criar uma cadeia de bones, por alguma razão, o Maya não alinha os bones, mantendo a mesma orientação. A informação geral é que é importante deixar todos eles com a mesma orientação, não importando qual. E normalmente, essa mesma orientação é importante na mesma cadeia. Outras cadeias parecem poder ter outras orientações. Algumas pessoas vão dizer que é melhor que todos os bones tenham, sim, a mesma orientação, não importa a cadeia a qual ele pertença. E eu conversei com pessoas que sequer se preocupam com essa questão, alegando que isso não atrapalha o rigging.

jointorientation01

No manual do Maya, na seção que fala sobre orientação dos joints, lê-se o seguinte:

“Você pode configurar a orientação do eixo local do joint para manter a simetria do esqueleto do personagem. Por exemplo, se você criar uma cadeia para o braço direito, pode fazer uma cópia espelhada para ser o braço esquerdo. Você deve alinhar um dos eixos locais do joint com o bone afim de que o eixo aponte em direção à cadeia. Esse procedimento assegura que a cadeia de joints se comportará de forma correta quando o IK for aplicado.”

Bom, a conclusão que eu tiro disso é que existe uma importância na orientação dos eixos locais dos joints, pelo menos, no que diz respeito ao espelhamento de cadeias e ao uso do IK (e talvez, o que seja realmente importante é que apenas o eixo que segue a orientação do bone seja o mesmo para todos). Talvez, mesmo usando IK e sem se preocupar com a orientação dos bones, possa dar certo para riggins mais simples (e acredito que dependa também do tipo de animação). É bem possível que riggings mais complexos só funcionem bem com a correta orientação configurada.

Feitas as observações, gostaria de destacar algumas formas de fazer e/ou usar a orientação local dos joints. Mas antes, lembro que é importante deixar os valores de rotação (campo Rotate) dos joints, no Channel Box, zerados. Para o processo de correção da orientação, é bom visualizar os eixos locais dos joints. Para isso:

  1. Selecione os joints desejados
  2. Acesse Display > Transform Display > Local Rotation Axis
  3. Para esconder os eixos locais, basta fazer o mesmo procedimento

No final deste artigo tem um vídeo mostrando, na prática, os métodos descritos abaixo.

Método manual

Uma das formas de fazer a correção é girando manualmente o eixo local do joint.

  1. Na barra de ferramentas, clique no ícone Select by component type
  2. Agora clique em Select miscellaneous components
  3. Selecione o eixo local de um joint e, com a ferramenta Rotate, rotacione o eixo até deixá-lo na orientação desejada.

Sinceramente, acho esse método o menos indicado, porque é muito difícil acertar a orientação exata rotacionando “na unha”…

Método de orientação World

Outra forma de usar a orientação dos joints, é configurar tudo pra World, ou seja, deixando a orientação dos eixos locais iguais as do espaço 3D.

Aqui existe duas opções: ou se constrói as cadeias já na orientação World ou corrige depois de criada a cadeia.

Para construir a cadeia já com a orientação do espaço 3D:

  1. Antes de inserir qualquer joint, acesse as opções da ferramenta “Joint Tool“: F2 (módulo Animation > Skeleton > Joint Tool > options
  2. Mude a opção do campo Orientation para None
  3. Construa a cadeia

Para configurar a orientação para World, após a cadeia ter sido construída numa orientação qualquer:

  1. Isole todos os bones (unparent)
  2. Selecione um bone e acesse o Attribute Editor
  3. Zere os valores dos campos Joint Orient (faça isso para todos os bones)
  4. Re-Parent os bones na sequência original

Método pela ferramenta Orient Joint

Como eu citei na introdução, não parece haver uma orientação específica que deve ser seguida. Então, observe qual é a orientação que a maioria dos joints está usando e corrija os bones que estão com outra orientação, adotando a mais usada.

  1. Selecione o bone que está com a orientação incorreta
  2. Acesse F2 (módulo Animation) > Skeleton > Orient Joint > options

Aqui existem 3 campos os quais precisam ser compreendidos, pra não ficar clicando em todas as opções até chegar na orientação desejada:

Orientation: o importante é prestar atenção no primeiro eixo das opções. Nesse campo, se configura o eixo que apontará na direção do bone. Por exemplo, XYZ, quer dizer que o eixo X seguirá a orientação do bone. ZXY, quer dizer que o eixo Z seguirá a orientação do bone, e assim por diante.

Second axis world orientation: enquanto o campo acima guia o primeiro eixo das opções, este campo guia o segundo eixo. Mas em vez do segundo eixo seguir a orientação do bone, ele seguirá a orientação do World (espaço 3D). Exemplo, XYZ e +X, significa que o eixo local X do joint seguirá a orientação do joint enquanto o segundo eixo, Y, seguirá a orientação do eixo World X na direção positiva. ZXY e -Y, significa que o eixo local Z seguirá a orientação do joint e o eixo local X seguirá orientação World do Y na direção negativa, e assim por diante.

Hierachy: quando habilitado, muda a orientação de todos os joints abaixo do joint que está sendo corrigido. Cuidado! Nem todos os joints-filhos seguirão a orientação do joint-pai. Eu recomendo deixar essa opção desabilitada, fazendo com que a orientação mude apenas para o joint selecionado.

Método usando Constraint Aim

Dos métodos apresentados aqui, acredito que esse seja o mais complexo. Uma observação importante: ao montar a cadeia, se precisar rotacionar algum joint, faça isso via os campos do Joint Orient (para manter os campos Rotate zerados), dentro do Attribute Editor (clique dentro de um dos campos, CTRL + LMB e arraste o mouse, permitindo que os valores se alterem em tempo real).

O procedimento para esse método é o seguinte:

  1. Isole (unparent) o joint-pai e os joints com a orientação local incorreta
  2. Selecione esses joints isolados, acesse o Attribute Editor e zere os valores dos campos Joint Orient de cada um
  3. Crie um locator e posicione-o exatamente no centro do joint-pai (use o snap to point para posicioná-lo)
  4. Mova o locator, um pouco, para um dos lados (você vai entender mais pra frente o porquê disso)
  5. Selecione o joint-filho e em seguida o joint-pai (mantenha Shift pressionado) e acesse as opções do Constraint Aim (F2 > Constraint > Aim > options)

É importante saber o que o Constraint Aim faz: basicamente, ele faz com que um determinado objeto (driven) aponte na direção de outro (alvo). A ordem de seleção dos objetos define quem será o alvo (primeiro objeto selecionado). Assim, o joint-filho será o objeto alvo e o joint-pai, o driven. Seguem as explicações sobre os campos usados aqui, lembrando que 0 (zero) e 1 são o equivalente a desabilita e habilita determinado eixo, respectivamente, sendo que a direção do eixo pode ser positiva ou negativa (a ordem dos campos são respectivamente X, Y e Z):

  • Aim vector: especifica a direção do alvo. A configuração padrão (1,0,0) faz com que o eixo X, na direção positiva, aponte para o objeto alvo.
  • Up vector: enquanto o Aim Vector é o eixo que aponta para o alvo, o Up Vector é o eixo que aponta para uma outra direção, para tentar alinhar o objeto (no nosso caso, o eixo local) da forma desejada. A configuração padrão faz com que o eixo Y positivo do objeto driven (Up vector = 0,1,0) aponte na direção do eixo Y positivo do World (World up type = Vector e World up vector = 0,1,0).
  • World up type: especifica qual será a referência do Up vector. A opção padrão (Vector) faz com que a referência seja um dos eixos do World (definido no campo World up vector). Em vez de usar como referência o eixo World, vamos usar um outro objeto (locator) e, para isso, a opção escolhida deve ser alterada para Object up. Essa opção desabilita automaticamente o campo World up vector.
  • World up object: especifica o nome do objeto que será usado como referência para o alinhamento. No nosso caso, o nome do locator deve ser escrito aqui (o nome exato).

Após aplicar o constraint num bone e após se certificar se a orientação está correta, o constraint pode ser deletado (ele foi usado apenas para re-orientar o eixo do joint). Se você observar, os valores dos eixos de rotação no Channel Box não estão zerados, e é importante que esses valores sejam iguais a zero. Para fazer essa alteração, abra o Attribute Editor (com o bone selecionado) e copie os valores dos campos Rotate para os campos Joint Orient. Depois, zere os campos Rotate. Assim a orientação corrigida se manterá e os campos Rotate no Channel Box ficarão zerados.

Repita o procedimento acima para cada joint isolado, usando sempre como objeto-alvo o respectivo joint-filho. Não esqueça de alinhar o locator com o joint que terá sua orientação corrigida. No final do processo, é só “re-parentear” os joints na ordem original.

Método do Alinhamento

Eu vi esse método no tutorial sobre rigging do Danilo Pinheiro (obrigado Danilo!), da Vetor Zero (dêem uma olhada no tutorial dele. É muito bom). Independente do tipo de cadeia (perna, braço, coluna, etc) ele a cria com os bones todos retos, alinhados, com o grid visível e usando o Snap to Grid (tecla X). Isso faz com que tenhamos certeza de que a orientação dos joints seja a mesma. Depois, ele rotaciona e move  (com a opção “Along rotation axis” habilitada no painel Move do Tool Settings. Isso é muito importante para não alterar a orientação dos joints!) os bones até obter o correto posicionamento de cada joint na cadeia em questão.

Como os valores de rotação não ficam zerados, ele dá um Freeze Transformation, o que parece funcionar bem, já que ele faz automaticamente a transferência dos valores do campo Rotate para o campo Joint Orient, zerando o Rotate.

Método via Script

Uma das formas mais práticas e rápidas de re-orientar os eixos locais dos joints é usando um script. Porém, existem algumas questões que devem ser consideradas:

  • Se você não sabe escrever um script, vai depender de alguém que escreva ou de encontrar um script gratuíto para usar
  • Se o script tiver algum erro (de lógica, mesmo), ele não vai re-orientar os eixos de forma apropriada (por isso é bom que você o tenha escrito)

Eu baixei um do forum da 3D Buzzhttp://www.3dbuzz.com/vbforum/showthread.php?78879-how-to-re-orient-joints-after-rigging-animating

Conclusão

Eu não consigo me adaptar a montar um esqueleto sem me preocupar com a orientação dos eixos locais dos joints. Isso me incomoda bastante. Acho que existe um risco grande de alguma coisa dar errada, inclusive, quando já se está animando o personagem. Se isso fosse uma questão realmente sem importância, não existiriam profissionais adotando algum método para fazer a correção dessas orientações (nada contra aqueles que não se preocupam com isso. Experiência também conta).

Seja qual for o método adotado, apesar da orientação ser corrigida, os valores nos campos do Joint Orient nunca é igual de um método para outro. Como saber qual é o mais certo? A melhor forma é testar. Eu, particularmente, prefiro usar o Método Constraint Aim ou do Alinhamento, passado pelo Danilo Pinheiro. Acho que esses dois métodos deixam o esqueleto mais “limpo”, mais livres de bugs.

As diferenças que eu mais observo entre esses dois métodos é que, no primeiro, o posicionamento dos joints é mais fácil, gastando-se mais tempo re-orientando os eixos. No segundo, gasta-se mais tempo posicionando os joints, porém eles já estarão com a orientação correta.

Cabe a cada um escolher o que achar melhor.

Assista o vídeo do início do post mostrando os métodos acima.

Maya Mental Ray: Qualidade do Anti-Aliasing no Maya

O que é anti-aliasing?

Acho mais fácil entender primeiro o que é aliasing: é aquele “serrilhado” que aparece entre os pixels, principalmente, quando existe uma linha inclinada e manchas provenientes da falta de suavização entre pixels que ficam em toda a parte da imagem. Anti-aliasing, á a suavização desses pixels. Por isso, as configurações que controlam a qualidade do anti-aliasing do Mental Ray, suavizarão também os efeitos de reflexão borrada, sombra derivada de luz tipo area e até o efeito gerado pelo Final Gather (não mostrarei isso neste tutorial). A baixa ou incorreta configuração do anti-aliasing, numa animação, pode criar “flickerings”, ou seja, haverão áreas que ficarão “piscando” de um frame para outro.

OBS.: mesmo sendo este um tutorial de Maya, os conceitos passados aqui devem ajudar usuários de 3ds Max e Softimage também, pois o Mental Ray é o mesmo.

fig01

Logo, saber configurar o Anti-Aliasing é muito importante para a qualidade final do render. Lembrando que, quanto mais qualidade, maior o tempo de render.

Acessando as opções do Anti-Aliasing

Os atributos que controlam a qualidade do anti-aliasing no Mental Ray, estão dentro do Render Settings: Window > Rendering Editors > Render Settings > aba Quality > grupo Anti-Alising Quality.

fig02

Sampling Mode

Permite configurar a quantidade de “sampleamento” do anti-aliasing. Quanto mais samples (amostras) por pixel, melhor será a fusão dos pixels, gerando a suavização dessas áreas. Os atributos Min Sample Level e Max Sample Level, definem a faixa de níveis em que deve acontecer o sampleamento (do valor mínimo ao valor máximo).

Funciona assim: se o valor mínimo (Min Sample Level) for -1 e o valor máximo (Max Sample Level) for 2, significa que os pixels que puderem ser suavizados usando nível -1, serão suavizados nesse nível. Os que precisarem de um nível maior, serão suavizados em níveis maiores que -1, não ultrapassando o nível 2 (definido como valor máximo).

OBS: O atributo Min Sample Level é influenciado pelo atributo Anti-aliasing Contrast (ver mais abaixo). O valor configurado é o nível mínimo de samples garantido, porém dependendo do valor de Anti-aliasing Contrast, o Mental Ray pode aumentar o nível mínimo de samples (definido em Min Sample Level). Valores negativos são denominados Infra-Sampling e, positivos, Super Sampling.

Normalmente, valores -2 (Min) e 2 (Max) são uma boa configuração para renders finais. Mas se houverem falhas em objetos muito finos, como a tela de uma grade, por exemplo, então será necessário aumentar o valor de Min Sample Level.

Existem três opções no Sampling Mode. O que muda entre elas é a relação do valor de Min Sample Level e Max Sample Level, se usa ou não o atributo Anti-aliasing Contrast e a relação com o atributo Filter (ver mais abaixo):

Fixed Sampling: usa um número fixo de samples, ou seja, os valores de Min e Max Sample Level são sempre iguais (Exact). Esse modo ignora o atributo Anti-alising Contrast e habilita os atributos do grupo Multi-Pixel Filtering.

Adaptive Sampling (modo padrão): só é possível ajustar o valor de Max Sample Level. O valor de Min Sample Level é ajustado automaticamente. A relação entre esses valores é sempre de dois níveis. Exemplo: se ajustar o Max para 2, o Min será 0 (zero). Se o Max for 1, o Min será -1, e assim por diante. Esse modo trabalha junto com Anti-aliasing Contrast e só usa os atributos do grupo Multi-Pixel Filtering a partir do nível 1 de Max Sample Level.

Custom Sampling: permite configurar valores independentes para Min e Max Sample Level, mantendo o modo Adaptive Sampling (exceto se os dois valores forem iguais, resultando no modo Fixed). Em geral, a relação entre os valores de Min e Max não deve ser maior que 3 níveis. Esse modo trabalha junto com o Anti-aliasing Contrast e só usa os atributos do grupo Multi-Pixel Filtering a partir dos níveis -1 e 0 (zero) de Min e Max Sample Level, respectivamente.

O modo Custom Sampling é a forma manual de se configurar o sampleamento, enquanto as outras duas funcionam como pré-configurações (modos automáticos).Number os Samples: mostra a quantidade de amostras por pixel que está sendo usada na suavização da imagem. Os valores dos atributos Min e Max Sample Level, demonstram os níveis. Enquanto os níveis vão de -2 à 4, o número de samples varia de 1/16 à 256 amostras por pixel.

Abaixo, seguem alguns testes mostrando diferentes configurações versus o tempo de render. Todas foram renderizadas em 800×600 pixels. Os materiais da cena são todos mia_material _x:

fig03

Perceba que a partir de um determinado nível, a suavização das linhas retas não dá tanta diferença (ou nenhuma) de um configuração para outra. O que não suaviza totalmente são as áreas borradas da sombra e do reflexo do cromado. A única imagem que suavizou tudo 100% foi a que está usando o modo Fixed no nível 4. Com essa configuração, a imagem está perfeita (em termos de anti-aliasing), usando 256 samples por pixel na imagem inteira (nível máximo). Porém, o tempo de render foi de absurdos 16 minutos e 46 segundos! Muito tempo para uma imagem simples como essa… O Mental Ray gastou tempo usando 256 amostras em pixels que não precisavam de tudo isso, como nas áreas com cor chapada. Valeu a pena somente na sombra e reflexo. Porém, tanto a sombra tipo area quanto o reflexo borrado, possuem seus próprios atributos de controle de samples. Não preciso delegar unicamente ao Sampling Mode que faça isso. O tempo de render vai ser menor e com boa qualidade se eu baixar as configurações do Sampling Mode e aumentar o sampleamento da sombra e reflexo:

fig04

Observando as imagens acima, com uma configuração suficiente e mais baixa que a Fixed em nível 4, e aumentando a qualidade da sombra e reflexo do material cromado, obtive uma boa imagem que levou 8 segundos para renderizar… Lembrando que ainda não utilizei o Contrast e nem o Filter, ainda.

Anti-aliasing Contrast

O Contrast controla a intensidade do sampleamento, aumentando a quantidade de amostras a partir do valor determinado em Min Sample Level até o valor máximo configurado em Max Sample Level. É como se ele aumentasse a densidade das amostras. Quanto menor o valor do Contarst, melhor a qualidade da imagem.

A ação do Contrast é mais fácil de visualizar usando a opção Diagnose samples (ver abaixo).

Diagnose SamplesMostra a localização e a densidade dos supersamples na imagem em tons de cinza. É útil para visualizar o sampleamento quando se está configurando o Sampling Mode e o Contrast.A imagem abaixo mostra o comparativo entre as configurações do Contrast e a visualização do sampleamento. A qualidade da sombra e do reflexo está com 8:

fig05

Note que quanto maior a qualidade do Contrast, maior a suavização da sombra e do reflexo, mostrando mais uma vez, que sabendo lidar com os atributos, pode-se chegar numa imagem de alta qualidade, gastando menos tempo de render. As imagens do Diagnose Samples mostram com clareza a localização dos supersamples, a densidade e o contraste, que quanto maior, maior a qualidade imposta pelo atributo Contrast.

Filter

A função do Filter é mesclar os pixels vizinhos, ajudando a suavizar a imagem. Existem 5 tipos de filtros diferentes. A melhor maneira de saber qual filtro usar é testando, mas abaixo seguem algumas dicas para ajudar na escolha:

  • Box (padrão): é o que renderiza mais rápido.
  • Triangle: mais lento que o Box, produz resultados melhores. Amostras que estejam no centro do pixel terão mais peso, ao passo que as amostras que estiverem mais nas bordas do pixel se mesclarão mais com as do pixel vizinho. Isso faz com que os detalhes no centro do pixel estejam mais presentes na imagem final.
  • Gauss: as amostras se mesclam mais suavemente que os outros filtros, deixando a imagem mais borrada. Gauss requer, no mínimo, um Filter Size (veja abaixo) valor 3.
  • Mitchell e Lanczos: esses dois filtros tendem a aumentar o contraste da imagem (o Mitchell aumenta menos que o Lanczos) e resulta numa imagem mais nítida, sobressaltando os detalhes.

Segue um comparativo entre os filtros:

fig06

Filter Size

Controla o tamanho do filtro usado para mesclar cada pixel. Quanto maior o valor, mais informações são tomadas dos pixels vizinhos e mais borrada será a imagem final. O valor mínimo recomendado é 1,1.

OBS.: tanto o Filter quanto o Filter Size só serão habilitados se o Min e o Max Sample Level tiverem, no mínimo, valores de -1 e 0 (zero), respectivamente.

Comparativo entre valores do Filter Size usando filtro Mitchell:

fig07

Jitter

Reduz o aparecimentos de artefatos (manchas ou defeitos), redistribuindo as amostras localizadas nos cantos dos pixels.Sample LockQuando habilitado, essa opção se certifica de que as amostras de sub-pixel ocorram no mesmo lugar dentro de cada pixel, o que ajuda a reduzir problemas de flickering em animações. Só desligue essa opção caso você esteja tendo problemas no sampleamento do tipo padrão moiré.

Conclusão

1 – Entender o que cada atributo faz é importante, pois dependendo da imagem ou animação, as configurações finais podem ser diferentes.

2 – Faça sempre testes de render para saber qual a melhor configuração usar para obter boa qualidade e menor tempo de render.

3 – O tamanho final da imagem interfere nas configurações. Por exemplo, num objeto gradeado, quanto maior a imagem, menos necessidade de aumentar o valor de Min Sample Level, para eliminar possíveis falhas de render, comumente corriqueiros em objetos muito finos.

4 – Em animações, normalmente, é necessário maior qualidade de anti-aliasing, para evitar flickering. Faça testes de render em alguns frames para certificar que a configuração está adequada.

Um abraço,

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,