Novos recursos do LuxRender 0.8

O renderizador de código aberto LuxRender que usa métodos de renderização do tipo Unbiased, está para receber uma atualização para breve, e a sua versão 0.8 já está em Release Candidate 1. Isso significa que já podemos começar a aproveitar os benefícios da versão 0.8 apenas com alguns bugs que podem vir a aparecer, mas o que existe já está muito próximo da versão final. Para quem não conhece, o LuxRender é um renderizador externo de código aberto que funciona muito bem com o Blender. Um dos pontos fortes do LuxRender é o uso de métodos de renderização como o sofisticado algoritmo Metropolois que é capaz de fazer cálculos de iluminação com base em física real. O resultado é uma imagem com grande fidelidade e qualidade fotográfica, mas que demandam grandes tempos de render para ficarem prontas.

O processo de render no LuxRender é baseado em refinamento progressivo, o que significa dizer que a imagem final do render é gerada de imediato, mas em baixa qualidade. Ao longo do tempo o renderizador refina a imagem e remove o seu aspecto granulado.

Oulierrejection_comparison-LuxRender-08.jpg

Na esquerda temos a aplicação do novo filtro para remover artefatos no LuxRender 0.8.

Quais são as novidades do LuxRender 0.8? Esse link agrega todos os novos recursos do LuxRender 0.8 em formato de lista e com várias imagens de exemplo. Para ajudar no entendimento do conteúdo, compilei a lista com uma descrição traduzida sobre cada uma das suas novas ferramentas:

  • Volumetric Scattering: Esse recurso adiciona a possibilidade de simular materiais como pele humana, cera e outros. O resultado é conhecido também como Subsurface Scattering (SSS).
  • External Photon Mapping: Aqui temos um novo método de renderização que já era utilizado em outros renders como o YafaRay. No caso do Photon Mapping é possível gerar a iluminação aproveitando um mapa de fótons nas superfícies dos objetos 3d. Para cenas internas e que façam uso de renderização do tipo Biased, esse é o novo método recomendado de render no LuxRender.
  • Outlier Rejection: Um dos problemas desse tipo de renderizador é a existência de pequenos artefatos na imagem conhecidos como Fireflys. São pequenos borrões que podem demorar uma edternidade para sair, ou mesmo não sair do render final. Até a versão 0.7 tínhamos que recorrer a edição das imagens para remover esses borrões. Agora cm um filtro chamado de Outlier Rejection esse processo fica bem mais simples, pois o próprio LuxRender remove os borrões usando um filtro.
  • Glossy Translucent: Materiais translúcidos que fazem uso de reflexões são mais fácies de criar agora com o uso desse novo material.
  • Film Response: Opções melhoradas para simular a sensibilidade de filmes fotográficos deixam as imagens mais realistas com o novo Film Response.
  • Microdisplacement: O LuxRender suporta o uso de Microdisplacement que são pequenas deformações na superfície do modelo 3d, geradas durante a renderização.
  • Suporte a arquivos PLY: Agora o LuxRender permite importar arquivos para seus projetos usando o formato PLY, sem a necessidade de exportar modelos em ASCII.
  • Aceleração por GPU: Esse é um dos destaques dessa nova versão. Usando as experiências do SmallLuxGPU, a nova versão do LuxRender implementou aceleração por GPU usando OpenCL. Isso significa dizer que o tempo de render poderá ser reduzido drasticamente se você possuir uma boa placa de vídeo. Na descrição do recurso esse novo módulo foi até chamado de BigLuxGPU!
  • Melhorias na interface: Novas opções para exportar imagens e pequenos ajustes na interface do LuxRender foram implementadas.

A lista não é pequena e temos diversas novidades interessantes, sendo para mim a aceleração por GPU um dos maiores destaques. Se ela realmente aproveitar os núcleos disponíveis em placas de vídeo modernas, teremos tempos de render bem reduzidos.

Como estou recebendo muitos pedidos para tutoriais sobre o LuxRender com o Blender 2.5, vou prepara uma seqüência de vídeos mostrando os novos recursos para breve. Assim aproveito para voltar a produzir tutoriais em vídeo. Para quem já quiser aproveitar o LuxRender usando GPU, recomendo fazer o download no Graphicall.org de builds já integradas do Blender 2.5.

Tutorial Blender e LuxRender: Funcionamento material Carpaint

O uso de materiais em renderizadores avançados pode ser um problema para usuários sem muita experiência, pois nesse tipo de software são usados muitos parâmetros que são equivalentes as propriedades físicas desses materiais. O resultado são painéis enormes e cheios de opções para conseguir efeitos de reflexão metálica e propriedades especiais. Esse é o caso do Carpaint material do LuxRender que não apresenta grande quantidade de explicações na sua documentação, o que frustrava muitos usuários. Como forma de ajudar a entender o processo, um usuário dos fóruns do LuxRender resolveu fazer diversos experimentos para tentar entender o funcionamento do material, e para nosso deleite os resultados foram publicados na íntegra no fórum.

Esse material chamado de Carpaint é usado, assim como o seu nome já deixa bem claro, para reproduzir o efeito metálico do metal da fuselagem de automóveis, que tem propriedades reflexivas bem distintas. Com materiais metálicos normais é um pouco trabalhoso de se conseguir o efeito, mas nesse caso um shader dedicado ajuda bastante.

Para conferir as configurações do Carpaint Material do LuxRender, visite esse endereço.

LuxRender-Carpaint-Tutorial.jpg

Pelos experimentos podemos tirar várias dicas interessantes como o comentário do autor em que o parâmetro chamado de Specular Color não faz exatamente o controle desse tipo de propriedade. Em situações normais teríamos o Specular controlando um tipo de reflexão que não condiz com o controle do material no LuxRender. Na verdade, ele está mais para um ajuste nas cores que são refletidas pelo material usado.

Um dos pontos mais interessantes do guia como um todo são as imagens e os respectivos valores usados nas configurações dos parâmetros, que deixa fácil o entendimento de como podemos influenciar no resultado do material com pequenos ajustes. Por exemplo, a última imagem do tutorial descreve como podemos conseguir e efeito da pintura metálica sem o uso de muitos artifícios ou ajustes complexos, apenas aproveitando as configurações de cores existentes.

Como a modelagem e renderização automotiva é bem comum com o LuxRender, esse tutorial deve ajudar bastante os usuários interessados em desenvolver imagens e projetos realistas, criando carros que tenham a superfície realista no render. Depois do material, basta colocar o modelo dentro de uma cena iluminada como um estúdio fotográfico e teremos um belo render!

LuxRender pode usar a GPU para renderizar na versão 0.7

O anúncio do Octane Render no início dessa semana causou grande expectativa sobre o que poderemos fazer usando mais a GPU do que as CPUs para renderizar nossos projetos, devido a maneira com que o renderizador manipula os dados apenas usando a GPU o resultado é realista e rápido de conseguir. Mesmo considerando que os algoritmos usados no processo são baseados em métodos Unbiased de renderização, que naturalmente demorariam muito tempo no refino da imagem. Mas, quando é que veremos algum renderizador de código aberto usando alguma tecnologia semelhante? Já existem versões de renderizadores como o V-Ray e FryRender usando a GPU ao menos em parte do processo.

A reposta pode estar nas próximas atualizações do LuxRender, e quero enfatizar a palavra “pode”, pois ainda é muito cedo para fazer afirmações sobre o que poderá estar presente. Desde que o SDK do OpenCL foi disponibilizado pela ATI e NVidia, um desenvolvedor e usuário do LuxRender chamado David Bucciarelli está fazendo testes no aproveitamento de GPU no LuxRender.

A discussão nos fóruns de usuários do LuxRender pode ser acompanhada nesse endereço, e para elucidar ainda mais o que está sendo feito, o autor do projeto gravou um vídeo demonstrando a sua versão experimental do LuxRender aproveitando o poder da GPU.

SmallLuxGPU (OpenCL) from David Bucciarelli on Vimeo.

O material ainda é bem preliminar e não há nenhuma previsão de quando ou até mesmo se deve ser adicionado ao LuxRender. Esse material mostra que o aproveitamento da GPU em sistemas de renderização é algo inevitável, pois muitas dessas GPUs estão aceitando trabalhar com algoritmos de render sofisticados como o Path Tracing que é Unbiased.

O mais empolgante de todos esses testes é o relato das pessoas que fizeram os testes com o software, relatando que o ganho de desempenho na renderização é impressionante. Mas, ainda assim é cedo para ficar animado, pois ainda são necessários muitos testes para chegar a versões estáveis do software.

Esse artigo mostra que não importa qual seja a área em que você trabalhe na computação gráfica 3d, o futuro está no uso de GPUs poderosas e não mais na CPU. O caminho está traçado nessa direção e acredito que não haverá mais volta.

Para fazer o download do código fonte e binários dessa versão experimental do LuxRender usando a GPU, visite esse endereço.

Tabela com tipos de lâmpadas disponíveis no LuxRender para design de interiores

Entre todos os renderizadores externos disponíveis para o Blender 3d, um dos mais simples de usar e configurar é o YafaRay. Mas, mesmo sendo simples o YafaRay ainda exige dos seus usuários o conhecimento sobre o funcionamento dos seus parâmetros para que seja possível criar imagens de qualidade e materiais com características que se assemelhem a superfícies reais. Nesse quesito o LuxRender e o seu script de exportação no Blender são bem mais amigáveis para usuários menos experientes. No LuxBlend é possível encontrar uma excelente gama de presets (ou modelos) prontos para uso em qualquer projeto. Os presets abrangem tanto as configurações do render como os materiais usados na cena.

O problema dos presets é que nem sempre podemos avaliar o impacto que a escolha de cada preset tem no projeto. Para ajudar nessa avaliação, existem algumas tabelas de materiais e luzes com a aplicação dos presets em cenas renderizadas no LuxRender. Com esse tipo de recurso podemos usar uma referência visual para selecionar o melhor preset para nosso projeto. Uma dessas tabelas acaba de ser atualizada e representa a aplicação dos espectros de luz em objetos configurados para emitir energia luminosa no LuxBlend.

Como funciona esse espectro?

Nos projetos envolvendo o LuxRender é necessário usar planos ou objetos que emitem energia luminosa, que são mais adequadas para a simulação de física real nos renderizadores Unbiased. Quando escolhemos um material do tipo Light é possível associar texturas nessa luz, que por padrão sempre ficam marcadas como blackbody.

Existe outra opção chamada de “lampspectrum” que habilita o uso de diversas opções de luzes prontas no render. Pelo nome da lâmpada fica complicado diferenciar os tipos e efeitos que cada luz terá na cena. O processo fica muito mais simplificado com a ajuda da tabela.

tabela-lampadas-luxrender-design-interiores-02.jpg

tabela-lampadas-luxrender-design-interiores.jpg

Essas informações armazenadas no LuxBlend funcionam de maneira muito semelhante as luzes fotométricas, mas com a vantagem de não necessitar dos arquivos com extensão “.ies” com as informações da fonte de luz. Tudo está pronto para uso no LuxRender.

É por esse tipo de recurso que o LuxRender está se tornando de longe a opção preferida pelos meus alunos, sempre que mostro os presets e comparo com o YafaRay e Indigo, os alunos acabam preferindo usar o LuxRender pela rapidez na configuração da cena e dos materiais. O tempo de render é maior, mas a parte mais complicada fica muito mais simples para pessoas sem experiência com ajustes de materiais e parâmetros de renderização.

Claro que essa é uma solução que deve ser adotada apenas no primeiro contato com a ferramenta, para com o tempo deixar os presets de lado e criar suas próprias configurações e ajustes personalizados.

Renderização para interiores com o LuxRender RC5

No início desse mês foi lançada a quinta versão de testes do LuxRender 0.6 que trouxe alguns avanços em relação ao que oferecia o RC4. Uma dessas novidades que está listada na página que comenta sobre o lançamento foi o melhor desempenho do render. A promessa é que os bugs e problemas do renderizador estavam corrigidos na sua grande maioria, o que resultaria em imagens com mais qualidade em menos tempo. Como você deve saber, o LuxRender é um render tipo tipo Unbiased que gera as imagens por refinamento progressivo, o que demanda longos períodos de tempo para gerar imagens limpas e sem granulação, em troca de iluminação baseada em física real.

Para comprovar a melhoria na velocidade do render, resolvi fazer uma pequena comparação entre o LuxRender 0.6 RC4 e RC5 usando os mesmos parâmetros para uma única cena. O objetivo é fazer apenas uma simples comparação e não um estudo científico. Por isso, os parâmetros do teste foram os seguintes:

  • Render com tamanho de 400×300
  • Tempo de render: 30 minutos

Claro que para fazer o teste usei o mesmo computador, sem nenhum software adicional funcionando. A cena usada para o teste é a do solário, que usei várias vezes para demonstrar recursos do Indigo. Todos os materiais e ajustes da cena foram adaptados para o LuxRender.

render-interiores-blender-luxrender-01.png

O primeiro resultado foi obtido com a versão RC4:

render-interiores-blender-luxrender-02.png

Agora com o RC5:

render-interiores-blender-luxrender-03.png

Por mais incrível que pareça a impressão que tive nas imagens é que o render no RC4 teve um melhor resultado, com um pouco menos de granulação. Para ter uma boa idéia disso, basta prestar atenção na parede branca na parte direita da imagem.

Como explicar isso? No período de tempo em que o teste foi realizado, isso é explicado pela quantidade de samples por segundo usados no refinamento da imagem. Na parte inferior da interface isso fica disponível no terceiro valor da esquerda para a direita.

render-interiores-blender-luxrender-04.png

Na figura acima podemos visualizar que o RC4 conseguiu manter uma média ligeiramente superior que o RC5.

O que isso prova? Na verdade, para chegar em conclusões mais precisas seria necessário fazer mais testes em ambientes diferentes. Mas, podemos perceber que a velocidade do render não foi melhorada substancialmente. Mesmo assim, ainda prefiro um render um pouco mais lento e com menos problemas.

E você quais as suas impressões sobre o RC5? Ele ficou mais rápido mesmo?