• eng
  • deu
  • esp
  • fra
  • ita
  • rss-icon
  • facebook-icon
  • youtube-icon
  • twitter-icon

Blender: tijolos com adaptive subdivision/microdisplacement

Neste terceiro tutorial para o Blender (atualizado para a versão 2.93) sobre a criação de uma parede 3D a partir de uma foto, veremos como criar os tijolos da parede usando a Adaptive Subdivision, que também é chamada Adaptive Displacement, ou Micropolygon displacement, ou Microdisplacement, ou Tesselation, tantos nomes é porque no Blender esta funcionalidade não corresponde a um único comando, como no caso do "Displace Modifier", mas a um conjunto de configurações a serem feitas (portanto não foi atribuído um nome oficial), tanto porque na literatura técnica algumas funções têm sido chamadas de maneiras diferentes, como porque este método tem não uma, mas duas características interessantes: adaptabilidade e micropolígonos.

 

Subdivisão/deslocamento adaptativo:

No tutorial anterior https://www.graphicsandprogramming.net/por/tutorial/blender/modelagem/blender-tijolos-modificador-displace, criamos uma parede de tijolos com o modificador "Displace", que usava um número igual de vértices/polígonos para criar os tijolos em toda a parede, mas em um caso mais complexo, com uma parede mais longa, podemos estar interessados em ver mais claramente, com mais detalhes, os blocos mais próximos, enquanto os tijolos mais distantes também podem ser feitos com menos vértices, como eles estão mais distantes e menos visíveis. Esta função é realizada através da Subdivisão Adaptativa: como você pode ver na figura

a parte da parede mais próxima da Camera, na parte inferior, usa mais vértices para representar os objetos mais próximos, enquanto as mais distantes são compostas por menos vértices, com reflexos adequados e sombras que diminuem em resolução menor.

 

Micropolygons:

Outra característica fundamental do Microdisplacement são os micropolígonos, que permitem adicionar detalhes a uma malha, apenas durante a fase de renderização, a partir de uma imagem. Deste ponto de vista, os mapas usados são uma reminiscência de mapas de relevo, que adicionaram pequenos detalhes sensíveis à luz usando o material, apenas neste caso na renderização a malha realmente parecerá deformada, como se estivéssemos usando um modificador "Displace". No Blender também podemos escolher o tamanho dos micropolígonos (de 0.5 px para cima), obviamente, quanto maiores forem, mais grosseira será a perturbação resultante da malha.

 

Criando tijolos com o Microdisplacement:

Vamos usar um exemplo semelhante ao do tutorial anterior, referente ao modificador "Displace": vamos criar um plano centralizado, importando a imagem "diffuse_map.jpg" que representa a parede, chamando o addon com "File > Import > Images as Planes"

Em seguida, importamos a lâmpada do exemplo do tutorial anterior, ou pressionamos as teclas "Shift+A" e escolhemos "Light > Sun", criamos uma lâmpada "Sun" com Strength:4.5 com posição (X:-2.88183 m, Y:-1.41398 m, Z:2.8909 m) e rotação (X:48.7941°, Y:-1.17007°, Z:297.408°).

Em seguida, criamos uma Camera, deixando os valores padrão e com posição (X:1.17253 m, Y:-2.66012 m, Z:-0.016343 m) e rotação (X:90°, Y:0°, Z:22.2°)
Vamos agora prosseguir com a construção dos tijolos da parede, em 4 etapas:

1. Durante anos, o Microdisplacement foi classificado entre os "recursos experimentais" e funciona apenas com o mecanismo de renderização Cycles, portanto, na guia "Render Properties" da "Properties Window", definimos "Render Engine:Cycles" e "Feature Set:Experimental"

2. Selecione o plano em "Object Mode", clique em "Shading" na parte superior para acessar a área de trabalho de materiais, onde os nós estão presentes, pressione as teclas "Shift+A" e adicione o mapa de deslocamento "displacement_map.jpg" com "Texture> Image Texture". Ainda pressionando as teclas "Shift+A" criamos o nó "Vector > Displacement", que regula a intensidade da saliência, que colocamos entre a textura e a porta de "displacement" do "Material Output". 

Desta forma, conectamos o mapa do qual ler os dados de deslocamento.
Para controlar melhor os resultados de deslocamento, vamos desvincular a textura "diffuse" do sombreador "Principled" por enquanto.

3. Na etapa anterior, vinculamos o mapa de deslocamento ao "Material Output", mas sua porta de "displacement" foi usada apenas pelos "bump map" para simular pequenos detalhes na superfície; agora queremos mudar sua funcionalidade, então acessamos a aba "Material Properties" e em "Settings > Surface > Displacement" mudamos a opção de "Bump Only" para "Displacement Only" (apenas "Displacement" porque queremos usar esta função apenas para deslocamento)

4. Selecionamos o plano e associamos a ele um modificador "Subdivision Surface", que é usado para ajustar a taxa de subdivisão dos micropolígonos, no qual marcamos a opção "Adaptive Subdivision" para ativar a subdivisão que muda de acordo com a distância da Camera (e "Simple" para manter as bordas do topo inalteradas).

O parâmetro "Dicing Scale" permite que você altere a escala de definição do microdisplacement tanto para a visualização "Rendered" no Viewport 3D quanto para a renderização real (a fim de trabalhar facilmente em outras partes da cena, economizando recursos computacionais). Por exemplo

por padrão, os valores 1px para "Render" e 8px para "Viewport" são definidos, que são as dimensões dos micropolígonos sobre os quais falamos antes, portanto, em "Render" micro-polígonos menores serão usados, enquanto em "Viewport" mais grande, facilitando assim os cálculos durante a visualização.
Esses valores padrão podem ser alterados na guia "Render properties" no subpainel "Subdivision",

onde, eventualmente, você pode definir valores menores para "Render", mas não menos do que 0,5, ou fornecer valores maiores para "Viewport" se você tiver problemas de recursos.
No sub-painel "Subdivision" vemos três outros parâmetros, como "Offscreen Scale" que especifica qual deve ser a definição das partes de uma malha que estão fora da visualização da Camera. Para valores altos de "Offscreen Scale", as partes fora da vista serão representadas economizando recursos, por exemplo, girando a Camera e definindo o valor "Offscreeen Scale" para 25, há uma economia nas partes circuladas mais distantes do visualizar,

enquanto para valores baixos, por exemplo 1, as partes mais ocultas da visualização da Camera são mais definidas.

O parâmetro "Max Subdivisions", por outro lado, estabelece um teto na definição da malha: mesmo que para uma determinada distância seja possível realizar mais divisões do que o parâmetro inserido, ela não realiza nenhuma. Na verdade, se compararmos a situação com o valor padrão 12 com um valor de 5 para "Max Subdivisions", notamos que mesmo se nos aproximamos da Camera o número de subdivisões não aumenta, mas em um determinado ponto pára.

No último parâmetro "Dicing Camera" também podemos inserir uma Camera de referência para o cálculo das subdivisões, de forma que nenhum artefato seja criado durante as animações.

Voltando à realização de nossa parede, como no tutorial sobre o modificador "Displace" inserimos, como "Environment texture" em "World Properties", a imagem hdr "neurathen_rock_castle_2k.hdr"

Como nossa cena é simples e com poucos vértices, para poder observar nosso objeto com mais facilidade também fornecemos um tamanho de micropolígonos igual a 1px na viewport

Entramos no modo de visualização "Rendered" e notamos que os tijolos são muito protuberantes

Em seguida, vamos para a área de trabalho "Shading"" e no nó "Displacement" diminuímos o valor de "Scale" levando-o para 0.015

obtendo um resultado mais correspondente aos nossos desejos

Ao pressionar a tecla 3 no teclado numérico da janela de exibição, olhamos para a parede lateral e notamos que os tijolos estão em relevo, mas se moveram "para dentro" da malha, enquanto queremos que eles se projetem para fora.

em seguida, alteramos o valor de "Midlevel" (no nosso caso, definimos como zero)

para nivelar os tijolos.

Da visão da Camera (obtida pressionando a tecla 0 no teclado numérico) já podemos ver uma parede de tijolos interessante.

Agora vamos reconectar a textura do "diffuse map", vamos mudar o valor de "Specular" para 0.177

e nós temos

Obtendo, como no caso do modificador "Displace", uma boa forma para os tijolos da parede.

A subdivisão adaptativa traz benefícios, pois permite economizar memória, permitindo renderizar mais rápido e criar cenas mais complexas com os mesmos recursos de hardware, otimizando vértices com a distância da Camera, com uma malha que permanecerá leve na modelagem phase, adiando os detalhes para a fase de renderização. Por outro lado, ainda apresenta algumas falhas:

- Pode ser usado com o mecanismo de renderização Cycles, mas não com o Eevee.
- Ao exibir os relevos apenas na renderização, o microdeslocamento não pode ser usado para objetos destinados à impressão 3D (um plano com um deslocamento adaptativo associado, na Solid view há apenas um plano, sem os relevos adicionados com este método, e por isso resultará em qualquer outro software para onde será exportado)
- Na pilha de modificadores, o "Subdivision Surface" adaptativo para funcionar bem deve estar na parte inferior, para ser o último modificador usado antes da renderização; se for movido primeiro, perderá algumas de suas propriedades: consideremos como exemplo uma "sequência de asteróides"

feito a partir deste objeto (um cubo ao qual já havia sido aplicado anteriormente um modificador "Subdivision Surface" não adaptativo )

com a versão experimental do conjunto Cycles, material com a opção "Surface > Displacement: Displacement Only" e material com uma textura "Noise Texture" com o nó "Displacement"

e o modificador "Subdivision Surface" adaptativo após um modificador "Array"

o resultado será o que você quiser

enquanto se arrastarmos o modificador "Subdivision Surface" para cima do modificador "Array", fazendo-o agir assim antes, ele se transformará "magicamente" em um modificador não adaptativo, perdendo todas as suas propriedades declaradas acima

Uma última observação: se você criar instâncias, lembre-se de colocar a Camera na frente do objeto original.

Salvamos o arquivo como "adaptivesubdivision.blend".

Para este tutorial sobre subdivisão adaptativa é tudo; vimos que é uma ferramenta muito útil, embora às vezes tenha limitações e comportamentos indesejados. Esperamos que no futuro ele seja melhorado e se torne um padrão para o Blender também.
Nos vemos no próximo tutorial, onde veremos como dar à nossa parede um material PBR (Physically Based Rendering) para torná-la o mais realista possível. Happy Blending!

Se você gostou do artigo, compartilhe com um amigo:

 

Regressar ao índice de tutoriais: > Blender <