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.