LuxVR: Renderização por GPU no LuxRender

O LuxRender é um dos renderizadores externos que melhor trabalha junto com o Blender, e devido ao fato do software usar algoritmos de renderização baseados em física real, as imagens geradas com o LuxRender tendem a ser fantásticas. Mas, o LuxRender tem uma péssima fama entre artistas 3d devido a velocidade com que geras as suas imagens. O seu processo de renderização é baseado em refinamento progressivo de imagens, semelhante ao que outros softwares fazem como o próprio Blender Cycles e o Indigo Renderer. É possível usar algum artifício de hardware para acelerar o render com o LuxRender? Claro que sim! Isso é feito com o suporte de GPUs, que é a solução de render mais usada nos dias de hoje quando falamos em reduzir os tempos necessários para gerar as imagens.

Mas, um projeto em andamento com o LuxRender pode colocar o software em pé de igualdade com ferramentas já consolidadas na renderização usando GPU. O chamado LuxVR tem como objetivo oferecer aceleração de hardware usando OpenCL, o que deve agradar bastante os donos de placas da Radeon. Quer uma amostra do que pode ser o LuxVR? O vídeo a seguir é uma demonstração do projeto, gravado pelo desenvolvedor:

Como você pode perceber pela velocidade com que a imagem é atualizada, o projeto realmente consegue exibir os detalhes do modelo 3d em tempo real, fazendo justiça ao nome LuxVR. É para você largar tudo e ir correndo adotar o LuxVR? Calma, não existe razão para pânico, pelo menos ainda. O projeto é muito promissor, mas ainda está em desenvolvimento, mas é uma excelente referência e possibilidade futura para usuários do Blender que gostariam de usar os recursos avançados do LuxRender para gerar imagens realistas. Quem sabe assim será possível encontrar mais animações renderizadas com o LuxVR.

Em comparação com o Cycles o LuxRender possui mais recursos, devido claro a idade e empenho dos desenvolvedores que estão trabalhando no renderizador já faz um bom tempo, mas a tendência é que o Cycles um dia pelo menos se equipare em recursos e sofisticação no render.

O nome VR não está no projeto por acaso, significando que além do render mais rápido o objetivo do LuxVR é oferecer a possibilidade de trabalhar com ambientes de realidade virtual no Blender, alimentando a render engine do SmallLuxGPU.

Quer testar o LuxVR? É possível fazer o download de versões de teste do LuxRender com o recurso nesse endereço.

Light Groups do LuxRender para composição

O artigo que publiquei essa semana mencionando o lançamento da versão 1.0 do LuxRender gerou diversas mensagens recebidas pelo formulário de contato do blog, com pessoas interessadas em usar o LuxRender, e também sobre a possibilidade de no futuro um curso no EAD – Allan Brito ensinar a usar o LuxRender junto com o Blender 2.6. Mas, será que o LuxRender é melhor do que o Cycles? Esse tipo de comparação é difícil de realisar e até mesmo injusta com o Cycles, devido ao tempo em que o LuxRender já está em desenvolvimento, e o Cycles sendo uma ferramenta aonda jovem e com muitos recursos a desenvolver.

Portanto, hoje ainda temos uma boa quantidade de recursos no LuxRender que justificam em algumas situações deixar o Cycles um pouco de lado. Entre esses recursos que particularmente gosto muito, está o chamado Light Groups. O vídeo abaixo é muito velho um pouco antigo, mas mostra bem o funcionamento dos Light Groups. A interface do Blender no início do vídeo é um pouco diferente também, pois na época em que gravei esse vídeo o software ainda não tinha realizado a mudança para o 2.5.

O recurso é muito interessante e permite que usando apenas uma renderização de imagem no LuxRender, possamos gerar diversas combinações de iluminação diferentes, seja com base na cor da fonte de luz ou então pelo fato da luz estar ligada ou desligada. Isso possibilita até mesmo a criação de renderizações com momentos diferentes do dia para o mesmo ambiente, usando apenas um render. Esse recurso é fantástico para a criação de imagens em arquitetura.

Além dos Light Groups o LuxRender também oferece para os usuários que possuam placas de vídeo modernas, a possibilidade de trabalhar com aceleração por GPU. O software é projetado para trabalhar em formato híbrido como é descrito na própria documentação do LuxRender sobre o uso de GPU.

O LuxRender é mais lento que o Cycles em vários tipos de situação, mas a quantidade de recursos que ele oferece para renderizar imagens com qualidade e controle sobre a iluminação são grandes diferenciais. A melhor parte é que o LuxRender também é distribuído sob a mesma licença do Blender (código aberto), e também é gratuito. Se você gostar de trabalhar com renderização em 3d e procura opções avançadas para gerar imagens, recomendo muito o uso do LuxRender.

LuxRender 1.0 disponível para download

Um dos renderizadores externos com melhor compatibilidade com o Blender, e que compartilha a sua filosofia aberta está com uma nova versão estável. Entre as opções existentes para renderização externa com o Blender que também são de código aberto podemos destacar o LuxRender e o YafaRay. Mas, desde que o Blender teve a sua mudança drástica de interface e funcionamento interno com a série 2.5x, o LuxRender é a opção que melhor se integra ao Blender. Nos últimos dias o LuxRender atingiu um marco no seu desenvolvimento, e depois de ficar várias semanas em Release Candidate chegou na sua versão 1.0 final.

Caso você queira fazer o download dessa versão estável para o seu Blender, basta visitar esse endereço e começar a usar o LuxRender junto com o Blender. Mas, e o Cycles? Essa é uma pergunta que sempre recebo de usuários do Blender que não sabem ainda qual versão usar para seus projetos.

LuxRender 1.0 Splash

O Cycles hoje é uma ferramenta que oferece grande diferencial para criação de projetos dentro do Blender, pois com ele é possível gerar imagens realistas sem a necessidade de plugins ou scripts externos. Mas, o Cycles em termos de desenvolvimento ainda está longe de atingir a quantidade de recursos que o LuxRender já disponibiliza. Por exemplo, o uso de light groups e até mesmo suporte a recursos avançados de iluminação como luzes fotométricas, tudo isso já funciona perfeitamente no LuxRender.

Até pouco tempo atrás era complicado simular luzes pontuais com o Cycles, pois o algoritmo do Path Tracing usando pelo Cycles “não gosta” de fontes de luz pequenas. É por esse motivo que sempre acabamos usando luzes em forma de plano ou área. Somente na versão 2.64 do Blender é que o Cycles começará a suportar as luzes do tipo Spot do Blender.

Com a versão 1.0 do LuxRender o software atinge um nível de maturidade que é procurado por artistas e pessoas interessadas em criar imagens para ambientes de produção. Isso significa menos problemas na produção de imagens.

O meu conselho para quem quiser trabalhar com criação de imagens com o Blender é saber tanto o Cycles como o LuxRender, pois ambos são excelentes para gerar imagens realistas. Para os que estão interessados em aprender o LuxRender, estou preparando outro curso sobre renderização com Blender, mas agora usando o LuxRender para complementar o já existente curso sobre renderização com Cycles.

Render e download de cena completa com LuxRender

Os renderizadores que são baseados em física real estão em destaque nos dias de hoje, devido a sua capacidade de usar aceleração por GPU, fazendo com que os tempos de render necessários para gerar boas imagens acabe sendo reduzido de maneira drástica. Entre esses renderizadores temos o LuxRender, que se destaca pela sua natureza totalmente baseada em métodos do tipo Unbiased e também pelo fato de ser distribuído sob uma licença aberta. Até pouco tempo atrás os usuários do LuxRender precisavam de muita paciência para conseguir gerar imagens com qualidade, pois o tempo de espera necessário para ter imagens livres de granulação era muito alto.

A situação é bem melhor com o suporte a render por GPU no LuxRender 0.8 e também com o SmallLuxGPU.

Se você ainda não usou o LuxRender para gerar nenhuma imagem para seus projetos, encontrei uma discussão que pode ser do seu interesse nos fóruns de usuários do LuxRender. Nessa discussão um usuário chamado de strelok publicou um projeto que tentava reproduzir a iluminação dentro de uma cozinha, aproveitando os recursos do LuxRender. Depois de tentar fazer diversos ajustes, ele acabou conseguindo o seguinte resultado:

LuxRender-Cena-Cozinha-download.jpg

Um dos pontos positivos dessa discussão é que o artista acabou disponibilizando os ajustes usados para fazer o render no LuxRender, que sozinhos já valeriam uma visita ao fórum. Mas, para deixar a visita ainda mais interessante ele resolveu publicar a cena completa para download! Sim, você pode fazer a visita ao fórum e de quebra poderá copiar essa cena completa para estudar não só a renderização com o LuxRender, mas também a modelagem 3d do ambiente como um todo.

Esse tipo de acena ajuda bastante os usuários que ainda tem um pouco de dificuldade em gerar modelos 3d pequenos, para adicionar em cenas internas e criar detalhamento. É com esse tipo de produção que podemos trabalhar com projetos de interiores detalhados e com elementos necessários para reproduzir praticamente qualquer cena.

O ideal nesses casos é que você tente reproduzir os objetos da cena, usando o que o artista disponibilizou para download como exemplo. Esse é um excelente método de aprendizado e pode ajudar você a desenvlver habilidades de modelagem 3d.

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.