O modelo 3D usado neste tutorial:

  

Olá a todos!

Este é o segundo de dois tutoriais em vídeo sobre introdução a Geometry Nodes modifier no Blender 2.92.

No tutorial anterior, examinámos os nodes do grupo Geometry (ou seja, Transform e Join, para modificar e unir geometrias dentro do modificador); a capacidade de criar portos de entrada para o Group Input a fim de especificar parâmetros na aba do modificador e o uso de alguns Vector e Utilities nodes (Math, em particular) para executar operações matemáticas e combinar informação.

Neste vídeo, iremos ver um uso diferente de Geometry Nodes, visto que os vamos usar como sistemas de partículas para "dispersão", ou seja, a distribuição de casos de objetos na superfície de outros; contudo, todos os tópicos cobertos no primeiro vídeo tutorial desta mini série virão a ser muito úteis.

B3D Geometry Nodes 2 of 2 01

O modificador Geometry Nodes permite-nos transformar a geometria do objeto que o usa num gerador de pontos que serão distribuídos na sua superfície (ou seja, nas suas faces).

Estes pontos podem ser usados para organizar, na sua correspondência, casos de objetos; além disso, os Geometry Nodes também nos permitem atribuir transformações (posição, rotação e redimensionamento) para cada um destes pontos, bem como introduzir aleatoriedade.

Para listar estas operações, menciono três pontos em particular:

  1. Transformar a geometria num conjunto de pontos DISTRIBUÍDOS na superfície;

  2. INSTANCIAR os objetos nestes pontos;

  3. Modificar as características (ou seja: os ATRIBUTOS) dos pontos gerados e, assim, a influência instâncias criadas.

Estas três operações traduzem-se em mais Geometry Nodes, que vamos ver imediatamente.

Na cena visível no ecrã, existe um Plane predefinido muito simples (feito com apenas 4 vértices e uma face); além disso, usando APPEND importo os modelos 3D de alguns seixos (os “Pebbles”), de uma rocha (“Stone 1”) e de um objeto que contém lâminas de gramíneas.

Por conveniência, estou a agrupar os seixos numa Collection e esconder todos estes elementos acessórios, tornando-os num editor Outliner.

B3D Geometry Nodes 2 of 2 02

Podem encontrar o link para estes recursos na descrição do vídeo; contudo, como neste caso do relógio no vídeo anterior, NÃO é necessário obter estes modelos para seguir o vídeo e aprender!

Seleciono o Plane e adiciono um Geometry Nodes modifier ao objeto.

B3D Geometry Nodes 2 of 2 03

Para executar esta primeira operação, que é transformar o plano num conjunto de pontos DISTRIBUÍDOS na sua superfície, adiciono um Point DISTRIBUTE node no meio do grupo.

B3D Geometry Nodes 2 of 2 04

No ecrã podemos ver que o Plane desapareceu, substituído por um conjunto de pontos ... bem, na realidade, essa informação inicial não foi perdida, de facto, ainda cá está: a forma não destrutiva de modelar de Geometry Nodes permite-nos adicionar um Geometry Join node entre o Point Distribute e o Group Output e, para conectar, a um de dois Join de entrada, a geometria de chegada do Geometry Input (ou seja: o Plane original).

B3D Geometry Nodes 2 of 2 05

Desta forma, temos tanto o Plane original (os quais podemos modificar e texturizar, por exemplo, para dar a aparência de um terreno) como os pontos distribuídos pela sua superfície.

O Point Distribute node fornece alguns parâmetros, dentro deles destaca-se a Density, que nos permite aumentar ou diminuir intuitivamente a quantidade de pontos a serem distribuídos na superfície.

B3D Geometry Nodes 2 of 2 06

No vídeo tutorial anterior vimos como conectar um node de informação ao Group Input, para assim sermos capazes de modificar os valores na interface do modificador; pode fazer sentido fazê-lo para o parâmetro Point Distribute Density.

De seguida, passamos para a segunda operação das três acima mencionadas, que é INSTANCIAR outro objeto (ou uma Collection de objetos), colocando uma cópia para cada ponto criado por Point Distribute: inserimos depois um Point INSTANCE node entre Point Distribute e Join.

B3D Geometry Nodes 2 of 2 07

O objetivo desta operação é claro: Distribute gera os pontos e Instance retira a informação desses pontos para criar cópias de outros objetos ... sim, mas qual objeto?

No Point Instance node existe um seletor que nos permite definir se desejamos instanciar um objeto simples ou uma Collection de objetos; o modo escolhido (Object, no meu caso), podemos clicar na caixa vazia localizada dentro do node e escolher o objeto que nos interessa (“Stone 1”, no meu caso).

B3D Geometry Nodes 2 of 2 08

NOTA IMPORTANTE: para um resultado correto, é necessário certificarem-se que aplicam as transformações de Rotation e Scale dos objetos que desejam instanciar; podem fazê-lo selecionando-os e pressionando CTRL A, escolher “Rotation and Scale” do menu Apply que irá aparecer no ecrã.

De seguida, ajustamos o parâmetro Density do Point Distribute, como desejado, até atingirmos um resultado pretendido.

B3D Geometry Nodes 2 of 2 09

A terceira operação fundamenta é modificar os parâmetros dos vários pontos (e, assim, das instâncias geradas); na verdade, é possível executar diferentes tipos de operações, por isso não estamos a falar de um único node mas de nodes dos grupos Point e Attribute.

Em ambos os casos, os nodes de transformação serão inseridos entre o Point Distribute e o Point Instance, porque têm de modificar os PONTOS criados, ANTES de gerar as instâncias desses pontos.

Por exemplo, vamos começar com a rotação, para ser aplicada a todos os pontos: adicionamos um Point Rotate node entre Point Distribute e Point Instance e modificamos os ângulos de rotação das partículas.

B3D Geometry Nodes 2 of 2 10

O resultado já é melhor que o obtido sem este node, mas como introduzir aleatoriedade à rotação e, porque não, também ao tamanho destas instâncias?

Estamos a ser ajudados pelo Attribute Randomize node (de "Random", claro), o qual podemos colocar em cascata entre o Point Rotate e o Point Instance (de facto, este fluxo de processo acontece sempre nas geometrias, como é possível verificar os portos de Geometry ligados entre os vários nodes).

B3D Geometry Nodes 2 of 2 11

O Attribute Randomize é um node que nos permite introduzir aleatoriedade num ATRIBUTO dos pontos, para ser especificado precisamente no campo "Attribute" do node.

Entre os atributos fundamentais de uma partícula temos, escusado será dizer, a "rotation" e a "scale", por isso vamos começar por escrever "rotation" neste campo e modificar o valor Max

B3D Geometry Nodes 2 of 2 12

O node introduz, na verdade, aleatoriedade na orientação das partículas, mas estes rodam em volta dos seus eixos, o que não é exatamente um resultado interessante: nós gostaríamos de manter a orientação base dada pelo Point Rotate e rodar as instâncias aleatoriamente apenas em torno do eixo vertical.

Para resolver este problema, necessitamos alterar o tipo de valor de operação do Float (que é um valor numérico com vírgula, atuando uniformemente nos três eixos XYZ) para Vector, onde podemos colocar 0 para todos os valores exceto para o MAX do eixo que estamos interessados em alterar …

B3D Geometry Nodes 2 of 2 13

Mas até esta operação traz consigo um problema: temos de perder a rotação dada pelo Point Rotate!

B3D Geometry Nodes 2 of 2 14

É um problema de prioridade, de uma certa forma: entre o Point Distribute e o Point Instance, na verdade, devemos colocar primeiro o Attribute Randomize e depois o Point Rotate.

B3D Geometry Nodes 2 of 2 15

Agora, duplicamos o Attribute Randomize e adicionamo-lo entre o original e o Point Rotate para modificar também o parâmetro Scale (para ser escrito, tal como a rotação, inteiramente em minúsculas, caso contrário o Blender não o irá reconhecer).

B3D Geometry Nodes 2 of 2 16

Neste caso, contudo, temos de modificar todos os parâmetros XYZ min e máx, para obter resultados interessantes (e, talvez, evitar colocar 0 para valores mínimos, caso contrário, os objetos irão perder uma ou mais dimensões).

No que respeita ao atributo Scale, devem achar mais conveniente voltar ao tipo Float, para que possam usar apenas um parâmetro para o fator de escala mínima e apenas um para o máximo ... a escolha é vossa.

Com apenas estes dois Attribute nodes, contudo, obtemos uma certa diversidade de um objeto que foi inventado de uma única geometria: Stone 1.

Se alterarmos o tipo de objeto para instanciar no Point Instance do Object para Collection e especificar a coleção de seixos, as coisas tornam-se muito mais interessantes!

B3D Geometry Nodes 2 of 2 17

Vamos definir o Object de novo com Stone 1 no Point Instance, mas para examinar outra funcionalidade disponível com Geometry Nodes.

Nos sistemas de partículas clássicos também podemos definir em quais partes da geometria criamos as partículas e em quais não criamos; isso é feito, em particular, com Weight Painting, definindo valores de densidade (de 0 a 1) nas várias partes de uma superfície ... bem, podemos fazê-lo aqui também!

Contudo, antes de proceder temos de aumentar o número de subdivisões do Plane, porque o Weight Painting (a ser operado fora do Geometry Node, na geometria original) atua nos vértices, por isso os 4 vértices básicos do Plane não são suficientes.

Numa visualização 3D, depois, vamos em Edit Mode subdividir a superfície inteira um bom número de vezes; e, de seguida, trocar para Weight Paint mode.

B3D Geometry Nodes 2 of 2 18

B3D Geometry Nodes 2 of 2 19

Por defeito, a superfície deve aparecer azul, ou seja, “peso 0”; o Point Distribute node irá criar os pontos nas áreas com peso 1, para termos de pintar nas áreas em que desejamos fazer as instâncias aparecer.

B3D Geometry Nodes 2 of 2 20

NOTA: se desejarem aplicar as instâncias em toda a parte exceto em locais em particular, devem proceder ao inverso; neste caso, em particular, usamos o pincel nas áreas que desejamos EXCLUIR do Point Distribute (e o Blender irá criar automaticamente um Vertex Group, que deverá ter “Group” como nome por defeito, mas também o podemos renomear para algo mais importante, como "Pebbles").

B3D Geometry Nodes 2 of 2 21

No fim da operação, abram o menu Weights na janela 3D e cliquem em “Invert”, para inverter os pesos: agora, a área que pintámos terá o peso 0, enquanto que o resto da geometria terá o peso 1.

B3D Geometry Nodes 2 of 2 22

Obviamente, nada nos previne de modificar os pesos mais tarde, alterando o valor do parâmetro Weight na aba Tool no Weight Paint mode e varrer a superfície; temos apenas de lembrar que NÂO inserimos instâncias em áreas de peso 0.

No editor Geometry Nodes, escrevemos o nome do Vertex Group no campo Density do Point Distribute node ("Pebbles", no nosso caso; prestem atenção às letras maiúsculas e minúsculas): a distribuição dos pontos na superfície original irá ser proporcional ao Vertex Weights definido por nós.

B3D Geometry Nodes 2 of 2 23

Antes de concluir este vídeo tutorial e antes da INTRODUÇÃO à mini série Geometry Nodes no Blender 2.92, vamos ver um exemplo de como instanciar um objeto ... mas com mais uma alteração.

Dentro do esquema que definimos, inserimos um novo Point Density node, ligando-o ao porto Geometry do Group Input, de seguida, ligamo-lo a um novo (vazio) Point Instance e conectamos os dois Point Instances disponíveis na cena a um novo Join Geometry node, que, por sua vez, será ligado ao Join node já disponível na cena; na prática, a geometria resultante será dada pela original unida à que chegou pelos dois Instance nodes.

B3D Geometry Nodes 2 of 2 24

No novo Distribute node definimos o mesmo atributo Density de “Stone 1”, mas em Point Instance definimos o objeto High Grass como aquele a ser instanciado.

B3D Geometry Nodes 2 of 2 25

Se for necessário, podemos inserir um Point Rotate node para orientar corretamente as lâminas de gramíneas.

Vamos inserir também um Point Scale node (entre o Point Rotate e o Point Instance), definindo em particular o modo Vector, para que possamos especificar o fator escala do tamanho da gramínea com um vetor.

B3D Geometry Nodes 2 of 2 26

Vamos inserir um Combine XYZ node e conectar o seu Vector de saída ao Factor (vetor) de entrada da Point Scale; as lâminas de gramíneas irão desaparecer, porque os parâmetros Combine XYZ irão ter um valor por defeito de 0.0, por isso, retornamos XY a 1.0 (ou, em qualquer caso, a um valor adequado para estas dimensões).

B3D Geometry Nodes 2 of 2 27

De seguida, conectamos o Z de entrada do Combine XYZ a um novo porto Geometry Input; como podem adivinhar, a intenção é ajustar o peso das lâminas de gramíneas à interface do modificador ... mas porquê limitarmo-nos a um valor constante ou ter de alterar manualmente este valor?

B3D Geometry Nodes 2 of 2 28

Vamos adicionar um editor Timeline à janela do Blender e definir uma gama de estrutura para uma animação, por exemplo, 240 frames.

B3D Geometry Nodes 2 of 2 29

Vamos ao frame 1, definimos 0.0 para o parâmetro Z (ao qual podemos renomear de acordo com a nossa vontade, como visto no episódio anterior com os nomes dos ponteiros do relógio); clicamos no botão direito do rato no valor deste parâmetro e escolhemos “Insert Keyframe” para gravar, na verdade, um keyframe de animação.

B3D Geometry Nodes 2 of 2 30

Vamos avançar para o frame 240 da animação, alterar o valor de Z como desejarmos e inserir um keyframe para este parâmetro no último frame da nossa animação.

B3D Geometry Nodes 2 of 2 31

Temos apenas de pressionar Play na Timeline e assistir ao resultado da nossa animação.

B3D Geometry Nodes 2 of 2 32

B3D Geometry Nodes 2 of 2 33

Bem, e é tudo para este tutorial!

Vemo-nos em breve!

B3D Geometry Nodes 2 of 2 34