Árvores 3D com nós de geometria do Blender | 3D Tudor | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Árvores 3D com nós de geometria do Blender

teacher avatar 3D Tudor, The 3D Tutor

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Árvores 3D com nós de geometria — introdução ao curso

      3:11

    • 2.

      Visão geral do gerador de árvore

      6:07

    • 3.

      Introdução ao gerador de ramo

      3:58

    • 4.

      Extremidades divididas

      13:45

    • 5.

      Noções básicas do sistema de ramo

      12:24

    • 6.

      Sistema avançado de ramo

      17:14

    • 7.

      Dados internos

      13:59

    • 8.

      Raízes

      8:42

    • 9.

      Deslocamento

      11:21

    • 10.

      Geração de malha

      9:08

    • 11.

      Mapeamento e refinamento de UV

      12:37

    • 12.

      Noções básicas de distribuição de folhas

      9:59

    • 13.

      Colocação avançada de folhas

      11:28

    • 14.

      Sistema básico de partículas

      12:10

    • 15.

      Simulações avançadas de partículas

      14:17

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

210

Estudantes

4

Projetos

Sobre este curso

Mergulhe no fascinante mundo da geração de árvores procedurais com nós de geometria do
Blender! Clique aqui para obter o pacote de recursos]

No curso “Árvores 3D com nós de geometria do Blender”, você vai aprender a criar árvores 3D de aparência natural e totalmente personalizáveis, desde estruturas de tronco e raiz até distribuição realista de folhas. Você também vai explorar técnicas avançadas como deslocamento de ruído, nós de ponta dividida para ramificação, e até mesmo uma configuração simples de simulação para queda de folhas. Essa abordagem prática garante que você ganhe habilidades práticas que poderá aplicar em tudo, desde ambientes de jogos até cenas de florestas estilizadas.

Ao final das aulas, você vai saber exatamente como transformar curvas em malhas 3D otimizadas, mapear texturas de forma eficiente e desenvolver um fluxo de trabalho baseado em nós que seja flexível e eficiente. Quer você seja iniciante no Blender procurando expandir seu conjunto de habilidades ou um artista 3D experiente buscando simplificar seu processo, este curso mostrará como cultivar árvores de qualidade profissional com algumas configurações de nós inteligentes.

Por que escolher árvores 3D com nós de geometria do Blender?

  • Árvores 3D profissionais — ideal para desenvolvedores de jogos, artistas de ambiente e entusiastas que procuram criar árvores de alta qualidade para jogos, animações e mundos 3D.

  • Domínio processual prático — domine técnicas-chave como o SplitEnd Node, randomização de ramo e sistemas raiz para desenvolver árvores orgânicas e naturais do zero.

  • Técnicas avançadas de nós — descubra como distribuir folhas de forma dinâmica, adicionar deslocamento de ruído processual e gerar estruturas de ramificação complexas usando zonas de repetição.

  • Folhas em queda simulada — implemente um sistema de partículas (Zona de Simulação do Blender) para criar folhas que se desprendem, caem e trazem movimento às suas cenas.

  • Mapeamento realista de UV e geração de malhas – converta curvas processuais em malhas 3D totalmente funcionais com mapas de UV adequados e aplicação de materiais sem emendas.

  • Aumente seu conjunto de habilidades 3D — aplique essas técnicas a uma ampla variedade de projetos, desde ambientes realistas a paisagens de fantasia estilizadas.

O que você aprenderá

  • Fundamentos procedimentais: crie estruturas de tronco e raiz usando grupos de nós personalizados.

  • Ramificação e randomização: domine nós SplitEnd e zonas de repetição para padrões de ramificação naturais.
  • Posicionamento e simulação de folhas: controle a distribuição de folhas ao longo dos galhos e configure folhas em queda para um realismo dinâmico.

  • Conversão de malha e mapeamento UV: converta curvas em malha de forma eficiente e aplique texturas sem complicação.
  • Fluxos de trabalho práticos de nós: crie um sistema modular que você possa reutilizar para árvores, arbustos e muito mais.

Para quem é este curso

  • Desenvolvedores de jogos e artistas 3D que procuram ativos de árvores otimizados para mecanismos em tempo real ou cenas cinematográficas.

  • Criadores estilizados que queiram adicionar folhagem a reinos de fantasia, paisagens alienígenas ou projetos de arte conceitual.

  • Entusiastas do Blender prontos para explorar a modelagem processual e ampliar suas capacidades de design de ambientes.

Por que este curso é para você
Aprender essas técnicas processuais abre infinitas possibilidades criativas. Você vai ganhar uma compreensão mais profunda dos nós geométricos do Blender, acelerar seu fluxo de trabalho e produzir ambientes 3D ricos e dinâmicos, perfeitos para animações, jogos ou projetos pessoais imaginativos.

Tempo e recursos

Duração do curso: nove aulas aprofundadas abrangendo duas horas de técnicas de modelagem processual.

Pacote de recursos incluído

Este curso vem com um pacote de recursos de alta qualidade com 8 materiais estilizados de PBR projetados para a criação de árvore processual. Texturas de cascas de cerejeira e carvalho, variações de galhos de cerejeira (florescidos e não-florescidos) e variações de folhas de carvalho para o verão, outono e primavera estão incluídas. Também é fornecido um pacote de pétalas de cerejeira para efeitos realistas de flor cainda. O arquivo de projeto finalizado é parte do pacote, para que você possa comparar e refinar suas configurações de árvore facilmente.

Tudo pronto para crescer?

Assuma o controle da criação de árvore por procedimento como nunca. De árvores fantásticas a folhagem realista de florestas, este curso da Skillshare vai abrir você para novos projetos.

Aprimore suas habilidades com Geometry Nodes do Blender e comece a criar árvores 3D incríveis.

Até a próxima vez, espero que todos os seus polígonos criem raízes e que suas folhas nunca caam tão cedo!

Lucas

Conheça seu professor

Teacher Profile Image

3D Tudor

The 3D Tutor

Top Teacher

Hello, I'm Neil, the creator behind 3D Tudor. As a one-man tutoring enterprise, I pride myself on delivering courses with clear, step-by-step instructions that will take your 3D modeling and animation skills to the next level.

At 3D Tudor, our mission is to provide accessible, hands-on learning experiences for both professionals and hobbyists in 3D modeling and game development. Our courses focus on practical, industry-standard techniques, empowering creators to enhance their skills and build impressive portfolios. From crafting detailed environments to mastering essential tools, we aim to help you streamline your workflow and achieve professional-quality results.

We're committed to fostering a supportive... Visualizar o perfil completo

Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução ao curso sobre geonode de árvores: Bem-vindo às três árvores D com nós de geometria do Blender. Neste curso, exploraremos o poderoso fluxo de trabalho processual dos nós de geometria combinada para criar totalmente personalizáveis Desde a geração de estruturas orgânicas de troncos até a distribuição final das folhas, você aprenderá como criar árvores de aparência natural com flexibilidade processual Ao final deste curso, você terá as habilidades necessárias para criar árvores variam de carvalhos antigos a bonsais delicados, todas controladas por perímetros fáceis de usar Se você estiver interessado em aprimorar ainda mais suas habilidades de gemenude, não perca nosso blender geometernode para iniciantes, o gerador de pontes processuais e os cursos de dispersão de folhagem processuais Isso ajudará você a refinar suas técnicas de modelagem processual e criar ambientes livres impressionantes, repletos de folhagens, arquitetura Para ajudá-lo a dar vida às suas árvores, este curso inclui um pacote de recursos de alta qualidade, com oito materiais PBR estilizados criados especificamente Você obterá cascas de cerejeira e carvalho, galhos de cerejeira floridos e não floridos e folhas de carvalho sazonais para o verão, outono e primavera, além de pétalas de cerejeira galhos de cerejeira floridos e não floridos e folhas de carvalho sazonais para o verão, outono e primavera, além de pétalas de cerejeira para um efeito impressionante de folhas caindo. Começaremos construindo um sistema de árvores processuais do zero Você começará com o nó de extremidade dividida fundamental, um grupo de nós personalizado que gera estruturas ramificadas por meio da iteração de várias Usando perímetros como contagem de galhos, comprimento e ângulo, criaremos um sistema de crescimento realista que imita a formação natural de árvores Além disso, implementaremos um deslocamento de ruído para introduzir movimentos sutis e realismo na forma geral da árvore Quando o tronco e os galhos estiverem no lugar, mudaremos nosso foco para o posicionamento das folhas. Usando atributos personalizados, como comprimentos do início e comprimentos do final, determinaremos como as folhas são distribuídas ao longo dos galhos, garantindo padrões naturais de crescimento Em seguida, estenderemos nosso sistema processual para gerar raízes Ao modificar o sistema de ramificações para reverter sua direção, criaremos uma estrutura de raiz subterrânea que se conecta perfeitamente ao tronco Por fim, exploraremos as técnicas de mapeamento UV, garantindo que os materiais da casca e da folhagem sejam aplicados sem problemas Na seção final, integraremos um sistema de partículas simples para simular a queda Usando a zona de simulação de liquidificadores, geraremos e animaremos folhas que se desprendem dos galhos ao longo do tempo Este curso foi desenvolvido com a modularidade e a eficiência em mente Ao usar grupos de nós reutilizáveis, você poderá ajustar rapidamente perímetros como altura da árvore, densidade de galhos, cobertura de folhas Se você precisa de uma árvore estilizada para jogo ou de uma operação hiperrealista para uma animação, nossa configuração permitirá uma rápida iteração e personalização rápida iteração Ao final deste curso, você terá um sistema de árvores totalmente processual que é personalizável, eficiente e visualmente impressionante para dar vida à sua visão criativa Cadastre-se agora e comece a cultivar suas próprias árvores de crédito com varetas de omelete Blenders. 2. Visão geral do gerador de árvores: Olá, bem-vindo à introdução às árvores D gratuitas com nós de geometria do Blender Neste curso, você aprenderá a criar uma árvore totalmente processual usando os nós de geometria do Blenders Você construirá um sistema realista de troncos e ramificações, controlará o posicionamento das folhas e adicionará um sistema simples de partículas para as folhas caiam, trazendo movimento natural à sua Para ajudá-lo ao longo do caminho, você também receberá um pacote de materiais gratuito com texturas e materiais de carvalho e sakura de alta qualidade , perfeitos para este curso e projetos futuros Antes de começarmos a construir, vamos examinar as entradas e os perímetros que controlarão forma e a estrutura da sua árvore Ao ajustar essas configurações, você poderá criar qualquer coisa desde pequenos sítios ósseos até enormes carvalhos Portanto, esse nó do ômetro é apenas um modificador. Então, como você pode ver, eu tenho aqui esse modificador de árvore aplicado a este objeto, e você pode ver que aqui, temos alguns parâmetros Uma delas é a semente, que controla a semente de todos os valores aleatórios e geradores aleatórios Depois, há a resolução que controla a resolução das ramificações. Você pode definir a altura do tronco e o raio geral. E também há material para raízes e galhos e também controles para os UEs. Em seguida, no painel de galhos, você pode ver que a primeira entrada é chamada de níveis e controla quantos níveis de galhos sua árvore terá. Então, se definirmos isso para apenas dois, por exemplo, primeiro, há um tronco, que é uma ramificação separada ou uma ramificação principal. Deste ramo, há mais três ramos como este. E desses galhos está o segundo nível de galhos, então parece algo assim. As duas segundas entradas são a contagem mínima e máxima de divisões, o que significa que você pode controlar quantas ramificações cada extremidade da ramificação será dividida Então, aqui temos 3-5. Se definirmos 2-5, você pode ver que agora ele se divide em dois ramos E se brincarmos com as sementes, devemos obter alguns resultados diferentes. Agora você pode ver que temos quatro deles e assim por diante. Depois, você também pode controlar o comprimento dos galhos. Você pode controlar o primeiro e o último separadamente. Portanto, se definirmos as primeiras ramificações para algo longo e as últimas para algo curto, você terá resultados diferentes. E também há uma aleatoriedade de comprimento, que controla o quão aleatórios são os comprimentos dos galhos O próximo passo é o ângulo, que controla o ângulo dos galhos. Então, você pode ver que, se definirmos como zero, todos estão apontando para cima e, à medida que aumentamos, a árvore fica muito mais larga e os galhos crescem mais para o lado Você também pode controlar a aleatoriedade desse ângulo, e a última entrada é o raio fff, que basicamente controla a espessura dos galhos Agora você pode ver que está definido como dois e que os galhos nas extremidades são finos. E se diminuirmos, você pode ver que eles ficam muito mais espessos e você pode controlar o gradiente do raio que vai do tronco até as pontas dos galhos O próximo painel que temos são as raízes, e esse painel tem basicamente todos os controles como ramificações, e você pode controlar os mesmos parâmetros. Então, vou pular este. O próximo é o deslocamento com o qual você controla o deslocamento dos galhos Assim, você pode controlar o quão reta ou ondulada sua árvore A próxima são as árvores. Então, aqui, podemos controlar as árvores. Você pode selecionar a coleção das folhas. Assim, podemos facilmente alternar entre eles. Também podemos controlar a densidade e escolher entre três opções onde queremos que as folhas cresçam. Portanto, há três opções. Uma delas são as filiais. Isso significa que as folhas estão por todos os galhos. O segundo é do final, que basicamente distribui as folhas apenas nas extremidades dos galhos, e também podemos controlar o comprimento dos segmentos nos quais elas são distribuídas E a última opção é a posição Z mínima, que basicamente distribui as folhas em todos os lugares onde a posição é maior do que algum valor Então, se disséssemos isso para três, você pode ver que aqui temos o nível três e onde a posição é maior, as folhas são distribuídas. As duas últimas coisas são escala e aleatoriedade de escala, então você também pode controlar a escala dos objetos originais E o último painel que temos aqui são partículas, e você pode vê-lo aqui. Essas são as folhas pequenas que você pode ver, e você pode controlar sua densidade, também física, para que possamos controlar a gravidade e alguns ruídos que são aplicados ao movimento delas, e também por quanto tempo elas vivem. E o mesmo que para as folhas, temos uma coleção para objetos de entrada e sua escala. Você pode ver que, se jogarmos a simulação, você pode ver que as folhas começam a cair das folhas e isso cria um efeito muito bom. 3. Introdução ao gerador de ramo: Bem-vindo de volta às três árvores D com nós de geometria do Blender Nesta lição, explicarei as técnicas que usaremos para gerar o sistema de ramificações e como poderemos controlá-lo com diferentes perímetros Primeiro, vou definir a densidade das folhas zero para que possamos ver melhor o sistema de galhos. E, como você pode ver, podemos simplificar a estrutura para apenas linhas. Por exemplo, uma linha principal é o tronco, depois há quatro galhos nos quais ela se divide e, basicamente faz a mesma coisa nas extremidades desses galhos Portanto, a configuração que faremos terá uma entrada para a geometria Portanto, nesse caso, quando tivermos um tronco, forneceremos esse tronco a esse grupo nós e também forneceremos uma seleção partir da qual queremos que os galhos cresçam. Então eu vou selecionar com esta cruz. E o que a configuração fará é gerar ramificações como essa, dependendo das entradas Assim, poderemos controlar quantos galhos ele divide e também o comprimento e o ângulo desses galhos E a saída desse grupo de nós serão essas ramificações. E também com seleções, que selecionarão esses endpoints E então usaremos a abordagem recursiva ou algo muito semelhante à recursão, e usaremos novamente essa configuração após essa primeira iteração, e essa configuração criará novamente mais ramificações E se iterarmos isso, por exemplo, três ou quatro vezes, devemos obter um bom sistema de ramificações, que usaremos como estrutura básica para nosso modificador de nós de geometria Posteriormente neste curso, também precisaremos alguns atributos para obter informações sobre as filiais. Os dois atributos principais de que você precisará são o comprimento, e o comprimento nos dirá a que distância cada ponto do galho está das raízes. Então, aqui na parte inferior, zero. Aqui nesta seção, digamos, por exemplo, dois, aqui é grátis em todos os lugares, e aqui no final, pode ser como 3,5. Com esse atributo, poderemos controlar o raio dos galhos e também obter bons mapas UV para eles. E o segundo perímetro será do comprimento até a extremidade. E esse perímetro será quase igual ao comprimento, mas seguirá em uma direção diferente ou na direção oposta Então, nas extremidades dos galhos, tudo será zero E então, à medida que avançamos em direção às raízes, ela aumentará. Então 0,5 estará aqui, 1,5 aqui, 2,5 aqui e 3,5 nas raízes. Com esse segundo atributo, poderemos, por exemplo, distribuir as folhas pelas pontas como mostrei na lição anterior, e apenas separaremos os galhos em que o comprimento da extremidade é menor que algum valor, e então poderemos distribuir facilmente as folhas nesses galhos. 4. Extremidades divididas: Bem-vindo de volta às três árvores D com os nós do Blender Geometri Nesta lição, começaremos a trabalhar na base do nosso modificador de nós geométricos e trabalharemos no grupo de nós do sistema de ramificações, que nos ajudará a criar a estrutura básica de ramificações Então, aqui eu tenho uma nova cena do Blender, e vou começar excluindo tudo na E adicionarei, por exemplo, um plano simples porque não usaremos a geometria original, então você pode adicionar o que quiser Em seguida, vou até os modificadores e adicionarei um novo modificador, que serão os nós de geometria Vou clicar em novo e chamar essa configuração de nó de geometria, por exemplo, de três E agora podemos começar a trabalhar na configuração. Então, vamos para o espaço de trabalho dos nós do Geomet e podemos começar excluindo a entrada do grupo porque não precisaremos O plano para os galhos é que, primeiro, criaremos uma estrutura de árvore básica a partir de linhas curvas, para que fique mais ou menos assim. E então converteremos essas curvas em malha usando curva em nó de malha Portanto, a linha básica ou a linha curva básica será o tronco. Então, vamos adicionar uma linha curva e essa linha curva tem duas entradas Tem começo e fim. Podemos deixar o início como está porque queremos que comece às 00, e o final controlará basicamente a altura do tronco. Então, se dermos uma olhada no tronco agora, você pode ver que seu comprimento é controlado por esse valor Z do vetor final. Portanto, podemos separar esses valores usando Combine XYZ e agora podemos controlar esse valor Z individualmente Para o tranghd, podemos adicionar uma nova entrada de grupo. Então, vamos pressionar N para abrir o menu deste site. E clicarei nesse ícone de adição para adicionar uma nova entrada, que chamarei de Trangight podemos definir o valor padrão como, por exemplo, três e o mínimo Agora, para conectar isso, podemos abrir a entrada do grupo e conectaremos essa altura do tronco ao valor Z. Você pode ver que é zero, então vou voltar para agrupar a entrada do modificador, e agora você pode ver que podemos controlar a altura da linha curva com essa entrada Há também um pequeno aviso, porque a geometria de entrada deve estar na parte superior, então vou movê-la para a parte superior, e agora devemos ficar bem Então, agora basicamente terminamos com o tronco por enquanto e podemos simplesmente selecionar todos esses nós, pressionar Control J para abrir o quadro, e eu chamarei esse quadro de tronco. Agora vamos começar com o grupo de nós, que dividirá um ponto em mais ramificações. Então, vamos criar um novo grupo de nós. Farei isso criando um redirecionamento para essa conexão, então pressionarei a tecla Shift, então pressionarei a tecla Shift clique com o botão direito do mouse e arrastarei sobre essa seleção. A propósito, se você não estiver usando um complemento node wrangular, eu realmente o recomendo porque ele acelerará seu fluxo de trabalho nos nós de geometria e também nos nós de sombreamento Então, novamente, podemos pressionar o botão direito do mouse e arrastar, e podemos obter essa leitura. E agora, se você tiver esse redirecionamento selecionado, você pode pressionar Control G para criar um Agora, se pressionarmos tab, estamos fora desse grupo de nós e você pode ver que ele tem apenas uma entrada e uma saída de curva. Vou renomear isso para pontas duplas porque isso dividirá os pontos finais das curvas E para voltar a esse grupo de nós, podemos novamente pressionar tab e estamos dentro do grupo de nós. Esse grupo de nós terá poucas entradas. primeira delas é a geometria, que já temos aqui, mas vou renomeá-la para A segunda será a seleção, que selecionará os pontos nos quais queremos que novas ramificações cresçam. Então, vou pegar uma nova entrada e chamá-la de seleção. Tipo de bullying. E a última, por enquanto, será a contagem, que será uma série de filiais que você deseja gerar. Então, vamos adicionar uma nova entrada, que será contagem, tipo pode ser inteiro e podemos definir o padrão como, por exemplo, três e o mínimo como zero Agora, se sairmos desse grupo de nós usando tab, inseriremos alguns dados básicos nesse grupo de nós. Então, primeiro, vamos, por exemplo, querer criar três ramificações. Então, vamos adicionar a contagem até três. E para a seleção, queremos apenas aumentar essas ramificações a partir desse ponto final Portanto, geralmente a linha curva tem apenas dois pontos em que o início tem índice zero e o final tem índice de um. Então, podemos usar o valor do índice e onde é igual, então vamos adicionar igual a um. Isso deve selecionar somente esse endpoint. Podemos verificar isso com um visualizador, então controle a tecla Shift e clique no botão mais à esquerda Isso abrirá o espectador e agora podemos arrastar esse valor de bullying para ele E aqui você pode ver que essa parte inferior é preta e a de cima é branca. O segundo método é verificá-lo com o texto do atributo. Então, aqui na parte superior, você pode selecionar o texto do atributo e ver que aqui está um e aqui é zero. Então, agora concluímos a seleção e vamos voltar ao grupo de nós. Começaremos gerando uma ramificação básica. Então, vamos adicionar uma linha curva que criará uma ramificação. E essa linha curva pode ter, por exemplo, apenas 1 metro de comprimento. Queremos duplicar essa linha curva dependendo dessa entrada de contagem, e podemos fazer isso, por exemplo, criando pontos Então, vamos adicionar pontos e criaremos quantos pontos quisermos ramificações. Então, vou inserir essa contagem nessa contagem. E agora você pode ver que temos três pontos aqui. Agora, para substituir os pontos pelas curvas, podemos usar instância em pontos E os pontos de entrada serão os pontos livres no nosso caso, e a instância pela qual queremos substituir os pontos é a linha curva. Agora, se visualizarmos a saída dessa instância, você verá que temos três instâncias. Mas aqui na janela de exibição, você pode ver que ainda há apenas uma linha, porque elas estão se sobrepondo Então, para diferenciá-los um pouco, primeiro vou movê-los no eixo x para que fiquem um pouco inclinados E eu também vou brincar com essa rotação. Então, vamos girá-lo em torno do eixo Z, dependendo do índice Portanto, eles serão bem distribuídos ao redor do eixo Z. Para fazer isso, adicionarei a combinação XYZ porque queremos controlar apenas o valor Z dessa rotação Vou conectar esse vetor à rotação. Agora, se brincarmos com o valor Z, você pode ver que ele está girando em torno do eixo Z. Queremos valores diferentes para cada curva e, para diferenciar entre as curvas, podemos usar a entrada de índice Então, vamos adicionar índice. E se colocarmos esse índice diretamente no eixo Z, você pode ver que ele faz alguma coisa, porque para a primeira linha, a entrada é zero, para a segunda linha, a entrada, desculpe, o índice é um, e para a terceira linha, o índice é dois. Queremos distribuir essas linhas uniformemente em um círculo, por exemplo, assim. Então, quando temos três curvas, queremos que elas sejam assim Então, entre eles, é um ângulo de 120 graus. E para calcular esse ângulo, podemos simplesmente fazer uma rotação completa, que é 360, e dividi-la pelo número de ramificações. Então, vamos fazer isso. Vou duplicar essa entrada de grupo e adicionar um nó de metanfetamina. E como estamos usando radianos aqui, precisaremos usar dois Pi em vez de 360 graus. Então, dividiremos duas vezes Pi, que é 6,28 pelo número de ramificações E isso nos dará o ângulo entre cada galho. E para distribuí-los bem, podemos multiplicar o índice por esse ângulo de deslocamento Então, vamos adicionar uma multiplicação e conectá-la à coordenada Z. Agora você pode ver que os galhos estão bem girados ao longo do eixo Z e estão bem distribuídos ao redor Se sairmos desse grupo de nós e aumentarmos o desconto, você verá que funciona bem Vamos substituir a antiga abordagem de rotação por algo um pouco melhor. Então, vou definir essa linha curva de 0,2 001. Agora eles estão novamente se sobrepondo. Mas agora, se brincarmos com a rotação no eixo Y, você pode ver que eles estão girando bem e podemos controlar o ângulo entre os ramos e o eixo Z. Então, estamos basicamente controlando esse ângulo com esse valor. Queremos controlar esse valor de fora. Então, para adicionar uma nova entrada, podemos pegar esse soquete vazio e conectá-lo ao eixo Y, e eu abrirei o menu do site e o renomearei para ângulo Também podemos definir o subtipo como ângulo, para que a unidade no modificador esteja em graus e o valor padrão possa ser algo como 0,5 ou algo próximo a ele Agora, se voltarmos do grupo de nós, você pode ver que podemos controlar o ângulo em graus e também a contagem. Então, a próxima coisa que você provavelmente gostaria de controlar é o comprimento desses galhos. Mas, na verdade, faremos isso mais tarde porque agora devemos distribuir essas ramificações nos pontos de origem para ver como elas realmente se parecem. Então, vamos usar essa geometria de origem. E usaremos essas instâncias novamente e as instanciaremos nos pontos selecionados. Então, podemos realmente duplicar essa instância em pontos, e queremos instanciar na geometria de origem somente onde a seleção é selecionada Então, vamos também inserir a seleção nela. E, por exemplo, queremos usar essa estrutura que construímos a partir das linhas curvas. Então, eu também conectarei as instâncias a esta. E agora, se eu diminuir um pouco o zoom, você pode ver que temos algumas ramificações aqui. E se eu for para o grupo de nós de geometria principal, você pode ver que temos o tronco e o perdão, e o primeiro nível de ramificações E agora, o que também precisamos é gerar as extremidades dessas ramificações, porque vamos querer usar as pontas duplas novamente dessa forma e apenas reutilizar essa geometria como novos pontos vamos querer usar as pontas duplas novamente dessa forma de origem Então, para obter a seleção, podemos primeiro perceber todas essas instâncias e, novamente, essas são as linhas curvas, então podemos pegar os pontos em que o índice é um e usar isso como uma seleção. Para obter o índice de cada ponto dentro da curva, vamos usar um perímetro spline, que nos dará um índice neles Se usarmos o visualizador, você pode ver que todas as extremidades dos pontos têm um e os pontos de origem têm zero. Se usássemos um índice, obteríamos valores diferentes porque esse índice está em todas essas splines ou curvas, e não é isso que queremos Então, vamos usar esse índice de perímetro linear. Para fazer uma seleção, podemos simplesmente usar um igual e, onde for igual a um, essa será nossa seleção. Podemos conectar esse resultado à saída do grupo e renomeá-lo para seleção 5. Noções básicas do sistema de ramo: Olá, bem-vindo de volta às três árvores D com varetas geométricas Blender Agora, se sairmos dessas pontas duplas, podemos duplicar esse grupo de nós e conectar essas curvas de saída e seleção E agora você pode ver que isso criou um segundo nível das ramificações. Se usarmos a geometria das juntas e juntarmos todas essas partes, você verá que temos uma estrutura de árvore muito básica, que parece muito legal, mas ainda há muitas coisas que precisamos adicionar às pontas duplas Então, primeiro, você pode ver que essas ramificações devem estar alinhadas a essa curva, então ela deve ser mais ou menos assim, e elas não devem estar retas em direção ao eixo Z, mas devem estar alinhadas com a curva de origem Então, para fazer isso, podemos ir para pontas duplas e controlaremos a rotação desses pedaços de linha curva E para obter a rotação correta, basicamente queremos alinhá-las à tangente das curvas de origem Se olharmos para isso de lado. Então, por exemplo, essa etapa, essa é a curva de origem, e sua tangente é o vetor apontando nessa direção E queremos alinhar o eixo Z desse grupo de curvas com essa tangente da curva, para que fique mais ou menos Para esse alinhamento, podemos usar a rotação de alinhamento ao vetor, que faz exatamente o que eu desenhei E queremos alinhar o eixo Z, então ele está aqui selecionado para esse vetor Esse vetor será a curva tangente, então vamos mostrar a curva tangente E isso deve nos dar a rotação correta. Então, vamos conectar essa rotação a essa rotação. E agora você pode ver que os galhos estão girados corretamente ao longo das tangentes das curvas de origem Agora, quando fizermos isso, podemos realmente adicionar uma entrada de comprimento, que controlará os comprimentos dessas ramificações Então, vamos abrir o menu do site e adicionar uma nova entrada, que chamaremos de comprimento. E o valor padrão pode ser, por exemplo, um. primeiro local onde você pode controlar o comprimento das curvas é esse, porque aqui controlamos a linha básica da curva e podemos basicamente controlar o comprimento delas O problema com essa é que todas as curvas teriam o mesmo comprimento, e queremos ter algumas variações e aleatoriedade em nossa árvore, e isso não pareceria muito natural, então evitaremos essa O segundo lugar onde podemos controlar isso é basicamente a escala. Então, se eu brincar com esses valores, também podemos controlar o comprimento das curvas aqui E podemos até mesmo inserir valores diferentes para linhas diferentes, como você pode ver aqui é uma entrada retangular, o que significa que existem campos e podemos inserir um valor diferente para cada um deles. Mas se eu agora em um valor aleatório aqui, e algo 1-2. Não tenho certeza se será realmente visível, mas talvez diminuamos a contagem para três. Sim, neste, você pode ver isso muito bem. Você pode ver que quase parece que funciona, mas essas partes aqui no segundo nível são todas iguais e têm uma rotação diferente Queremos ter o máximo de coisas aleatórias que pudermos. Então, para tornar isso ainda mais aleatório, usaremos uma abordagem diferente. Você pode ver que essas partes aqui, aqui e aqui são as partes mais curtas e são todas iguais Então, para tornar isso ainda mais aleatório, faremos isso depois de perceber as instâncias e moveremos as extremidades das curvas Você pode seguir essa solução aqui, mas vou mostrar solução ainda melhor, que nos dará mais aleatoriedade. Então, vamos excluir esse na escala de volta para um. E agora, o que faremos é pegar as extremidades dessas curvas e movê-las aleatoriamente ao longo Para fazer isso, vamos adicionar uma nota de posição definida. E moveremos apenas os pontos finais para que possamos realmente usar essa seleção Então, vamos inserir isso na seleção. E agora, se eu movê-lo, por exemplo, em Xxs, você pode ver que ele está movendo todas as ramificações, o que significa que podemos controlar esses pontos finais separadamente A maneira como vamos randomizar isso é obtendo uma tangente de cada ramificação e seguida, apenas randomizando-a em algum intervalo para torná-la Então, primeiro, agora sabemos que esses pontos estão a 1 metro de sua fonte. Então isso é um porque esse ponto final está no eixo Z um. Então, primeiro, vamos redefinir esses pontos volta para esses pontos de origem e , em seguida, escolher um valor aleatório na direção da tangente da curva para deslocá-los Então, vamos adicionar uma curva tangente. E primeiro, podemos normalizar isso, mesmo que provavelmente esteja normalizado, vamos normalizá-lo E então, se escalarmos isso e conectarmos isso ao offset, você verá que podemos controlar o comprimento dessas curvas Se definirmos como zero, eles terão o mesmo comprimento de antes. Se definirmos como menos um, você pode ver que todos eles se desmoronam em um ponto. Agora, se adicionarmos valor a esse vetor, podemos controlar o comprimento dele usando a mesma técnica. Então, vamos duplicar o valor da escala e adicioná-lo a esse original E vamos inserir esse resultado no offset. Agora, se definirmos como zero, você pode ver que todas as ramificações têm comprimento zero. E à medida que eu o aumento, por exemplo, para um, eles voltam à posição original, mas agora os controles realmente fazem sentido. Então, quando é um, o comprimento deles é um, e quando eu defino para dois, o comprimento deles é dois. O bom é que existe um controle retangular. Portanto, existem campos e podemos controlar cada ramificação separadamente. Então, se eu agora inserir um valor aleatório neste, você verá que essas ramificações têm valores ou comprimentos diferentes Você pode ver que há esse pequeno e não consegue encontrar esse curto nas diferentes partes, então você pode ver que é realmente aleatório. Agora, para controlar essa entrada, podemos usar a entrada de comprimento que criamos e conectá-la à escala. Por padrão, você pode ver que é zero, mas agora podemos controlar esses comprimentos. E a partir daqui, também podemos inserir um valor aleatório nele e você pode ver que ele funciona para todas as curvas separadamente. A última coisa que você gostaria de adicionar a esse grupo de nós é randomizar um pouco essa distribuição em círculo porque, em alguns casos, isso não parece muito bom Por exemplo, se houver apenas dois, você pode ver que é reto assim, é reto, e queremos randomizar isso um pouco Então, vamos dividir um grupo de nós, e controlamos essa rotação no eixo Z aqui, combinando XYZ neste ponto Z. Para randomizar um pouco, adicionaremos um valor a isso Então, vamos adicionar um nó e adicionaremos ao valor original. Agora, se eu conectá-lo ao eixo Z, você pode ver que basicamente podemos controlar a rotação aqui. Queremos que a rotação seja diferente para cada curva. Então, usaremos um valor aleatório. E se eu conectar aqui, queremos que seja, por exemplo, entre menos um e positivo. E também queremos assentos diferentes para cada um deles. Então, como assento, podemos, por exemplo, usar o índice deles, e agora você pode ver que eles são diferentes. Em alguns casos, o que poderia acontecer é que todas as filiais estivessem na mesma posição. Então, digamos que temos três ramos assim, e eles podem girar nessa direção e direção Então, isso pode acabar sendo algo assim. Então, a maneira de remover isso é limitando essa aleatoriedade em algumas partes Então, basicamente, vamos limitar esse ramo nesta parte, esse ramo nesta parte, e essa marca é essa terceira parte. Portanto, os valores que queremos inserir no valor aleatório são basicamente o ângulo de deslocamento dividido por dois Então, isso nos dará esse ângulo, e vamos multiplicá-lo por menos um e positivo, e isso nos dará o intervalo Então essa divisão aqui nos dá todo esse ângulo, e primeiro vamos dividi-lo por dois para obter a metade dele, e então podemos multiplicá-lo por mais e menos 0,5, que deve nos dar esses valores limites Agora, se colocarmos esses valores no mínimo e no máximo dessa aleatoriedade, você verá que funciona bem E também podemos aumentar a contagem. E se olharmos de cima, você pode ver que eles são bem aleatórios Para tornar isso um pouco mais estreito, por exemplo, podemos até dividi-lo por três para obter limites mais estreitos, e acho que vou deixá-lo congelado para que eles possam se tocar Tudo bem, a última parte é que adicionaremos uma semente a esse grupo nós porque queremos poder controlar um conjunto de todos esses valores aleatórios. Então, vamos adicionar uma nova entrada e conectá-la a esse ID. E vou apenas adicionar a leitura aqui, e vamos renomear esse ID para assento Também não vamos ocultar esse valor, então desmarque esse valor de altura porque esse é o padrão para o ID E agora podemos controlá-lo de fora, então você pode ver que podemos controlar a aleatoriedade da rotação no primeiro nível e também no segundo nível Para testar isso, vamos também para o terceiro nível. Vou novamente usar as curvas e a seleção anteriores, e vou juntá-las na rotação e podemos torná-la um pouco mais curta Você pode ver que agora temos uma estrutura bastante interessante, que se parece um pouco com uma árvore. Mas nas próximas aulas, adicionaremos mais detalhes, o que tornará isso ainda melhor. 6. Sistema avançado de ramo: Bem-vindo de volta às árvores D gratuitas com nós de geometria do Blender. Nesta lição, continuaremos trabalhando em nosso sistema de ramificações e, especificamente, criaremos um novo grupo de nós que combinará essas pontas duplas e criará um sistema de ramificação completo. Então, primeiro, vamos excluir esses nós porque não precisaremos mais deles e criaremos um novo grupo de nós. Então, vou apenas conectar essa curva à geometria de saída em uma parte traseira e, com a parte traseira selecionada, pressionarei o Controle G para criar um novo Vou chamar esse grupo de nós de sistema ramificado. Então, como esse grupo de nós do sistema de ramificação funcionará é que ele terá algumas entradas Uma delas será a seleção, que será o ponto a partir do qual queremos cultivar os galhos. Então, digamos que este é o tronco e esta é a seleção, e então vamos conectá-lo ao sistema Branch. A entrada que estará no sistema de ramificação é o número de níveis. Então esse é o número de níveis de filiais. Por exemplo, é assim que dois níveis de ramificações se parecem, e se adicionarmos mais um, são três níveis. Assim, poderemos controlar quantos níveis existem. E mais tarde também adicionaremos algum tipo de randomização. Portanto, haverá o comprimento das primeiras ramificações e das últimas ramificações, e isso intercalará entre esses valores e também o quanto as ramificações serão Portanto, haverá um número mínimo e máximo de ramificações que serão geradas em cada uma , então vamos entrar grupo de nós do sistema de ramificações e adicionar algumas das entradas A primeira será a seleção. Então, vou adicionar uma nova entrada sobre bullying e chamá-la de seleção. E o próximo importante é o número de níveis. Então, vamos adicionar uma nova entrada. Este será inteiro e podemos chamá-lo de níveis Acho que está tudo bem por enquanto e podemos começar a trabalhar na configuração geral. Então, vamos adicionar nosso grupo de nós de pontas duplas, que será a base desse grupo de nós. E, basicamente, como isso funcionará é que usaremos uma zona de repetição, que terá pontas duplas dentro dela, e a zona de repetição iterará dependendo do número de níveis que inserimos nesse grupo de nós E depois de todas essas iterações, ele criará um sistema final de ramificações Então, vamos adicionar uma zona de repetição. E o número de iterações será de níveis, então podemos conectar níveis em iterações, e a geometria de saída virá da zona de faixa para que possamos conectá-la A geometria inicial será o tronco que inserimos nesse grupo de nós, então também podemos conectar a geometria a essa geometria E em cada iteração, usaremos essa geometria, para que possamos conectá-la em pontas duplas Fizemos a seleção e a unimos à geometria anterior Então, vamos adicionar a geometria do queixo e, basicamente, uni-la à geometria da fonte E também precisamos armazenar a seleção. Então, vamos conectar essa seleção a esse soquete vazio, o que criará um novo soquete aqui com a seleção, e usaremos esse como uma seleção para a próxima Portanto, para a primeira iteração, isso será uma seleção da entrada do grupo Mas, mais tarde, nas próximas iterações, queremos usar a seleção dessas novas ramificações Então, vamos conectar isso na saída. Agora, se sairmos desse grupo de nós e aumentarmos o número de níveis, você pode ver que ele começa a crescer. Também vou brincar com a contagem, e você pode ver que podemos controlar quantos níveis de galhos existem. Se agora verificarmos quantas curvas realmente existem, você pode ver que existem 16 splines, mas isso não corresponde ao que vemos, porque se contarmos isso, temos um tronco, três ramificações, e cada uma delas tem três ramificações de segundo nível, que devem somar 13, mas temos O problema aqui é que essa seleção não exclui a seleção anterior. Então, para realmente corrigir essa seleção, criaremos um novo atributo nomeado, que nos dirá quais pontos queremos expandir na próxima iteração E para a geometria antiga, vamos configurá-la para quedas, e para a nova geometria, vamos configurá-la para a seleção Então, vamos adicionar uma loja chamada attribute. E podemos chamá-lo de seleção, o tipo será Bolin e, para todas as ramificações dos níveis anteriores, isso será falso Então, vamos deixar isso no outono. E se duplicarmos isso e conectarmos a essas pontas duplas, conectaremos a seleção ao valor E agora, para a seleção na próxima iteração, podemos usar esse atributo nomeado chamado S e conectá-lo à seleção Agora, se aumentarmos os níveis para dois, você pode ver que temos apenas 13 splines abaixo em vez de 16. Então, isso está funcionando bem. E agora podemos começar a trabalhar na conexão dessas entradas de pontas duplas a essa entrada de grupo Então, a próxima entrada das pontas duplas é contagem e, na verdade, queremos randomizar essa entrada porque não queremos que seja constante, mas queremos algumas variações aqui Então, por exemplo, o primeiro nível se dividiria em três ramos, depois quatro e depois apenas dois ou algo parecido. Então, para fazer isso, adicionaremos um valor aleatório. O tipo desse valor aleatório será inteiro porque a contagem também é inteira, e inseriremos esses valores mínimo e máximo nas entradas do grupo Portanto, podemos usar esse circuito cinza vazio para conectá-lo, e esse valor de saída será conectado à contagem Você pode ver que agora essa conexão está vermelha, mas podemos corrigir isso, podemos adicionar uma nova variável a essa zona de repetição, que nos dirá em qual iteração estaremos E se conectarmos essa iteração em ID ou C, convergirá para constante e não para um valor de campo, e isso não deve mais ser lido Então, selecionamos a zona de repetição, pressionamos N e vamos para o nó, e adicionaremos uma nova entrada, que chamarei de I como iteração e definiremos o número inteiro do tipo dois E no início, queremos que seja, por exemplo, zero e, em cada iteração, queremos aumentar isso em um Então, vamos adicionar em matemática, adicionaremos um a ele e o armazenaremos para a próxima iteração. Agora, isso aumentará cada iteração . Isso significa que será diferente para cada iteração, e podemos usá-lo, por exemplo, para ID, e agora você pode ver que o valor não está mais preenchido. E isso criou algo estranho, mas é porque o mínimo é zero e o máximo é 100. Se mudarmos isso para, digamos, dois a cinco, você pode ver que na primeira iteração, isso a divide em cinco ramificações e na próxima apenas 23 Também queremos ser capazes de controlar a semente. Então, vamos também conectar a semente à entrada do grupo. E vou renomear esses números Min e Max para Min. Split count e max split count E também mova o set para o topo da entrada do grupo, como sempre. Então, agora o número de níveis é aleatório e a próxima entrada é o comprimento Além disso, também criaremos alguma randomização, para que possamos duplicar esse valor aleatório e configurá-lo como flutuante E se agora inserirmos esse valor aleatório nesse comprimento, você verá que cada uma das ramificações tem um comprimento diferente, e é exatamente isso que queremos. Infelizmente, podemos conectar o assento da entrada do grupo a essa semente e deixar o ID como está porque, por padrão, ele escolhe o índice, o que é adequado para essa finalidade Para os valores mínimo e máximo, há poucas opções de como podemos controlar isso. E uma coisa que eu gostaria de fazer é tornar isso dependente do nível atual de iteração em que estamos Assim, poderemos criar, por exemplo, ramificações longas no primeiro nível e depois ramificações mais curtas no último nível. E também vamos querer randomizá-los um pouco, então adicionaremos algum tipo de aleatoriedade Então, vamos adicionar uma primeira entrada, que será o comprimento da primeira ramificação, que definirá o comprimento das ramificações no primeiro nível, e podemos definir o padrão como um e o mínimo como zero. E vou duplicar isso e renomeá-lo para o comprimento do último galho, que controlará o comprimento dos últimos galhos ou basicamente dos galhos no último nível e o definirá, por exemplo, A última entrada para as ramificações será a aleatoriedade do comprimento da ramificação, então vamos adicionar isso também E podemos deixar esses valores padrão como estão. Agora, para calcular o comprimento do galho em cada nível, usaremos uma chave de mapa e também esse valor I que usamos como ID para a Então, vamos adicionar uma chave de mapas. E vamos remapear esse I porque ele vai de zero para o número de níveis menos Ou, nesse caso, podemos aumentá-lo até o valor inicial de um, e agora isso passará de um para vários níveis. E agora podemos simplesmente remapear esse valor I com chave de mapas de um a vários níveis E o intervalo para o qual queremos remapear isso será do comprimento da primeira ramificação até o comprimento da última ramificação Isso significa que quando o I é um, que significa que estamos no primeiro nível, a saída dessa ramificação do mapa será o comprimento da primeira ramificação. E se estivermos no último nível, que é onde o I está nivelado, o comprimento dos galhos será o comprimento do último galho. Usaremos esse valor para a randomização, e a forma de randomizar isso é adicionando um valor aleatório a esse comprimento base na faixa de menos aleatoriedade e mais aleatoriedade. Basicamente, se eu visualizar isso, digamos que aqui está o valor do intervalo do mapa e vamos randomizá-lo em um intervalo onde isso é L menos aleatoriedade, e isso é L mais aleatoriedade e isso é Portanto, se o R for algo pequeno, estará em uma pequena faixa entre o L e, se for maior, terá mais variações. Isso significa que o mínimo desse valor aleatório será esse rancho do mapa menos a aleatoriedade da linha de ramificação Então, vamos subtrair isso do rancho do mapa. E o máximo será chave de mapa mais aleatoriedade, então eu posso duplicar isso com Control Shi D e apenas mudar Agora, se os conectarmos ao mínimo e máximo e sairmos, você pode ver que podemos controlar os níveis dependendo do nível deles. E se eu aumentar os níveis, você verá que se eu mudar o comprimento do primeiro galho, isso mudará apenas o primeiro nível e também os outros, mas a maior mudança está no primeiro nível, e também podemos controlar o e também podemos controlar comprimento do último galho, bem como a aleatoriedade do galho Certo, agora acho que o sistema de filiais está pronto para o próximo uso. Também podemos brincar com as entradas, e você pode ver que elas estão gerando três estruturas muito boas E a última coisa que podemos fazer é conectar essas entradas à entrada do grupo principal e também criar um painel que controlará as ramificações Então, vamos adicionar um novo painel. Vou agrupar galhos E agora vou abrir uma entrada de grupo e, como sempre, usar esse soquete vazio para criar essas novas entradas E porque se conectarmos isso ao soquete, ele usará o valor atual como padrão Então, vou definir alguns bons valores padrão aqui. Então, algo assim. E agora vou criar todas essas entradas na entrada do grupo simplesmente arrastando esse circuito vazio para dentro de todas Quando todas as entradas forem criadas, eu as moverei para o painel direito, que é o painel de ramificações E também vou mover a semente para o topo das entradas e escondê-las nos soquetes com o Control H, por exemplo, agora está muito bom Mais uma coisa que podemos fazer é limpar um pouco essa árvore. Então, vou usar uma entrada de grupo diferente. Então, isso não é tão confuso. E basta reconectar essas entradas às entradas de seu próprio grupo Agora, quando tudo estiver concluído, podemos ir para a etapa do modificador e você pode brincar com essa estrutura básica de árvore com todas essas entradas Uma última coisa que esqueci de acrescentar é controlar o ângulo porque nos esquecemos desse E com esse ângulo, queremos controlar, na verdade, a dispersão do sistema geral de ramificações. Então, vamos adicionar rapidamente novas entradas para eles. Para isso, vamos apenas escolher um ângulo base e depois a aleatoriedade, e funcionará da mesma forma que o comprimento do galho, mas apenas com um ângulo básico Então, vamos adicionar a primeira entrada ao ângulo e a segunda à aleatoriedade do ângulo Vou duplicar essa entrada de grupo e usaremos a mesma técnica que aqui Então, vou usar esse valor aleatório, usar este, esse sat, e vamos somar e subtrair a aleatoriedade de um valor básico como esse e conectá-la aos valores mínimo e máximo Isso gerará o ângulo aleatório e podemos conectá-lo ao ângulo. Você pode ver que agora está tudo plano, mas isso é porque essas entradas estão definidas como zero, então vou aumentá-las um pouco E também podemos definir o subtipo desses dois ângulos para que estejam em graus. A última coisa que devemos fazer é conectar essa semente à nossa semente global. Então, vou apenas conectar a semente da entrada do grupo às pontas duplas. E para finalizar, conectaremos essas duas entradas à entrada do grupo global, novamente, com esse cinza, encaixe-a e mova-as para o painel de ramificações 7. Dados internos: Olá, e bem-vindo de volta às árvores D gratuitas com nós de geometon do Blender Nesta lição, implementaremos dados internos que usaremos para distribuir nossas folhas e também raio de cada ramificação para cada ponto Eu já expliquei esses dados na introdução às filiais, mas vou examiná-los em breve. Ambos serão atributos que serão armazenados para cada ponto, e o primeiro deles será o comprimento. Que no início da raiz é zero e depois aumenta dependendo da distância que estamos da raiz. Então, por exemplo, pode ser algo assim. E então também implementaremos a inversão dessa versão ou da versão oposta, que será chamada de comprimento a partir do final E este será o mesmo, mas na direção oposta. Então, nas extremidades dos galhos, isso será zero. E à medida que nos aproximamos da raiz, o valor aumentará. O comprimento da extremidade será usado para distribuir as folhas nas extremidades dos galhos Então, por exemplo, podemos definir o valor como zero ponto ou 1,5, que pode estar em algum lugar aqui, e as folhas serão distribuídas apenas nesses galhos. E o comprimento básico será usado para calcular o raio da malha do galho Tudo bem, então vamos entrar nos nós de geometria e implementaremos ambos dentro do sistema de ramificações Então, vamos ao sistema de filiais. E o primeiro que queremos usar é o comprimento, porque esse será um pouco mais simples. Então, armazenaremos esses atributos. Então, primeiro, podemos realmente armazenar um comprimento básico para o porta-malas. Então, vou adicionar o atributo Sterne. Ele será flutuante para cada ponto, então os valores padrão são bons e o nome será comprimento Para este, usaremos um perímetro estriado, que nos dará o comprimento de cada ponto E se visualizarmos isso, você pode ver que é zero na parte inferior e dois na parte superior Agora, se formos para o sistema de ramificação, a maneira como isso funcionará é que, por exemplo, neste primeiro nível, eu apenas diminuirei isso. Neste primeiro nível, esse ponto de origem tem comprimento de dois. Para todos esses pontos, adicionaremos um comprimento a esse valor básico, e isso nos dará, por exemplo, se essa curva tiver comprimento de um, ela criará três nesse ponto. Portanto, o comprimento será implementado dentro das pontas duplas porque podemos fazer isso aqui. Então, vou para pontas duplas e armazenaremos aqui no final depois deslocar as pontas, dependendo do comprimento Então, adicionarei um atributo chamado loja, defino o nome como comprimento. E o comprimento será o comprimento atual da curva mais o comprimento do ponto de origem. Então, adicionaremos um valor a este, e o valor que usaremos é o comprimento do ponto de origem. Então, vamos capturá-lo antes de instanciar a curva nele. Então, vamos adicionar o atributo de captura. E vamos capturar o comprimento. Então, vamos também adicionar o atributo nomeado, comprimento. Vamos capturá-lo assim e, em seguida, inserir esse valor nessa adição, que significa que, por exemplo, se esse ponto tiver dois, essa curva tiver comprimento 0-1, esses valores serão somados e obteremos dois aqui na parte inferior e três aqui na parte superior Então, se armazenarmos isso em um atributo nomeado, agora podemos visualizar isso no final dessa zona de repetição, então vou abrir o atributo nomeado E agora você pode ver que esses pontos têm valores um pouco diferentes. Talvez eu visualize isso no final desse sistema de filiais que será o melhor E também podemos aumentar o número de níveis e tornar os galhos mais visíveis. Agora, se visualizarmos isso, você pode ver que esse ponto de origem tem comprimento de atributo zero, então esse valor está em torno de três E há 3,7, 4,7. Tudo bem, acho que cometi um pequeno erro nas pontas duplas. Aqui, além disso, deve haver esse perímetro estriado e o comprimento da coluna, que eu usei antes porque esse comprimento da coluna nos dará apenas o comprimento da curva, mas queremos o comprimento em cada ponto Então, precisamos usar esse perímetro de rotação. E agora, se visualizarmos esses valores, com o maior que, por exemplo, então eu vou usar maior que e desabilitarei esse texto de atributo Você pode ver que à medida que eu aumento esse valor, todos os galhos ficam pretos e, para tornar isso ainda mais visível, podemos reamostrar essas curvas para mais pontos, e agora você verá essa bela borda entre preto e branco, que está ao longo dos Então, isso é para o comprimento. Agora queremos o atributo oposto , que é comprimento a partir da extremidade. Este será um pouco mais complicado, porque a maneira como construímos o sistema de ramificações é que começamos do tronco e depois continuamos até as Mas o melhor cenário seria começarmos do final e depois começarmos, mas isso é um pouco que será muito complicado. Então, precisamos descobrir uma maneira de calcular o comprimento das extremidades. A forma como calcularemos isso é que, para o tronco, armazenaremos o comprimento na direção oposta, ou seja, o comprimento a partir da extremidade. Então, na parte superior, será zero, e na parte inferior, dois porque esse será o fim. E aqui na parte inferior, o comprimento da extremidade é dois. E então, em cada iteração, calcularemos o comprimento da próxima ramificação Então, vamos dizer que este é um e adicioná-lo a todos esses pontos. Então esse será zero mais um e dois mais um. E para essa curva, armazenaremos novamente o comprimento invertido a partir do final Então aqui será zero, e aqui será um, o que corresponde a este. Agora, se fizermos isso para cada nível, novamente, este tem um e editaremos nesse comprimento todos os pontos anteriores. Então, esse será dois. Este será um, e este é dois mais um mais um, que é quatro. E você pode ver que isso aumenta a distância até o final em cada nível isso aumenta a distância até o final E digamos que seja 0,5, será zero, 0,5, um mais cinco, 2,5 e 4,5 e você pode ver que, no final, devemos ter esse valor que corresponde ao comprimento da extremidade. Também implementaremos esse sistema de ramificação interna, mas não entraremos em pontas duplas, mas também permaneceremos aqui na zona de repetição. E, como antes, começaremos primeiro armazenando esse atributo no tronco principal. Então, vamos usar outro atributo nomeado, mas chamaremos isso de comprimento a partir do final. E este terá um comprimento invertido. Então, para obter o comprimento invertido, podemos pegar o comprimento total dessa curva e subtrair esse perímetro dela Então, desculpemos também comprimento da coluna, que nos dará o comprimento da curva. Você subtrairá esse perímetro de comprimento, que vai de zero a comprimento para cada ponto e iniciará o comprimento a partir do final Se visualizarmos esse valor, você pode ver que é zero aqui na parte superior e dois aqui na parte inferior Agora, no sistema de filiais, faremos exatamente o que expliquei aqui. Portanto, para essas novas curvas, armazenaremos apenas o comprimento invertido. Então, vou novamente usar esse atributo de sobrenome, configurá-lo para comprimento a partir do final O tipo fluirá e usaremos o mesmo valor que usamos aqui Então, vamos pegar um comprimento de spline e subtrair o perímetro de spline um comprimento de spline e subtrair o perímetro de spline assim. Isso nos dará novamente o fator de comprimento invertido e armazenaremos o comprimento a partir do final E para todos os níveis anteriores, que são esse soquete, adicionaremos um comprimento máximo dessas curvas nu ao comprimento a partir da extremidade Então, vou duplicar este e pegaremos o comprimento anterior do final, que pegaremos com o atributo nomeado e adicionaremos um comprimento dessas curvas a esse O problema aqui é que essas novas curvas podem ter comprimentos diferentes e não há realmente uma maneira de levar cada comprimento diferente aos níveis anteriores Digamos que temos o tronco e ele gera dois galhos Um é mais curto e o outro é mais longo. Então, esse nível anterior tem, digamos, aqui é um e aqui é zero, e não podemos descobrir o comprimento neste ponto porque, a partir desse ponto , não sei, digamos, 0,2, mas desse ponto, pode ser como um. Portanto, não sabemos qual valor queremos aqui. E, na minha opinião, a melhor coisa a fazer é adicionar ou adicionar o comprimento máximo dessas curvas Então, como isso é 0,2 e esse é um, usaremos essa curva o que significa que esse ponto terá distância um, e esse terá um mais um, que é dois. Então, para obter esse comprimento máximo, podemos simplesmente pegar essa geometria e usar estatísticas de atributos E vamos querer o comprimento máximo das curvas. Portanto, o domínio no qual selecionaremos será coluna, e o atributo que queremos usar é esse comprimento a partir do comprimento da coluna. Então, vou duplicá-lo e conectá-lo ao atributo e criar algum espaço aqui E, basicamente, vamos pegar esse máximo e adicioná-lo ao comprimento anterior a partir da extremidade, desta forma, e armazená-lo no comprimento a partir da extremidade. Então, para resumir, para as novas curvas, armazenaremos o fator de comprimento invertido e, para as curvas antigas, apenas adicionaremos um comprimento máximo dessas novas curvas ao comprimento anterior a Agora, se visualizarmos isso aqui, usarei novamente o comprimento do atributo nomeado a partir do final Está aqui. E podemos novamente usar o maior então porque, com isso, podemos visualizar isso muito bem E à medida que eu aumento isso, você pode ver que esse valor vai muito bem das extremidades dos galhos até a raiz Você pode ver que, se for zero, todos eles são brancos e, à medida que eu o aumento, as pontas ficam pretas e vão em direção à raiz. 8. Raízes: Bem-vindo de volta às árvores D gratuitas com barras de geometria do Blender. Nesta lição, continuaremos trabalhando em nossa estrutura em árvore. Especificamente, trabalharemos nas raízes. Se você tentar desenhar raízes em nossa árvore, algo assim, observe que essa forma aqui embaixo é muito semelhante a essa aqui em cima. E é exatamente isso que usaremos porque reutilizaremos nosso grupo de nós do sistema de ramificações para criar as raízes com a mesma técnica Então, vamos aos nós Geometri, e aqui podemos ver que nesta parte, estamos criando nosso sistema de ramificações e adicionaremos a mesma coisa, mas para as raízes Então, para isso, podemos duplicar esse grupo de nós do sistema de ramificações E se dermos uma olhada em nosso tronco, usaremos este também, mas não queremos cultivar galhos da parte superior , mas da parte inferior. Então, vamos conectar nossa geometria à geometria aqui. E se agora produzirmos esse sistema de ramificação, podemos ver qualquer coisa. Mas se colocarmos nossa seleção original aqui, teremos uma árvore muito básica, a mesma de antes. A primeira coisa que precisamos corrigir é que queremos que os galhos cresçam a partir do fundo. Então, em vez de um ponto com índice um, que está aqui em cima, queremos aumentá-los a partir do ponto com índice zero. Então, podemos duplicar esse igual com Control h D e apenas mudar um para zero E quando isso for igual a zero, ele criará as ramificações. Agora você pode ver que isso cria os galhos, mas há um problema porque eles estão crescendo na direção errada. Queremos que eles cresçam nessa direção vez de nessa direção. Para corrigir isso, a maneira mais fácil de fazer isso é simplesmente pegar a curva do tronco e invertê-la, que inverterá a direção dessa curva. Então, vamos adicionar a curva reversa e conectar nosso tronco a ela. E se agora conectarmos essa curva à geometria e essa seleção ao sistema de seleção de ramificações, você pode ver que o sistema de ramificações criou exatamente o que estamos procurando, e esses são os galhos que estão crescendo da parte inferior do nosso tronco Agora, o que podemos fazer é combinar essas curvas geradas com as curvas de ramificação Então, vou unir essas geometrias. Primeiro, basta adicionar uma geometria de junta e conectá-la separadamente e conectá-la manualmente ou pressionar a tecla Control Shift clicar com o botão direito do mouse e arrastar sobre esses dois nós dessa forma, e isso gerará a geometria da junta e unirá essas duas ramificações Agora, se produzirmos isso, você pode ver que temos uma boa estrutura de árvore. O único problema agora que temos na configuração é que esse sistema de ramificação contém a curva do tronco, assim como o sistema raiz também contém essa curva do tronco. Isso significa que agora, aqui nesta seção, há duas curvas iguais que se sobrepõem Não queremos algo assim, então precisamos nos livrar de um desses baús. Para nos livrarmos de um desses troncos, podemos, por exemplo, armazenar o atributo antes de todos os grupos de nós do tronco e, em seguida, verificar onde esse atributo está atribuído e removeremos essa geometria Então, por exemplo, aqui, adicionaremos uma rota traseira e adicionaremos uma loja chamada attribute. Por exemplo, podemos adicionar um Bolin, podemos chamá-lo, por exemplo, tronco e configurá-lo como verdadeiro Isso significa que agora a curva do tronco tem esse atributo do tronco atribuído. E no sistema de ramificações, também adicionaremos esse atributo, mas o configuraremos como quedas. Então, vamos ao sistema de filiais. E aqui, onde estamos unindo nossas novas filiais a toda a configuração, adicionaremos um atributo chamado loja e armazenaremos novamente o tronco, mas o configuraremos para quedas. Agora, se sairmos desse sistema de ramificações e verificarmos o tronco do atributo nomeado, você pode ver que essa curva é verdadeira, mas todas essas curvas são falsas Então, podemos usar isso. E, por exemplo, excluirei esse tronco das raízes, mas você também pode excluí-lo das ramificações, mas apenas de uma delas. Então, vamos adicionar a geometria de exclusão e, quando o tronco for verdadeiro, você deseja excluí-lo Então, vou usá-lo assim. Agora, se observarmos isso, você pode ver que as raízes não contêm o tronco, mas esses galhos o contêm. Então, juntos, ele nos dará a árvore inteira sem nenhuma sobreposição Certo. Então, agora nosso sistema de curvas também tem raízes, e queremos ser capazes de controlar todos esses parâmetros, que podemos controlar para ramificações. Também queremos controlá-los quanto às raízes. Então, para isso, adicionaremos várias entradas de grupo e as adicionaremos com esse sockit vazio Então, para o assento, podemos usar o existente. Então, vamos conectá-lo ao assento. Mas isso fará com que os dois grupos de nós usem o mesmo sad e poderemos obter os mesmos resultados com eles. Então, vamos fazer isso um pouco diferente. Para isso, podemos, por exemplo, usar um nó MF. Eu gosto de multiplicar em, e vamos multiplicar essa semente por, por exemplo, 15 e em algum número aleatório, digamos 42 E agora, isso provavelmente nos dará sempre um valor triste diferente do original. Agora temos o assento e agora vamos conectar todas essas entradas ou soquetes de grupo à entrada do grupo Então, usaremos esse soquete vazio e eu os conectarei assim E agora, quando todos esses soquetes estiverem conectados, podemos clicar para abrir o menu do site e adicionarei um novo painel que chamarei de roots Para finalizar, vou mover todos esses atributos ou entradas para esse painel de raízes Tudo bem, agora, quando todos os soquetes estiverem conectados, podemos esconder um novo socuit com Control H e também limpar um pouco essa árvore de notas Vou apenas agrupar esses nós com o Controle J e chamá-lo de remover o tronco duplicado E também podemos renomear toda essa configuração para sistema de ramificação. Agora podemos ir ao Modifier e brincar com nossas raízes. Então, vou definir os níveis para algo menor e torná-los um pouco mais longos, além de brincar com os ângulos. Também podemos verificar se nossos dois atributos, que são comprimento e comprimento da extremidade, estão funcionando corretamente. Então, adicionarei apenas um atributo nomeado e um comprimento, verificaremos onde ele é maior do que algum valor limite e ocultarei esses textos de atributos Então, à medida que eu o aumento, você pode ver que está indo bem deste ponto até os galhos, bem como até as raízes E para verificar o outro parâmetro, que é o comprimento da extremidade, você pode ver que ele também está funcionando muito bem 9. Deslocamento: Bem-vindo de volta às três árvores D com nós de geometria do Blender Nesta lição, trabalharemos no deslocamento de nossa configuração de curva e daremos a essa árvore uma aparência um pouco mais natural Então, como isso vai funcionar é basicamente pegar essas curvas e substituí-las por algumas texturas de ruído Mas antes disso, precisamos ser capazes de controlar quanta geometria essa árvore realmente tem Vamos controlá-la com essa curva de reamostragem, mas daremos ao usuário a opção controlar quanta resolução realmente temos Para fazer isso, na verdade, é melhor mudar esse tipo para comprimento, pois isso significa que ele amostrará essas curvas em pontos distribuídos uniformemente, e isso não depende do comprimento da curva E podemos adicionar um perímetro a esse grupo de nós, que será a resolução Então, vamos adicionar uma nova entrada inteira, que será chamada de resolução E podemos definir o valor padrão para, por exemplo, dez e mínimo para um. Se abrirmos a entrada do grupo, não podemos realmente inserir essa resolução diretamente nessa curva de reamostragem porque esses valores inteiros são muito altos e você pode ver que isso realmente não funciona Queremos alguns valores menores aqui. Mas para o usuário, é melhor trabalhar com esses valores inteiros Então, para calcular esse comprimento, podemos usar o nó MF e podemos simplesmente dividir uma constante por essa resolução, que significa que se aumentarmos essa resolução, isso tornará essa divisão menor ou o resultado será menor, e a geometria terá mais pontos Então, se usarmos 0,5, por exemplo, você pode ver que agora, quando a resolução está definida como um, os passos entre os pontos são 0,5. Mas se definirmos como, por exemplo, dez, os passos entre os pontos serão 0,05 Então, por enquanto, vou deixar assim, e podemos trabalhar no deslocamento com texturas de ruído Para fazer isso, usaremos um nó simples de posição definida. Então, vamos adicionar isso. E usaremos essa entrada de deslocamento com a qual você pode deslocar a árvore em todas as direções Se agora adicionarmos textura de ruído, por exemplo, essa cor gera vetor tridimensional com valores de 0 Se conectarmos isso diretamente ao offset, você já pode ver que ele faz algum tipo de deslocamento E se brincarmos com a balança, você pode ver que a árvore está muito melhor agora O problema é que a raiz da árvore não está em 000, então esse é o primeiro problema, e a árvore inteira meio que se move nessa direção. Tudo isso por causa dessa cor, que nos dá apenas vetores positivos, e também queremos alguns vetores negativos Para mudar isso, podemos usar um intervalo de mapas e podemos remapear esse vetor porque a cor é vetorial de 000111 a negativos a uns. Isso fará com que esse vetor também nos forneça alguns valores negativos. E se conectarmos isso ao offset, agora você pode ver que a árvore está quase centralizada, e isso se fixa um pouco Mesmo assim, o centro não está exatamente em zero, zero, zero. Para mudar isso, podemos usar um dos atributos que estamos armazenando, que é o comprimento. Se observarmos o comprimento, você pode ver que o comprimento é zero aqui no centro ou na raiz e está aumentando em direção aos galhos. Podemos usar esse valor para multiplicar esse vetor, o que resultará em que esse ponto ficará em zero, zero, zero, porque se multiplicarmos o vetor aqui por zero, será E à medida que formos em direção aos galhos, ele será multiplicado por um Então, se pegarmos esse comprimento e multiplicarmos esse vetor por ele, podemos usar uma escala para isso Isso resultará em algo assim. Você pode ver que os galhos nas extremidades estão realmente distorcidos, mas esse vetor ou rosa, o ponto de partida, ainda está em zero, zero, zero Os galhos aqui estão muito deslocados porque o comprimento é muito maior E queremos que esse multiplicador seja um no máximo. Então, para isso, podemos usar um grampo que fixará o valor em algum intervalo Portanto, se for maior que o máximo , voltará ao máximo. Então, se fixarmos em 0-1, você pode ver que agora isso parece muito melhor Também podemos visualizar isso, e você pode ver que esse valor de fixação multiplica esses vetores Mas quando está em algum lugar aqui, eles já são os originais e são multiplicados por um Agora isso parece relativamente bom, e queremos ser capazes de controlar o quanto esses pontos estão distorcidos Para fazer isso, podemos multiplicar esse valor fixado por alguma constante Então, vamos multiplicar. E conecte-o à escala. Agora, se eu brincar com esse valor, você pode ver que posso alterar o quanto o ruído afeta o deslocamento dos pontos O segundo perímetro, que também podemos controlar é muito importante, é a escala do ruído Portanto, se você brincar com o ruído e diminuí-lo, verá que a árvore tem uma distorção muito mais suave E se configurarmos para algo maior, você pode ver que é muito duro e muito detalhado. Para obter os melhores resultados, é muito bom combinar algumas dessas texturas de ruído Então, vamos combinar dois deles e vamos querer usá-los de forma que o primeiro tenha uma escala muito baixa, e crie um deslocamento como esse, para que os galhos fiquem muito lisos, e então aplicaremos outra textura de ruído que terá uma escala muito maior e adicionaremos esses detalhes ásperos Assim, podemos reutilizar a configuração mais uma vez e apenas somaremos esses valores. Os valores que queremos controlar são esse valor de multiplicação e essa escala Então, vamos adicionar algumas entradas de grupo. Eu pressionarei N e adicionarei um novo painel que chamarei de deslocamento E vou adicionar entradas para essa primeira textura de ruído. Portanto, a primeira entrada será escala de ruído um e a potência de ruído um. E vou definir o padrão para algo como 0,25 e a potência também 0,25, podemos testar aqui como fica . Talvez seja muito pequeno. Vou ajustar a potência para um. E agora, para a segunda textura que você usará, podemos simplesmente duplicá-las e eu renomeá-las para Para este, usarei uma escala de, digamos, um, e a potência de ruído dois terá um valor padrão. Mas 0,25, por exemplo. Agora vamos ao modificador e também redefini-los para seus valores padrão E podemos conectar essas entradas a essa primeira configuração. Então, vou abrir a entrada do grupo e conectar essa escala de ruído um à escala e potência de ruído um a essa multiplicação. Eu quero duplicar a configuração, então vou selecionar esses nós e pressionar Control G, e vou renomear essas entradas Essa escala é ótima e a segunda será Power. E podemos chamar isso de deslocamento de ramificação do grupo de nós. E como queremos adicionar mais um deslocamento, vou duplicar isso e usar diferentes escalas e potências diferentes Para combiná-los, podemos simplesmente adicionar esses vetores Então, vamos adicionar adição e inserir esse vetor resultante em offset Agora, se eu for para Modifier, você pode ver que podemos controlar os impactos dessas duas texturas, e podemos obter alguns resultados muito interessantes Para garantir que essas texturas de ruído não sejam as mesmas, podemos alterar esse tipo de textura de ruído para quatro D e usar esse perímetro W, que é algo como Então, vou conectar esse W na entrada do grupo e movê-lo para cima. E agora, fora desses grupos de nós, vou usar o conjunto. E, novamente, obteremos alguns valores diferentes desse assento com o nó Ed multiplicado Então, vamos adicionar, multiplicar e. Então, primeiro, novamente, podemos usar apenas alguns valores aleatórios. E eu vou aplicar este primeiro a este W e o segundo você pode realmente usar apenas alguns valores aleatórios e eles provavelmente terão valores diferentes para cada assento. Eles conectarão isso ao segundo W. Podemos ocultá-los e também ocultar novos circuitos com o Controle H. Agora, à medida que trocamos o assento, os assentos das texturas de ruído também mudarão Para finalizar, podemos selecionar todas essas notas e chamá-las de deslocamento Também nesta parte anterior, podemos chamá-la de resolução. 10. Geração de malha: Bem-vindo de volta às três árvores D com nós geométricos do Blender Nesta lição, começaremos a gerar a malha real de nossa árvore e também adicionaremos alguns mapas UV básicos. Então, vamos aos nós Geometri. E a primeira coisa é que para gerar uma malha a partir de curvas, usaremos uma curva para nó da malha, para que possamos adicionar isso E para o perfil, usaremos um círculo curvo por enquanto porque queremos que seja circular. Agora, se inserirmos essa curva na curva do perfil e diminuirmos o raio, você pode ver que não temos uma malha muito boa, mas temos uma malha realmente básica em torno de nossa estrutura de curva Por enquanto, também podemos verificar essas tampas de preenchimento para que as pontas sejam preenchidas E a primeira coisa que faremos é brincar com o raio da curva Se adicionarmos um raio de curva definido, você pode ver que, com essa nota, podemos controlar o raio de cada ponto e controlá-los separadamente, que é muito poderoso Então, para nossa árvore, queremos que o raio aqui no início seja algo em torno de um, por exemplo, e aqui no final, queremos que esteja em algum lugar em torno de zero, então ele diminuirá à medida que avança ou se aproxima das pontas dos galhos Para obter esse valor, podemos usar nosso atributo de comprimento que estamos capturando. Então, se visualizarmos nosso comprimento, você pode ver que é zero aqui e está aumentando nas extremidades dos galhos O problema aqui é que os valores são muito altos. Aqui no final está algo como 6,9, mas o valor ideal seria apenas um, e então podemos simplesmente inverter esse atributo Então, para remapear esse comprimento de zero para 6,9 ou qual é o valor Podemos simplesmente pegar o comprimento máximo desses galhos e dividir o comprimento por isso. Então, por exemplo, se o comprimento máximo nesses galhos fosse sete aqui, neste ponto, seria algo como 0,95 ou algo parecido, e é isso que estamos procurando Então, para obter o comprimento máximo dessas ramificações, podemos usar estatísticas de atributos. Então, vamos adicionar uma nota estatística de atributo. E queremos estatísticas desse tamanho. Então, vamos conectar esse atributo de comprimento ao atributo, e queremos pegar esse máximo. Agora, para converter esse comprimento para o intervalo de zero a um, podemos simplesmente dividi-lo por esse máximo. E se agora visualizarmos isso, você verá que aqui no final está algo como 0,99, e aqui no início, está em algum lugar em torno de zero Então é exatamente isso que estamos procurando. O único problema agora é que, se você der uma olhada nas raízes, os valores nas extremidades não são realmente um, mas são 0,27 e assim por diante E isso porque os galhos aqui no topo são muito mais longos do que as raízes. Mas as raízes também estão usando o comprimento máximo dos galhos Então, precisamos separar essas duas partes e calcular esse fator separadamente. Para isso, vamos mover esse cálculo para o sistema de ramificações, e isso separará essas duas partes. Então, vou excluir esses nós aqui e vou para o sistema de ramificação, e podemos calcular esse fator no final da zona de repetição. Então, aqui na zona de repetição, no final da zona de repetição, adicionaremos o nó estatístico do atributo e usaremos um atributo de comprimento E basta dividi-lo pelo máximo. Então, a mesma coisa que fizemos antes. E aqui podemos simplesmente armazenar esse valor em outro atributo. Então, adicionarei um atributo chamado loja e o chamarei, por exemplo, fator de comprimento e conectarei esse resultado a esse atributo. Agora, se voltarmos ao final de nossa configuração e visualizarmos esse fator de comprimento, você pode ver que agora os galhos ainda têm 0,99, mas as raízes também têm algo em torno de 0,807, e estão muito Então, isso é bom. E, por exemplo, agora, se conectarmos esse atributo aos rádios, você verá que os galhos são finos aqui no início e mais grossos nas pontas dos Queremos inverter isso e queremos a espessura máxima no início e mínima nas extremidades Então, para inverter isso, podemos simplesmente pegar o nó matemático e subtrair esse valor de Então, algo assim. Agora você pode ver que os galhos ou a raiz são a parte mais grossa aqui E à medida que vamos até o final, eles ficam cada vez mais finos Depois, você também pode controlar o raio geral com o raio do círculo da curva, e está muito bonito Atualmente, a queda é linear. Então, se desenharmos um gráfico aqui, e aqui no eixo y estará o raio, e no eixo X estará o fator de comprimento Vou apenas marcá-lo como aqui. Atualmente, onde o fator de comprimento é zero, o raio é um e onde o fator de comprimento é um, o raio é Então, parece algo assim. Em alguns casos, podemos querer que os galhos fiquem mais finos no início da árvore Então, queremos que a curva seja mais ou menos assim. Ou, por outro lado, queremos que fiquem mais grossos por mais tempo à medida que avançamos até as pontas Então, queremos que fique assim. Para controlar isso, podemos usar, por exemplo, curva flutuante, onde podemos fazer exatamente algo assim Então, se adicionarmos uma curva flutuante após essa, podemos simplesmente brincar com esse valor Agora você pode ver que, se eu colocá-lo sob a função linear, você pode ver que os galhos são mais finos e, se eu colocar aqui, eles são mais grossos O problema aqui é que não podemos realmente controlar essa curva flutuante fora desse grupo de nós ou fora desse modificador Então, precisamos encontrar uma maneira diferente de fazer isso. Então, a maneira como faremos isso é usar a função X para A, onde X é o fator ou nosso fator de comprimento e A é variável de entrada que pode ser controlada pelo usuário. Aqui está visualizado Então, quando o A ou o expoente é definido como um, a função é linear Mas se eu definir para algo menor que um, você pode ver que a função é mais parecida com isso, que significa que os galhos ficarão mais grossos E se for maior que um, você pode ver que está abaixo da função linear, o que significa que eles serão mais finos Então, para implementar isso no blender, podemos simplesmente pegar esse valor e usar um Bower e o expoente será o Então, se definirmos como um, você pode ver que temos os mesmos resultados que obtemos com a função linear. Se eu configurá-lo para algo menor que um, eles são mais grossos e, se for maior que um, você pode ver que eles são mais finos 11. Mapeamento e refinamento de UV: Olá, bem-vindo de volta às três árvores D com varetas de geometria do liquidificador Você pode ir até mais de dois e obter um gradiente ainda melhor Mas isso depende, provavelmente vou definir valor máximo para algo como três e deixá-lo assim. Então, para adicionar alguns controles, abrirei o menu do site e a primeira coisa que adicionarei é o raio geral Que controlará o raio desse círculo curvo. Vou definir o valor padrão como 0,15, e o segundo será a queda do raio, que será esse Então, vou adicionar uma nova entrada e chamá-la de queda de raio. O subtipo, vou configurá-lo como ator porque estará em uma faixa pequena, então você pode usá-lo Defina Padrão como um e defina-o como 0-3. Para usar essas entradas de grupo, vou apenas conectá-las a partir da entrada do grupo Também o raio do círculo da curva. Agora, se eu for para o modificador, você pode ver que agora eu posso controlar o raio dessas curvas e sua queda Também podemos definir esses valores separadamente para galhos e raízes. Então, a melhor maneira seria colocar esses controles também no sistema de ramificação, mas vou ficar com esta versão. Então, para limpar isso um pouco, vou mover esse raio aqui e agora podemos chamar esse grupo de nós de raio porque estamos controlando o raio Agora, a próxima coisa que ainda não estamos controlando é essa resolução. Uma maneira seria simplesmente editar a entrada do grupo, mas podemos fazer isso de forma um pouco mais inteligente Podemos simplesmente usar essa entrada de resolução, que já temos, e calcular quantos pontos o círculo da curva deve ter. Então, para a resolução, estamos calculando aqui. E com essa divisão, temos um deslocamento entre dois pontos Então, vou apenas duplicar isso com Shift D e pai com TP, para não fique dentro da moldura e basta movê-lo aqui para a frente E, basicamente, o círculo curvo se parece com isso, e sabemos qual é o raio que ele tem Então, conhecemos esse valor de R e precisamos calcular quantos pontos ele terá. A informação que também conhecemos é o espaçamento entre os pontos dessa divisão Então, sabemos, vou desenhar um monte de pontos aqui, algo assim. E sabemos quanto tempo essa lacuna deve durar. Vamos chamá-lo de G como lacuna. E para calcular o número de pontos que cabem aqui, podemos simplesmente usar que o comprimento do círculo é duas vezes o raio Isso nos dará todo o comprimento. E se dividirmos por essa lacuna, devemos obter o número de pontos que precisamos criar. Então, vamos calcular isso. apenas multiplicar esse raio por dois Pi assim e depois dividi-lo por esse valor de lacuna, que está E se você inserir isso na resolução, verá que o valor que obtemos é 17,6, ele é arredondado automaticamente, então não precisamos arredondar esse E agora, se dermos uma olhada na geometria e, por exemplo, diminuirmos a resolução, você também pode ver que ela diminui o número de pontos automaticamente, e não precisamos nos preocupar com isso Tudo bem, então a última parte será gerar os UVs. Para gerar o mapa UV, precisaremos de duas variáveis. Um deles aumentará em direção às pontas dos galhos, e o segundo precisará contornar os galhos, gerando nossas coordenadas de textura. Então, primeiro, para este, podemos usar nosso atributo de comprimento porque já o calculamos e ele deve ser calculado corretamente. Então, podemos simplesmente usar este. E para o segundo eixo, podemos usar um fator dessa curva que você está usando para o perfil. Então, se você olhar para esse círculo e usar um perímetro simples, que inclui o fator, você pode ver que esse fator está indo de 0 a 1 ao redor do círculo, e podemos usar esse valor para o UV Portanto, precisamos capturar esse atributo usando antes de gerar a malha. Então, vamos adicionar o atributo de captura e vamos querer capturar esse fator para cada ponto. E agora, depois da malha, precisamos criar os UVs Então, vamos adicionar um atributo chamado loja. Os UVs são um tipo de vetor e são armazenados para cada canto de fase, então vamos configurá-los assim O nome será UV map. E o valor será um vetor. Então, vamos combinar XYZ. E para o valor X, podemos usar esse fator, e para o valor Y, usaremos esse comprimento. Se agora visualizarmos isso, você pode ver que temos bons UVs para a árvore E o único problema é que, se você olhar para esta parte aqui, você pode ver que aqui é zero e aqui está um e está girando. Mas então há uma rápida transição de volta ao zero. Para evitar isso, precisamos fazer isso de forma um pouco diferente. O problema que estamos enfrentando é que se visualizarmos o fator de círculo, podemos simplesmente usar isso e eu apagarei Você pode ver que o valor é zero no ponto inicial. E no último ponto, é algo como 0,9 grátis, e então está rapidamente indo para o zero. O que precisaríamos é ter um aqui também nessa direção e zero aqui nessa direção. Para obter isso, em vez do círculo curvo, podemos usar espiral, que não é uma curva fechada, mas tem dois pontos nessa posição Então, vamos adicionar uma espiral curva. Vamos usar nossos valores calculados. Portanto, para a resolução, usaremos o mesmo valor. Rotações, queremos apenas uma rotação, então vamos configurá-la para uma O raio inicial e final será o mesmo. Então, vamos inserir o raio em ambos desta forma e não queremos que eu apenas visualize Não queremos que a curva tenha altura, então vamos definir a altura como zero. Agora você pode ver que essa curva na verdade tem um e zero neste ponto. Na verdade, existem dois pontos e eles se sobrepõem. E se usarmos essa espiral em vez de um círculo curvo, obteremos resultados muito melhores Agora você pode ver que aqui nesta costura há uma transição difícil, há uma transição difícil que significa que os mapas UV estão corretos Então, vou deletar esse círculo curvo. Mas agora temos outro problema aqui nesta posição, há pontos que se sobrepõem Podemos verificar que, se passarmos o mouse sobre essa saída, haverá 35.000 vértices E se usarmos mesclado por distância agora, existem apenas 32.000 vértices Portanto, há muitos vértices sobrepostos que precisamos mesclar Se agora olharmos para o mapa UV com o visualizador, este, você pode ver novamente que temos essa transição difícil que não queremos aqui ou essa transição rápida de 1 a 0 E para corrigir isso, substituiremos esse atributo de sobrenome apenas pela captura desse vetor Então, vou remover isso e adicionar um atributo de captura. Queremos capturar esse vetor que armazena nosso mapa UV, e o importante é usar um canto facial. Agora, se visualizarmos esse mapa UV após a fusão por distância, você pode ver que agora ele está funcionando corretamente e, como está após a fusão por distância, os pontos sobrepostos desaparecem Então, para finalizar isso, vamos armazenar esse atributo no canto da face e chamá-lo de mapa UV, e vamos apenas conectar esse atributo capturado a ele. Agora nossos mapas UV estão concluídos e podemos selecionar todas essas notas e chamá-las de malha mais UVs, por exemplo Agora, para verificar se funciona com alguns materiais, podemos usar nossos materiais, que você obterá gratuitamente. Então, para anexar esses materiais ao arquivo de mistura, podemos anexar, encontrar o arquivo com os materiais, e deve haver no material, há dois Há casca de carvalho e casca de secura, então podemos acrescentar as duas E agora, quando adicionamos material definido, e se definirmos um desses materiais, você pode ver que temos bons materiais em nossa árvore. Para finalizar, adicionaremos material às entradas do nosso grupo. Então, vamos clicar para abrir o menu do site e adicionarei uma nova entrada, que chamarei de material e digitarei dois materiais. E usaremos esse material apenas para inserir grupos em nossas filiais. Mais uma coisa que você pode querer controlar é a escala desses mapas UV. E podemos fazer isso escalando esse vetor aqui antes de armazená-lo Então, se adicionarmos uma escala e brincarmos com ela, você pode ver que, se eu aumentá-la, as texturas têm mais resolução ou são menores, e você também pode controlar isso Então, adicionarei mais uma entrada, que será a escala de UV, definirei o valor padrão como um e o mínimo como zero, e conectarei essa escala de UV à escala. Agora, se configurarmos como um, você pode ver que podemos controlar muito bem escala do nosso material e alterá-la com muita facilidade 12. Noções básicas de distribuição de folhas: Bem-vindo de volta às três árvores D com nós de geometria do Blender Nesta lição, começaremos adicionando folhas à nossa árvore e adicionaremos três opções diferentes para distribuí-las. Portanto, os três tipos de distribuição dos saltos que implementaremos já foram explicados em uma das primeiras lições, mas vou abordá-los rapidamente novamente. Então, o primeiro distribuirá folhas por todos os nossos galhos, então elas estarão em todos os lugares aqui nos galhos O segundo tipo será do final, o que significa que vamos apenas pegar esses galhos e usar algum valor limite para controlar a que distância das pontas as folhas ainda estarão Essa opção oferece, na minha opinião, os melhores resultados, e a última opção será controlada pelo eixo Z mínimo ou pela posição Z. Portanto, definiremos um valor limite e distribuiremos as folhas apenas nas ramificações ou nos pontos que estão acima desse valor limite Para começar, precisaremos de algumas folhas nas quais você testará nossa configuração, e você poderá encontrá-las no arquivo que você obterá gratuitamente com o discours Vou para o arquivo, acrescentar, no arquivo com os objetos, vamos para a coleção, e há poucas coleções, e vou incluir todas elas exceto esta coleção. Não precisamos desse. E se clicarmos em Anexar você verá que isso adiciona vários objetos à nossa cena, e eles estão bem organizados nessas coleções Existem duas coleções principais de carvalho e sacara Para cada um deles, existem algumas folhas diferentes. Portanto, para o carvalho, existem três tipos de folhas e também o material que aplicamos na lição anterior. E para a sacara, existem dois tipos de folhas. Há um florido e nenhum florescido. E a última, há pétalas de flores que podemos usar posteriormente, por exemplo, para o sistema de partículas Então, por enquanto, vou apenas esconder essas duas coleções e começar a distribuir algumas folhas Vamos aos nós de geometria. E a maneira como escolheremos entre os três tipos que serão explicados será por meio do menu. Então, vamos abrir um painel do site e, primeiro, adicionarei um novo painel, que chamarei de folhas. E para escolher entre esses três tipos diferentes, entrarei na entrada, que terá um tipo de menu. Vou chamá-lo de onde porque ele controlará onde as folhas estão desovando. E se agora formos para o Modificador, você pode ver que esse menu suspenso não tem nenhuma opção Para adicionar opções, precisamos conectar essa entrada de grupo a algum tipo de nó de menu. Para fazer isso, podemos adicionar uma opção de menu, que é basicamente um nó onde você pode adicionar várias opções e depois controlá-las com esse socuit de menu Então, vou apenas conectar essa entrada de ware a essa opção de menu. E para editar essas opções, clicaremos nessa opção de menu e acessaremos o Node tap. E aqui podemos editar todas as opções. Então, a primeira opção serão filiais. O segundo será do final e o terceiro será Min Z para a posição Z mínima. Agora, essa opção de menu pode alternar entre essas três entradas de geometria E a maneira como faremos isso é criar, para cada tipo, uma curva na qual queremos distribuir as folhas e, em seguida, usar essa saída, que será escolhida com essa mercadoria e distribuirá as folhas nessa curva Também podemos verificar isso no modificador, agora temos essas três opções Podemos escolher qualquer um deles, e ele deve escolher uma dessas entradas Então, para criar as curvas de base, usaremos as curvas de nossa árvore, e eu as usarei após o raio porque precisaremos dessa informação de raio posteriormente ao Então, vamos pegar essas curvas, e a primeira opção que temos aqui são os galhos Isso significa que queremos apenas curvas que sejam ramificações e precisamos excluir todas as outras. Então, vamos adicionar a geometria de exclusão. E agora, para descobrir quais curvas são ramos e quais não, podemos, por exemplo, usar atributo comprimento, que temos aqui, e quando o comprimento é maior que o comprimento do tronco porque o comprimento do tronco está apenas no tronco, e então os comprimentos são Portanto, quando o comprimento for maior que o comprimento do tronco, devemos pegar apenas os galhos. Precisa do oposto. Portanto, se excluirmos todos os pontos em que o comprimento é menor que a altura do tronco, devemos obter os galhos. Então, vamos nomear o comprimento do atributo. E se for menor que a altura do tronco, também podemos visualizar isso, e você pode ver que todos os galhos abaixo do tronco são brancos Mas o problema é que algumas das raízes aqui não são colhidas. Isso porque seu comprimento é maior que a altura do tronco e não queremos folhas nas raízes. Então, para corrigir isso, também podemos aqui nesta haste de galhos, armazenar informações se essas curvas são raízes ou não Então, para isso, adicionarei uma loja chamada conjunto de atributos tipo dois Bolin e a chamarei de raízes E para aqueles de cima, esses são meus galhos. Então, vou configurá-lo para cair. E para aqueles inferiores que são na verdade raízes, vou defini-lo como verdadeiro. Agora, se formos até esse fim, escolheremos basicamente onde o comprimento é menor que a altura do tronco ou se eles são raízes. Então, usaremos raízes de atributos nomeadas. E se isso for verdade, também queremos excluí-los, e isso deve nos dar uma seleção melhor. Agora, você pode ver que todas essas raízes, incluindo o tronco, são brancas, o que significa que ele excluirá todas essas partes. Então, se agora visualizarmos isso, você pode ver que só temos essas ramificações Isso significa que temos a primeira opção pronta e podemos conectá-la às filiais. E agora, se produzirmos isso, agora temos ramificações selecionadas, então temos ramificações. Mas se selecionarmos outra coisa, elas estarão vazias. Então, vamos fazer isso também. Para a opção from end, usaremos novamente a geometria DD E queremos excluir todos os pontos em que o comprimento da extremidade é maior do que algum limite Então, para isso, precisamos adicionar essa entrada de limite. Então, vou adicionar uma nova entrada a esse grupo e chamá-la de comprimento a partir do final. E vou definir o valor padrão como, por exemplo, um, e também redefini-lo aqui. E agora, se pegarmos o comprimento do atributo nomeado do final, desejaremos excluir todos os pontos em que o comprimento da extremidade é maior do que esse comprimento da extremidade da entrada do grupo ou se houver raízes. Novamente, adicionaremos isso ou valor com raízes. E agora, se observarmos isso, você pode ver que só temos extremidades das ramificações e podemos controlá-las com esse perímetro de entrada de grupo Então, essa parte também está pronta. E agora a última parte é o eixo Z mínimo. Então, para este, também precisaremos de um perímetro. Então, vamos adicionar uma nova entrada e chamá-la de Min Z. E, novamente, usaremos a geometria de exclusão e excluiremos todos os pontos que têm posição no eixo Z abaixo desse limite Então, tomaremos posição. Obteremos apenas a posição Z separando XYZ e, se forem menores que a entrada Z principal, as excluiremos Então, ficará assim. E podemos conectar essa terceira opção a essa opção de menu. Agora, se brincarmos com essas opções, devemos obter esses três tipos de curvas nas quais distribuiremos as folhas Além disso, uma dica rápida: se você tiver algumas rotas traseiras abaixo outra e quiser alinhá-las, basta selecioná-las e clicar na escala X no eixo X e zero, e isso as alinhará no eixo x a uma Também podemos agrupar esses nós com o Controle J, e vou chamá-lo de curvas de folhas 13. Colocação avançada de folhas: Olá, e bem-vindo de volta às árvores D gratuitas com nós de geometria do Blender E agora vamos começar a gerar algumas folhas nessas curvas. Então, para criar as folhas, usaremos instâncias em pontos. Mas primeiro, precisamos distribuir pontos ao longo dessas curvas. A melhor maneira de distribuir pontos aleatoriamente em curvas é criar vários pontos e, em seguida, amostrar a curva com fator aleatório, e isso os distribuirá Então, primeiro, vamos adicionar alguns pontos. Vou adicionar, por exemplo, 200 deles por enquanto. E como deposição, usaremos uma curva de amostra. Então, vamos amostrar essas curvas. Queremos amostrar todas elas para que possamos verificar todas as curvas, e agora podemos simplesmente controlar esse fator Para cada ponto, queremos que esse fator seja aleatório. Então, vamos adicionar um valor aleatório de 0 a 1, conectá-lo ao fator. E agora, se você inserir essa posição nesses pontos, verá que os pontos devem ser distribuídos apenas nas ramificações. Você pode ver que elas são alteradas dependendo de como definimos essas curvas Mas o problema agora é que na verdade não sabemos quantos pontos queremos porque às vezes as peças são muito pequenas e não queremos muitas folhas em um só lugar. E às vezes haverá curvas longas, e não queremos grandes lacunas entre elas, e queremos um bom número de pontos aqui Para calcular um grande número de pontos, podemos simplesmente pegar o comprimento total de todas essas curvas com o comprimento da curva Então esse nó nos dá o comprimento total de todas essas curvas E agora, se adicionarmos uma nova entrada que podemos chamar, por exemplo, densidade, podemos simplesmente pegar esse comprimento e multiplicá-lo pela densidade Isso fará com que, independentemente do comprimento das curvas, sempre haverá uma densidade similar das folhas Então, se o comprimento for algo menor, haverá apenas alguns pontos, e quando for algo alto, o comprimento, haverá muitos pontos. Se conectarmos essa multiplicação para contar agora e definirmos a densidade como dez, você pode ver que há muitos pontos Mas se diminuirmos ou eu configurá-lo para o final, você verá que os pontos estão sempre relativamente bem distribuídos Tudo bem Então, agora nossos pontos estão bem distribuídos Também podemos agrupar isso e chamá-lo de distribuir folhas pontuais, desculpe, pontos foliares. E agora podemos finalmente colocar algumas folhas nesses pontos. Então, com isso, adicionaremos instâncias em pontos. Para os pontos, usaremos os pontos que distribuímos. E para as instâncias, vamos querer usar algumas das coleções que anexamos do arquivo Para isso, adicionaremos uma nova entrada onde adicionaremos a coleção. Então, vamos adicionar a coleção e definir a coleção Tipo dois. Também vou movê-lo para o painel. E defina alguns valores aqui. Então, eu vou, por exemplo, colher as folhas de sakura E agora, para distribuir essas folhas da coleção, podemos simplesmente retirar as informações da coleção. Para a entrada, usaremos a coleção da entrada do nosso grupo. Queremos separar e redefinir as crianças. E podemos conectar essas instâncias aos pontos. Você pode ver que agora todas as folhas estão voltadas para a mesma direção e também todas as folhas estão em cada ponto. Então, só queremos escolher um. Então, por meio disso, podemos verificar essa instância pi. E também queremos girar um pouco essas folhas. Portanto, a maneira mais simples seria criar um valor aleatório ou vetor aleatório de 0 a 2 Pi E se o conectarmos à rotação, teremos algumas folhas relativamente bonitas. Se agora combinarmos isso com nossa geometria de ramificação, você pode ver que pode haver vários problemas Vou definir as densidades para algo menor, que fique um pouco mais visível e também definirei o raio cheio de algo abaixo de Provavelmente não é a árvore que você deseja criar, mas quero mostrar um pequeno problema que temos, certo? Então, por exemplo, nesta curva aqui há uma curva, e estamos instanciando os pontos diretamente nessas curvas O problema é que a malha não está nessas curvas, mas está ao redor dela porque estamos usando uma espiral ou curva para criar um perfil ao redor dela, e queremos que as folhas cresçam nessa malha e não nas Então, para corrigir isso, precisamos deslocar isso, deslocar esse ponto pelo raio dessa curva Portanto, as folhas realmente crescem na superfície e não no interior da malha. Então, para fazer isso, antes de os pontos instanciarem as folhas nos pontos, também definiremos a posição desses pontos e precisaremos calcular raio dessa curva no ponto distribuído Então esse será o valor que também estaremos amostrando. Então, vou adicionar o raio. E agora esse valor é o raio em um determinado ponto. E se dermos uma olhada nesse desenho, cada curva tem alguns vetores Uma delas é a curva tangente, que está na direção da curva, e a segunda é a curva normal, que é a direção perpendicular à Então, se pegarmos essa curva normal e a escalarmos pelo raio, devemos obter um deslocamento correto para os Portanto, se você conectar esse ponto ao deslocamento, o importante também será multiplicado pelo raio geral da Então, vamos multiplicá-lo pelo raio da entrada do grupo. E agora a folha é que você pode ver que está na superfície da malha. Não está apontando na direção certa. Deveria ser algo assim. Estamos quase lá. Para randomizar ainda mais, pegaremos o vetor normal e o rotacionaremos por um valor aleatório Então, se visualizarmos isso, temos a ramificação, e ela tem uma curva tangente e também a curva normal Nessa direção, estamos deslocando as folhas, mas agora isso afetaria que todos os pontos fossem deslocados na mesma direção, mas queremos randomizar isso, então alguns deles estarão nessa, alguns deles nessa e nessa Então, para randomizar isso, podemos pegar esse vetor normal que escalamos pelo raio e usar uma rotação vetorial ou rotação vetorial O centro será 00, zero e o eixo será a tangente porque esse é o eixo em torno do qual estamos girando E para o ângulo, podemos simplesmente escolher um valor aleatório. Então, vou adicionar um valor aleatório e colocá-lo em 0,22 Pi. E se você conectar esse vetor resultante ao offset, os pontos devem ser distribuídos ainda mais aleatoriamente Agora, vou limpar um pouco essa matemática. Então, algo assim. E também devemos sempre conectar a semente aos nossos valores aleatórios. Então, vou conectar a semente da entrada do grupo a esse valor aleatório e também a semente a esse valor aleatório. Agora, se colocarmos o fluxo do raio de volta em algo mais razoável e definirmos a densidade em algo como dez, você pode ver que temos uma distribuição muito boa das folhas Também podemos trocar folhas diferentes com muita facilidade porque existe essa coleção e está tudo funcionando bem Uma última opção ou um último perímetro que queremos adicionar é que queremos poder controlar a escala dessas folhas Então, vamos adicionar mais duas entradas. Um deles será a escala, padrão é um, e o segundo será a aleatoriedade da escala A escala será controlada simplesmente aqui, onde estamos instanciando folhas nos pontos E a maneira como geraremos isso é simplesmente criar um valor aleatório e usar a entrada do grupo, e o mínimo desse valor aleatório será escala menos aleatoriedade, e o máximo será escala mais Portanto, você pode simplesmente conectar esses dois valores ao valor aleatório e também à semente. E agora, se você inserir esse valor aleatório na escala e defini-lo como valores padrão, você pode ver que também temos algumas variações aqui. Se também verificarmos todos os três tipos de folhas, seja, galhos, as folhas estão por toda parte. No final, podemos controlar a distância das pontas dos galhos as folhas e também podemos controlar o mínimo de Xs, o que pode ser útil em alguns tipos de árvores Tudo é processual, então podemos brincar com a semente e sempre obtemos uma árvore bem diferente 14. Sistema básico de partículas: Bem-vindo de volta às árvores D gratuitas com os nós de geometria do Blender. Adicionaremos mais um detalhe à nossa árvore, e será um sistema de partículas muito simples que simulará a queda de folhas de nossos galhos Nesse caso, usaremos novamente objetos do ativo gratuito que você receberá gratuitamente com este curso e, nesse caso, usarei aquelas pequenas folhas seguras, que serão perfeitas para esse uso Então, como isso realmente funcionará, primeiro, usaremos zonas de simulação dentro dos nós geométricos, que nos permitirá simular essas folhas caindo e algum tipo de física Então, a primeira coisa que precisamos fazer é adicionar alguns pontos à nossa geometria Então, usaremos técnica semelhante à usada para distribuir folhas Usaremos as mesmas curvas, mas vamos apenas exemplificar alguns pontos simples como este E então, na zona de simulação em cada quadro, nós os moveremos um pouco para baixo, para que pareça que estão caindo e também adicionaremos algum ruído, para que não sejam apenas folhas caindo retas, mas elas tenham algum movimento ou algo parecido. Então, vamos aos nós de geometria, e eu adicionarei os pontos aqui embaixo da estrutura da folha O importante é que pequenas partículas caiam das folhas para as quais já temos aquelas curvas nas quais elas são geradas Então, reutilizaremos essas curvas e distribuiremos alguns pontos nelas. Então, usaremos a saída dessa opção de menu, que é selecionada por esse atributo, e usaremos técnicas semelhantes às das folhas. Então, adicionaremos uma curva simples e amostraremos curvas aleatórias a partir delas e apenas atribuiremos essas posições a Por enquanto, adicionarei pontos no nó, e digamos que queremos adicionar quatro pontos em cada quadro, então definirei a contagem como quatro. E agora precisamos verificar todas as curvas porque queremos amostrar todas elas, e o fator será um valor aleatório Então, vamos adicionar um valor aleatório de 0 a 1 e conectá-lo ao fator. Agora, se conectarmos a posição ao nó de pontos e visualizarmos isso, você verá que temos alguns pontos aqui e podemos alterar o assento com o atributo assento Para simular a queda, precisaremos da zona de simulação Então, vamos adicionar a zona de simulação. E isso é muito parecido com a zona de repetição. Portanto, tem alguma entrada de geometria. Em seguida, ele faz algumas coisas entre esses dois nós. Nesse caso, isso é feito para cada quadro e, em seguida, há essa geometria de saída Então, em cada quadro, queremos adicionar quatro novas folhas aos nossos pontos de queda, e faremos isso unindo esses quatro pontos a essa geometria existente Então, vamos adicionar geometria de junção e juntaremos esses quatro pontos Agora, se produzirmos essa zona de simulação, reproduzirmos a animação, você pode ver que ainda temos apenas esses quatro pontos. Isso porque em cada quadro, esses mesmos quatro pontos são somados e eles se sobrepõem Se eu exagerar nessa saída, veremos que agora temos 404 pontos porque estamos no quadro 101 Para torná-los variáveis, precisamos controlar o assento e torná-lo diferente para cada estrutura. Assim, podemos usar o tempo da cena, que nos dá o quadro atual. E se conectarmos esse quadro ao assento e reiniciarmos a animação, veremos que novos pontos estão aparecendo a cada quadro. Eles estão gradualmente criando a forma das curvas originais. Agora, talvez você queira adicionar um número diferente de pontos para cada quadro. Então, para isso, podemos usar um valor aleatório e simplesmente inseri-lo na contagem. Mas você pode ver que isso não é possível porque a saída desse valor aleatório é campo, mas esses pontos precisam de um valor constante. Então, para contornar isso, precisamos descobrir como distribuir ou criar pontos aleatórios em cada quadro. A maneira de fazer isso é em vez desses nós de pontos que apenas criam pontos em determinada posição, podemos, por exemplo, usar pontos de distribuição nas faces onde fornecemos algum tipo de malha, e isso gerará pontos dependendo da densidade e do assento. E isso resultará em um número diferente de pontos para cada assento. Portanto, também precisamos de uma malha de entrada. Então, para isso, podemos usar qualquer malha que você quiser. Vou usar apenas a grade. E agora, se visualizarmos isso, você pode ver que essa é a grade, e há alguns pontos gerados, e em cada assento, ela gera um número diferente de pontos Se for a densidade de um, por exemplo, você pode ver que às vezes há dois pontos, às vezes apenas um e às vezes zero pontos. Então isso é muito bom. Outro problema que podemos enfrentar é que isso não depende do comprimento dessas curvas de origem, o que significa que não importa o tamanho dessas curvas, sempre geraremos o mesmo número de pontos Podemos corrigir isso controlando o tamanho dessa grade pelo comprimento da curva, o que significa que, se tivermos curvas mais longas, ela gerará uma grade maior e distribuirá mais pontos porque haverá mais espaço Então, com isso, podemos simplesmente usar um comprimento de curva e conectá-lo ao eixo X ou Y. Agora você pode ver que está gerando pontos nessa grade grande. E também podemos controlar a densidade com o segundo tamanho no eixo Y. Mas vou me limitar a um e controlaremos densidade com esse valor de densidade. Agora, quando temos o número apropriado de pontos gerados, precisamos apenas distribuí-los nas curvas Então, vamos usar apenas a posição definida. E como posição, usaremos essa posição aleatória das curvas de origem Agora você pode ver que, se eu reproduzir a animação, ela distribui pontos aleatórios em todas as curvas Certo? Agora, se eu passar pela animação, você pode ver que sempre há quatro pontos, e isso porque a sede dos pontos de distribuição ainda é a mesma. Então, vou conectar a estrutura ao assento também. E agora devemos obter alguns números diferentes de pontos. Talvez eu diminua a densidade para 2,02, e você pode ver que há três pontos, um, um, três, zero, dois, então é bem aleatório. Certo. Então, agora vamos colocar esses pontos de volta nessa zona de simulação e gerar essa. E você pode ver que estamos ganhando cada vez mais pontos à medida que reproduzimos a animação. Então, vamos dar um pouco de movimento. Para o movimento, podemos simplesmente usar uma posição definida e atribuí-la ao deslocamento em ZxS para algo como menos Agora, se você reproduzir a animação, verá que os pontos estão caindo. Isso porque ele sempre cria esses novos pontos e todos eles são movidos no eixo Z em menos 0,1. Uma coisa que devemos corrigir é que, se agora reproduzirmos a animação, você poderá ver o quão rápido elas estão caindo. Mas se eu mudar a taxa de quadros desse projeto para 60, por exemplo, você verá que eles estão caindo muito mais rápido. Isso porque esse deslocamento é em 24 FPS feito 24 vezes por segundo Mas se definirmos quadros por segundo para 60, isso é feito 60 vezes por segundo e é muito mais rápido. Para controlar isso, podemos usar esse tempo Delta, que nos dá tempo entre dois quadros. E se escalarmos um vetor por esse valor, então algo assim. E vou dizer isso para menos um em Z Xs porque esse tempo Delta é um número muito pequeno. Agora, se você reproduzir a animação, verá que ela está bem lenta. Mas se mudarmos a taxa de quadros, a velocidade não deve mudar e deve permanecer na mesma velocidade. Certo, então podemos chamar isso, por exemplo, de gravidade e precisamos ser capazes de controlar essa gravidade, então vamos querer controlar esse valor no eixo Z. Com isso, adicionarei apenas a combinação XYZ e adicionarei uma nova entrada de grupo, que controlará esse valor Z. Para os pontos, adicionarei um novo painel, que chamarei de partículas, e adicionarei uma nova entrada, que chamarei de gravidade e definirei o padrão como um. Como queremos inserir gravidade positiva, mas esse valor precisa ser negativo, primeiro multiplicaremos essa entrada de gravidade por menos um e depois a conectaremos na coordenada Z. Agora, se eu for para o modificador e redefinir a gravidade para um, desculpe, preciso configurar isso para multiplicar E agora devemos ter folhas caindo ou partículas caindo. Também posso aumentar isso e você verá que os pontos estão caindo mais rápido ou mais devagar Tudo bem. Então, agora vamos dar um pouco de aleatoriedade. Então, o que faremos é adicionar algum valor aleatório a esse deslocamento E esse valor aleatório virá da textura do ruído porque a textura do ruído nos dá um bom ruído suave, e podemos usá-lo para deslocar esses pontos Então, vamos adicionar textura de ruído. Já usamos texturas de ruído para deslocar nossa árvore, e fizemos uma coisa, que foi remapear essa cor porque isso é vetor e queremos usar esse vetor, e estávamos remapeando de zero, zero, zero, um, um, um para negativos para uns Então, obtemos o vetor, que também pode ser positivo e negativo e não apenas positivo. Então, isso nos dá um vetor aleatório. E agora, se apenas escalarmos esse vetor por alguma constante e adicioná-lo a essa gravidade, você verá que temos pontos muito loucos aqui. Vou multiplicar isso por 0,1, por exemplo, agora você pode ver que os pontos estão mais irregulares, alguns deles também permanecem no local Então, uma coisa que podemos corrigir neste rancho de mapas é que não queremos controlar esses pontos no eixo Z, mas só queremos controlar o movimento nos planos X e Y. Então, vou definir esses códigos Z como zero, e agora esse rancho de mapas só nos dará vetores aleatórios no 15. Simulações avançadas de partículas: Olá, e bem-vindo de volta ao D Trees gratuito com o Blender Você pode ver que os pontos estão caindo com a mesma velocidade e estão ondulados Se definirmos a escala para algo global, você poderá ver que alguns dos pontos estão se agrupando, e isso porque se os dois pontos estiverem próximos ou na mesma posição, o mesmo ruído será aplicado a eles e eles terão o mesmo caminho ou a mesma maneira Então, para criar uma textura de ruído diferente para cada ponto, podemos mudar isso para quatro D, e esse W é algo como CD. Então, por exemplo, podemos apenas usar o índice de cada ponto. Na verdade, esse índice não é a melhor escolha porque o índice pode mudar durante a simulação. Então, para corrigir isso, armazenaremos alguns atributos antes do início da simulação para cada ponto e depois os usaremos para diferenciá-los. Então, adicionarei o atributo chamado loja aqui após definir a posição em que estamos distribuindo os pontos E a primeira coisa que armazenaremos será algo como índice, então vou chamá-lo e será inteiro E usarei a combinação do quadro e do índice para criar um número exclusivo para cada ponto. Então, para isso, podemos, por exemplo, usar multiplicar e somar Vou multiplicar o quadro por alguma constante, digamos, 21, e adicionar o índice a isso Isso deve nos dar um número diferente para cada ponto, e podemos começar com esse atributo I. E depois, podemos reutilizar esse atributo nomeado como uma semente para esse ruído Agora você pode ver que o ruído é muito mais suave e queremos poder controlar o quanto essa textura de ruído afeta nossos pontos e também a escala dessa textura de ruído Então, vamos adicionar duas novas entradas. primeiro deles será a escala de ruído, que definirei como padrão como um e o mínimo como zero, e o segundo será a potência de ruído, que definirei como padrão como um. Ctly, se você observar a configuração, o estranho aqui é que a gravidade é escalada pelo tempo Delta, mas a textura do ruído não, e isso realmente deve ser corrigido Então, vamos primeiro somar esses dois vetores assim e, depois disso, escalaremos todo esse vetor por esse tempo Delta Agora, isso deve ser verdadeiramente independente da taxa de quadros, e vamos conectar as entradas da entrada do grupo, então vou abrir a entrada do grupo e conectar a escala de ruído a esse ruído e a potência do ruído a esse nó matemático do vetor de escala Eu também vou raciocinar esses valores. E você pode ver que temos boas partículas caindo. O problema que você pode ver é que os pontos estão sendo gerados o tempo todo, mas nunca são excluídos, que pode causar alguns problemas com a taxa de quadros pois pode haver muitas folhas e isso pode ficar muito lento Então, para corrigir isso, precisamos criar uma função que exclua os pontos após algum tempo de sua vida. Então, digamos que definimos uma vida útil de cada 0,2 segundos. Portanto, se o ponto for mais antigo ou estiver na cena por mais de 2 segundos, ele será excluído. Para isso, armazenaremos alguns atributos antes da simulação. Um deles será o início, o que nos dará a hora em que esse ponto foi criado. O tipo será flutuante. E para armazenar esse valor, usaremos apenas os segundos, que nos fornecerão os segundos atuais, e os armazenaremos no atributo start. O segundo atributo que usaremos será o tempo de vida, e isso armazenará quanto tempo esse ponto deve durar. E agora vou configurá-lo para 2 segundos. Posteriormente, podemos randomizar isso, por exemplo. Então, após a movimentação dos pontos, verificaremos se cada ponto ainda deve estar na simulação e, caso contrário, o excluiremos. Então, vamos adicionar a geometria de exclusão e agora precisamos escolher quais pontos queremos excluir Você iniciará o atributo nomeado. E para descobrir quanto tempo ele dura, vamos apenas usar a hora atual e subtrair esse início dessa hora Então, essa subtração nos dará por quanto tempo esse ponto existiu Digamos, por exemplo, que o início seja de 2 segundos e atualmente o tempo seja de 6 segundos. Isso significa que o ponto em que o ponto está vivo há 4 segundos. E quando isso for maior que o tempo de vida, vou duplicar isso e configurá-lo como tempo de vida Queremos deletar esse ponto. Então, vamos conectar esse resultado à geometria de exclusão. E agora, se reproduzirmos a animação, você verá que esses pontos na parte inferior estão sendo excluídos. Isso porque sua vida útil é maior do que o limite de vida e eles são excluídos Também podemos randomizar essa vida. Então, para isso, adicionarei duas entradas de grupo. Um deles será vitalício, definirei o padrão como dois e o mínimo como zero, e o segundo será a aleatoriedade vitalícia O que vou definir como padrão para zero. E agora, apenas a randomização clássica. Adicionaremos a entrada do grupo, e o mínimo do valor aleatório será a vida útil menos a aleatoriedade, e o máximo será a vida útil mais Então, isso nos dará o intervalo em que queremos que a vida útil seja gerada. E vamos conectar esses dois valores em um valor aleatório como esse, e também podemos definir a semente a partir da entrada do grupo. E o ID para torná-lo diferente para cada ponto, podemos reutilizar esse valor I que estamos armazenando aqui em I, e vou simplesmente colocá-lo aqui assim E isso deve nos dar um valor diferente para cada ponto. E se agora o armazenarmos durante toda a vida, sim, existem alguns problemas porque nosso tempo de vida não está realmente definido. Então, vou definir a vida útil como dois e a aleatoriedade como zero. Então, agora cada ponto deve durar 2 segundos. Mas se eu definir a aleatoriedade como um, o ponto pode durar de 1 segundo a 3 segundos. Certo? Então eu acho que nossa simulação básica de partículas está pronta, e agora a última parte para fazer folhas reais, precisamos usar esses pontos e distribuir alguns objetos neles. Então, para isso, vou usar a instância em pontos. E, conforme os casos, usaremos algumas folhas. Então, eles estarão na coleção. E precisamos primeiro criar uma entrada de grupo para isso. Então, adicionarei uma nova entrada de grupo e coleção, definirei o tipo também para a coleção e a moverei para cá. E agora vou apenas conectar essa coleção da entrada do grupo às informações da coleção. Quero separar e pesquisar crianças, inserir essas instâncias na entrada da instância e queremos que cada instância seja aleatória, então vou verificar essa grande instância Agora podemos ver qualquer coisa porque não escolhemos a coleção. E a coleção que vou usar serão aquelas pétalas de flores Então eu posso esconder isso de novo, e vou colher pétalas de flores aqui. E agora você pode ver que temos folhas muito básicas como essa. Há alguns problemas. Eles estão todos voltados para cima Então, gostaríamos de, por exemplo, randomizar essas folhas E a segunda coisa é que todos eles têm a mesma escala, então queremos randomizar isso um pouco Primeiro, vamos corrigir a rotação. E a primeira coisa que podemos fazer é conectar uma rotação aleatória a esse soquete de rotação Mas para melhorar um pouco a renderização, por exemplo, podemos girá-las de forma que estejam sempre voltadas para a câmera, e você sempre possa ver as folhas inteiras, que pode ser muito útil se forem muito pequenas, podem não estar visíveis o tempo todo Então, isso pode corrigir isso e, para descobrir a rotação, como ela ficará voltada para a câmera, primeiro precisamos fotografar o objeto para que possamos obter o objeto ativo da câmera, que nos dará a câmera ativa atual. Para obter a localização, usaremos informações do objeto e usaremos essa localização. E você pode ver que essas folhas estão sempre voltadas para o eixo Z. Então, vamos querer alinhar o eixo Z com a direção da câmera Para obter a direção da câmera, basta pegar nossa posição e subtraí-la de uma localização da câmera Com matemática vetorial. Então, isso nos dá esse vetor de direção. E agora podemos simplesmente usar alinhar a rotação ao vetor porque queremos alinhar nosso eixo Z a esse vetor, então vou conectá-lo ao vetor e à E agora, isso parece um pouco estranho. Provavelmente porque eu não tenho nenhuma câmera nessa cena, então vou adicionar uma nova câmera. E você pode ver que quando eu movo a câmera, as folhas estão voltadas para ela e eu posso verificar isso com esta. Você pode ver que, se eu olhar de qualquer ângulo, sempre consigo ver as folhas. E por último, também podemos girá-los aleatoriamente em torno do eixo Z. Então, com isso, podemos simplesmente conectar um valor aleatório a essa rotação, e eu vou usar o valor aleatório de 0-2 Pi E agora eles também devem ter alguma rotação aleatória. Tudo bem, então está parecendo muito bom. E agora, para a escala, usaremos a abordagem clássica. Vamos apenas adicionar entradas para escala e aleatoriedade de escala e apenas calculá-las com base nessas Portanto, a primeira entrada será escala, padrão uma, mínima a zero, e a segunda será aleatoriedade de escala, que terá como padrão zero e mínimo zero Para valores nesse intervalo, subtrairei a aleatoriedade da escala e, para o máximo, adicionarei esses dois valores e apenas conectarei esses dois valores ao mínimo e máximo do valor aleatório E isso deve nos dar a escala certa. Também podemos usar a semente da entrada do grupo para a semente e, para o ID, podemos usar o atributo I named. Então, adicionarei o atributo nomeado I e o conectarei ao ID. Então, algo assim deve funcionar. E agora podemos inserir esse valor em escala, e você pode ver que as folhas são aleatórias Vou definir a escala para oh, sim, a balança está em um. Vou definir a escala para algo como 0,2 e aleatória para 0,1. E agora temos aquelas lindas folhas pequenas. Vou diminuir a gravidade, então é um pouco mais lento E a última entrada que esquecemos de adicionar é a densidade. Então, vamos também corrigir isso. Os pontos são distribuídos aqui nesta distribuição em faces, e queremos ser capazes de controlar essa densidade. Então, vou adicionar uma nova entrada, chamada de densidade. Enviei um devoto para algo como 0,5, e vou conectá-lo a essa entrada de densidade Se reiniciarmos isso agora, teremos muitos pontos aqui, e eu poderia aumentar um pouco a escala do ruído. E se eu quiser apenas algumas folhas, vou definir para 0,05, mas ainda tenho muitas folhas Vou diminuir isso ainda mais e aumentar a vida útil. Agora você pode ver que temos algumas folhas muito bonitas. E para combinar isso com a árvore original, adicionarei a geometria da junta e conectarei essas duas coisas E agora o que temos é essa linda árvore com folhas caindo.