Domine simulações usando nós de geometria no Blender | Yassine Larayedh | Skillshare

Velocidade de reprodução


1.0x


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

Domine simulações usando nós de geometria no Blender

teacher avatar Yassine Larayedh, VFX Artist

Assista a este curso e milhares de outros

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

Assista a este curso e milhares de outros

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

Aulas neste curso

    • 1.

      Trailer

      1:51

    • 2.

      Zonas de repetição

      1:46

    • 3.

      Zonas de simulação

      2:30

    • 4.

      O que é uma simulação

      1:04

    • 5.

      O que é Velocity

      1:07

    • 6.

      O que é aceleração

      3:27

    • 7.

      O que é um atributo

      5:05

    • 8.

      O atributo de aceleração

      8:38

    • 9.

      O problema da Delta-t

      8:13

    • 10.

      Como adicionar restrições Pt.1

      5:08

    • 11.

      Como adicionar restrições Pt.2

      6:51

    • 12.

      Raio

      11:46

    • 13.

      Colisão

      9:36

    • 14.

      A desova do Particle

      4:31

    • 15.

      Atrito

      3:51

    • 16.

      Visão geral final

      7:56

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

Gerado pela comunidade

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

196

Estudantes

3

Projetos

Sobre este curso

Neste curso, você vai aprender como criar simulações usando nós de geometria no Blender, construindo seu próprio motor de física.

Este curso não é apenas outro tutorial de “clique nisso tudo”. É um mergulho profundo no mundo das simulações no Blender.

Você não vai simplesmente aprender a pensar como um artista, mas também como um engenheiro.

Você vai explorar o lado técnico da criação de simulações realistas.

Vamos abordar conceitos essenciais de física, como

  • Gravidade
  • Velocidade
  • Aceleração
  • Colisão e mais

Tudo isso vai permitir que você domine simulações com uma compreensão sólida da ciência por trás delas.

Ao final, você estará equipado para criar cenas complexas e dinâmicas com confiança.

Conheça seu professor

Teacher Profile Image

Yassine Larayedh

VFX Artist

Professor

I'm a VFX generalist, which is a fancy way of saying I do a bit of everything when it comes to visual effects.

I also have a bit of an obsession with the technical side of 3D--things like shading nodes and procedural stuff that make most people's eyes glaze over. But hey, it's fun for me!

I also happen to be pretty good at video editing. VFX and editing go hand-in-hand, so I figured I might as well get good at both.

When I'm not working on my own stuff, I actually enjoy teaching others how to do this kind of thing. I know, weird, right? But there's something really satisfying about breaking down complicated processes and seeing people have that "Aha!" moment. So, I started creating courses to share what I've learned.

Thanks for stopping by! Feel free to reach... Visualizar o perfil completo

Level: Intermediate

Nota do curso

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

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

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

Transcrições

1. Trailer: Ei, dê uma olhada nisso. Toda essa simulação foi feita apenas usando nós de geometria E se você conhece um pouco sobre nós, sabe como criar algo assim pode ser desafiador. O fato é que entender os nós é difícil e frustrante. Mas se você não fizer isso, perderá um aspecto crucial do liquidificador que abrirá um novo mundo de possibilidades para você Você provavelmente também já viu alguns desses crees malucos de nodos e se perguntou como começar a fazer isso? Como eu sei disso? Porque eu estava lá. Sofri para encontrar muitas respostas para minhas perguntas. Ao fazer este curso, pretendo tornar o processo de aprendizado de simulações em nós de geometria mais fácil e divertido Ao longo deste curso, você não aprenderá apenas a criar uma simulação de física no blender Você literalmente construirá seus próprios mecanismos de física dentro dos nós de geometria Você aprenderá sobre as forças da vida real que fazem nosso mundo funcionar do jeito que está. Você aprenderá sobre velocidade. Você aprenderá sobre aceleração, colisão, gravidade e como todas essas forças interagem umas com as outras. E muito mais. E você aprenderá tudo isso criando a simulação de bolas caindo. Eu sei o que alguns de vocês podem estar pensando agora. Ei, Yassine, por que eu me incomodaria criar uma simulação de bolas caindo Quero aprender a criar coisas boas, como explosões, ou aprender o que cada nó faz Acredite em mim, isso seria uma abordagem terrível. Tão simples quanto cair bolas pode parecer um conceito. Você ficará surpreso com a grande quantidade de conceitos que aprenderá apenas criando a simulação O que o torna o exercício perfeito? Ser bom em simulações é ser bom em física. E este curso preencherá a lacuna entre os dois e abrirá essa porta para você. Então, se você estiver interessado em aprender simulações usando nós de geometria no Blender, este curso é para você, e mal posso esperar para ver você do outro lado. Por favor. 2. Zonas de repetição: Zonas repetidas. Nas versões recentes do Blender, um novo conceito foi introduzido, zonas repetidas Este é o cubo padrão, exclua-o porque você precisa, e eu vou adicionar uma esfera Se eu abrir o editor de nós de geometria, crio uma nova árvore e vamos chamá-la, por exemplo, de simulação Se você adicionar os utilitários, terá a opção de repetir zonas Como você pode ver, terá esses dois nós com essa caixa ao redor deles. As zonas de repetição são uma forma de fazer com que o liquidificador repita determinadas operações várias vezes. Por exemplo, o que está saindo dessa entrada de grupo é minha geometria original, que é a esfera Também tenho minha saída de grupo, que é a geometria que terei até o final Vou conectar a zona de repetição entre eles assim. Também vou adicionar outro nó chamado set position, que me permitirá alterar a posição de um objeto. Mude A, defina a posição e eu vou conectá-lo na zona de repetição Digamos que eu mova a esfera 1 metro no eixo x, e é exatamente isso que terei se eu digitar uma aqui. Agora, digamos que eu queira repetir essa operação dez vezes. Claro, pode ser tão fácil quanto digitar dez aqui, mas imagine se você tivesse uma árvore de nós maior Nessa situação, você precisará multiplicar cada valor por dez, que pode ser um incômodo É por isso que no primeiro nó da zona de repetição, você tem esse número chamado iterações, que representa quantas vezes você quer que blender calcule o que está dentro da Se eu digitar dez aqui, liquidificador executará o que está dentro dessa zona de repetição dez vezes Então, se formos resumir o que são zonas repetitivas, as zonas repetidas são uma forma de dizer ao liquidificador repita certas operações por um determinado número de tempo É simples assim. Agora, e quanto às zonas de simulação? 3. Zonas de simulação: Zonas de simulação. As zonas de simulação têm um conceito semelhante às zonas de repetição Há uma maneira de executar determinadas operações várias vezes. A única diferença entre zonas de simulação e zonas repetição é que, nas zonas de repetição, você especifica quantas vezes deseja que Blender compile Enquanto isso, nas zonas de simulação, Blender compilará todas as operações em cada quadro Se eu for adicionar simulação, terei uma zona de simulação. Como você pode ver, é muito semelhante à zona de repetição, exceto pelo fato de não ter o valor de iteração Em vez disso, tem tempo de dilta. Agora, se eu duplicar a mesma operação de posição definida dentro da zona de simulação, conectar a entrada do grupo na entrada da simulação e a saída da simulação na saída do grupo para ver o resultado final, nada acontecerá no início Mas se eu abrir a linha do tempo e clicar em play, você verá a esfera se movendo Agora, o Blender está executando as operações dentro das zonas de simulação em cada quadro No quadro um, o liquidificador moverá a esfera em 1 metro, e no quadro dez, moverá a esfera em 10 metros. É simples assim. Agora, é importante observar que o liquidificador não está executando a simulação dez vezes quando está no quadro dez Isso precisará de muitos recursos do computador. É mais como se o Blender estivesse acumulando os resultados a cada quadro que passa Por exemplo, no primeiro quadro, Blender moverá o cubo 1 metro executando a No quadro dois, o Blender moverá o cubo também 1 metro com base na posição anterior Blender executa a simulação apenas uma vez, e a posição inicial da simulação é o resultado do quadro anterior Espero que isso faça sentido. Em resumo, você pode pensar nas zonas de simulação apenas como uma zona de repetição em que o número de iterações muda a cada quadro Na verdade, se eu adicionar um nó chamado tempo de cena, esse soquete de quadro me dará o número do quadro em que estou No quadro um, ele produzirá um, e no quadro 37, ele produzirá 37. Se eu voltar para a zona de repetição e conectar o quadro às iterações, isso significa que o número de iterações seguirá o número em que o quadro Se eu clicar em play, obterei o mesmo resultado da zona de simulação. Você pode pensar nas zonas de simulação como uma zona de repetição com o tempo da cena conectado às A diferença agora deve estar clara entre repetição e zonas de simulação As zonas de repetição são uma forma de repetir determinadas operações manualmente, especificando quantas vezes você deseja Enquanto isso, as zonas de simulação farão isso automaticamente em cada quadro. Agora, com tudo isso resolvido, agora podemos começar a falar sobre simulações. 4. O que é uma simulação: O que é uma simulação? Achei essa boa definição do que é uma simulação. Uma simulação é um método para imitar um processo do mundo real ao longo Ele evolui criando um modelo que representa as principais características, comportamentos e funções do processo ou sistema Por exemplo, se eu tiver uma bola e a fizer cair, uma simulação será um programa que prevê o que acontecerá. Vou dar a esse programa certas informações, como o tamanho da bola, a altura ela está do chão, o quão pesada ela é, o quão forte é a gravidade que a puxa E com base nessas entradas, o programa tentará prever o que acontecerá Então, se quisermos criar uma simulação física no Blender, precisamos pensar em maneiras de recriar a realidade no Isso significa que precisamos pensar nas forças da vida real que permitem que nosso mundo funcione do jeito que está. A chave para isso são duas forças, velocidade e aceleração, e explicaremos as duas Agora estamos começando a entrar na parte divertida. No próximo vídeo, aprenderemos sobre velocidade. 5. O que é Velocity: O que é velocidade? A velocidade é uma grandeza vetorial física que descreve a taxa na qual um objeto muda sua posição Simplificando, velocidade é a velocidade que algo está se movendo Geralmente nos referimos a isso como velocidade. O que eu quero que você tenha em mente é que não podemos pensar em velocidade sem considerar o fator tempo, porque a velocidade no final do dia depende da distância percorrida em um determinado período de Não podemos dizer que a velocidade do carro é de 100 quilômetros ou 100 milhas. Precisamos especificar por qual unidade de tempo estamos falando? São 100 quilômetros/hora por minuto por segundo? Há uma grande diferença. Em nossa pequena simulação, essa esfera está se movendo a uma taxa de 1 metro por quadro, e essa é sua velocidade, 1 metro por quadro Ou como minha taxa de quadros é 24, isso significa que a esfera se moverá 24 metros/segundo Podemos dizer que sua velocidade é de 24 metros/segundo, ou 14 40 metros/minuto, ou 86.400 metros/hora Você entendeu a ideia. Então isso é velocidade Agora precisamos falar sobre aceleração. 6. O que é aceleração: O que é aceleração? Velocidade é a taxa de mudança na posição ao longo do tempo? Aceleração é a taxa de mudança na velocidade ou velocidade ao longo do tempo Um carro está acelerando quando sua velocidade está aumentando. A aceleração representa as mudanças na velocidade. Assim como a velocidade, podemos falar sobre aceleração por si só, sem considerar o fator tempo Podemos dizer que este carro está acelerando a uma taxa de 10 metros. Precisamos especificar por qual unidade de tempo estamos falando? Está acelerando a uma taxa de 10 metros/segundo por minuto por hora Essa é uma grande diferença. No pequeno sistema que construímos no Blender, a esfera está se movendo a uma taxa de 1 metro por quadro, e essa é sua Mas não está acelerando nem acelerando, o que significa que a aceleração é zero Na vida real, as velocidades dos objetos aumentam e diminuem com o tempo devido a forças diferentes Então, como podemos programar essas coisas liquidificador. Antes de explicar como fazer isso, quero mudar um pouco a simulação. Vou excluir a entrada do grupo e, em vez disso, vou adicionar um nó pontual. É importante mencionar que um ponto no blender é apenas um contêiner de dados que podemos substituir posteriormente por outros objetos É por isso que o estamos usando, pois ele oferece uma grande flexibilidade posteriormente. Vou mudar a simulação para se tornar uma simulação de ponto de queda movendo 0,5 metros no ar, então essa seria minha posição inicial. Como quero que o ponto caia, preciso atualizar o nó de posição definida. Em vez de nos movermos no eixo x, preciso dizer ao Blender que nos moveremos no eixo z. Vou redefinir o eixo x para zero e, no eixo z, escreverei, por exemplo, 0,1 metro. Se eu apertar play, você notará que a bola está se movendo para cima e não para baixo. É porque o liquidificador está movendo a bola em 10 metros para cima. Então, se quisermos movê-lo para baixo, precisamos alterá-lo para -0,1 metros. Agora, se eu apertar play, você notará que a bola está caindo lentamente. Agora podemos começar a pensar em como implementar a aceleração em nosso sistema. Para entender o que faremos, precisamos voltar à definição de aceleração. Aceleração é a mudança na velocidade de um objeto. Um objeto em queda estará acelerando, o que significa que sua velocidade aumentará gradualmente quanto mais tempo ele passar Em outras palavras, precisamos descobrir uma maneira de dizer ao liquidificador: Ei, liquidificador, queremos que você aumente a velocidade a cada momento que passa Como, por exemplo, no quadro um, mova esse ponto 10 metros para baixo. No quadro dois, mova esse ponto em zero 15 metros para baixo. Estará a menos 020 5 metros. No quadro três, mova esse ponto em zero 2 metros para baixo. Estará a -0,45 metros. A chave para obter aceleração, para tornar a distância percorrida com cada quadro cada vez maior. Pense sobre isso. Se a bola estiver se movendo na mesma distância a cada quadro, você terá uma velocidade constante. Mas quando ele acelera ou desacelera, isso significa que a distância percorrida com cada quadro está ficando maior ou menor Se a distância for maior, isso significa que está acelerando, se a distância está ficando menor, significa que está acelerando A solução para implementar a aceleração em nosso sistema é descobrir uma maneira de dizer ao liquidificador que aumente ou diminua esse valor com o tempo Para fazer isso, há um conceito importante que você precisa entender. O que são atributos. É sobre isso que falaremos no próximo vídeo. 7. O que é um atributo: O que é um atributo? Se você verificar o manual do liquidificador para saber o que é um atributo, encontrará a seguinte definição Um atributo é um termo genérico para descrever dados armazenados por elemento em um bloco de dados de geometria Veja como eu quero que você pense sobre isso. Imagine uma geometria de três D. Essa geometria pode ser tão simples quanto um ponto, como em nosso exemplo ou em qualquer outro objeto de três D. Atributos são dados anexados aos três objetos D que definem certas características desses três objetos D. Por exemplo, se eu pular para o espaço de trabalho dos meus nós de geometria e sair da planilha, vou pular para o ponto porque a única geometria que tenho agora Aqui você poderá ver todos os diferentes atributos associados a essa geometria Primeiro de tudo, você tem o índice. Nesse caso, é zero. Mas se eu aumentar o número de pontos, por exemplo, para cinco, cada ponto terá um índice. O número do índice é um atributo. No caso do índice, o atributo é o número que se refere ao índice de cada ponto. Você também tem o atributo de posição que define a localização desse ponto específico. Você também tem o raio desse ponto. Esse também é outro atributo. Os atributos são como um cartão de identificação que define as características de um elemento no liquidificador É por isso que a melhor maneira de pensar em atributos, como eu disse, é que eles sejam um bloco de dados anexado ao objeto de três D, que define certas características desse objeto de três D. Agora, esses são os atributos que vêm por padrão com o ponto. O bom é que o Blender nos permite criar nossos próprios atributos. Se eu for adicionar atributos, armazenar o atributo chamado, terei esse nó que vou conectar logo após a entrada da simulação. A loja chamada attribute node permitirá que eu crie meus próprios atributos. Posso começar especificando o tipo. No nosso caso, velocidade e aceleração são vetores. É por isso que vou mudar o tipo de dados de flutuante para vetor Em seguida, vou dar um nome a esse atributo. Você pode chamá-lo do que fizer sentido para você, mas para manter tudo claro, vou chamá-lo de velocidade Agora, se eu voltar para a planilha, você notará que agora temos outro atributo chamado Se eu selecionar o atributo chamado loja e clicar em vazio para silenciá-lo, observe como essa propriedade desaparecerá do editor de planilhas Espero que pelo menos agora você tenha uma ideia do que é um atributo. É um bloco de dados anexado a um objeto de três D. Mas você pode estar se perguntando como isso pode ser útil? Bem, agora que temos a velocidade como um atributo, podemos começar a fazer várias operações interessantes com ela, como alterá-la a cada quadro que passa Porque lembre-se, esse é nosso objetivo fazer a velocidade aumente ou diminua com o tempo, o que nos dará aceleração Em nossa árvore de nós atual, a velocidade é constante Se pensarmos no que está acontecendo em cada quadro, Blender mudará a posição desse ponto pela quantidade especificada do nó de posição definido Além disso, como você pode ver, esse soquete de deslocamento é um vetor, pois tem três valores e tem o soquete roxo de diamante Tecnicamente, se quisermos ser mais precisos, esse soquete de deslocamento representa a taxa de mudança em cada quadro, que mencionamos anteriormente, ou seja, Algo simples que posso fazer é adicionar um nó chamado vetor e conectá-lo ao deslocamento Eu não fiz nada extravagante. Acabei de substituir o deslocamento por esse vetor. Se eu escrever -0,1 no eixo z do nó vetorial, pressione play, obterei exatamente o mesmo resultado Este nó vetorial agora está representando a velocidade. Para ir ainda mais longe, excluirei esse nó vetorial e adicionarei um nó chamado attribute chamado attribute, que me permitirá invocar um determinado atributo O atributo que eu quero invocar é um vetor e seu nome é velocidade Esse atributo de velocidade que estamos chamando é exatamente o mesmo atributo que criamos usando a loja chamada attribute node Qual é a natureza desse atributo de velocidade? É um vetor, que é a natureza exata do soquete de deslocamento, então eu posso conectar o atributo nomeado ao deslocamento. Se eu apertar play, nada acontecerá porque esse vetor de velocidade é basicamente todo zeros. Como eu sei disso? Porque na loja chamada attribute, não especificamos os valores desse vetor de velocidade Se eu escrever -0,1 no eixo z e clicar em play, você obterá exatamente a mesma coisa que tínhamos antes Aqui está a lógica do que está acontecendo. Criamos um vetor que chamamos de velocidade e ele tem os seguintes valores Então, em nossa árvore de nós, podemos invocar ou chamar o vetor que criamos e usá-lo em vários lugares Portanto, esse nó de atributo nomeado está procurando por um vetor chamado velocidade, que é definido por essa loja chamada nó de atributo É como se tivéssemos criado um vetor, agora o estamos usando em vários lugares na árvore de notas. No futuro, se eu quiser alterar o vetor de velocidade, tudo o que preciso fazer é alterar valores no atributo chamado da loja, e essa alteração se espalhará por toda a árvore de notas porque usarei o nó do atributo nomeado em todos os lugares da minha Agora que mudamos um pouco nossa árvore de notas e criamos o atributo velocidade, e no próximo vídeo, vamos criar o atributo de aceleração 8. O atributo de aceleração: Atributo de aceleração. Como mencionei antes, aceleração é a mudança na velocidade Então, se quisermos implementar aceleração em nosso sistema, precisamos descobrir uma maneira de fazer a velocidade mudar com o tempo Queremos dizer ao liquidificador que aumente a taxa de alteração. Em outras palavras, queremos aumentar a distância percorrida pelo ponto de quadro a quadro. Por exemplo, no quadro zero, o ponto está em 0,0. No primeiro quadro, empurre-o 10 metros para baixo. Estará a menos 10 metros. Em seguida, empurre-o em zero, 15 metros para baixo, para que fique a menos 020 5 metros, e depois empurre-o em zero Então, será a menos zero, 45 metros. Ao fazer isso, como você pode ver, a distância percorrida pelo ponto a cada momento que passa está aumentando gradualmente, o que significa que está acelerando Então, como podemos programar isso em nós no liquidificador? Bem, isso é simples. Então foi aqui que paramos da última vez. Temos esse atributo chamado loja que define um atributo chamado velocidade que tem esses valores e, posteriormente, usamos esse atributo de velocidade ou esse vetor de velocidade aqui Estamos chamando isso desse nó e o usamos para atualizar a posição, e isso está nos dando uma velocidade constante. O que queremos fazer, como eu disse, é fazer com que esse vetor de velocidade aumente seus valores com o tempo Alguns de vocês podem sugerir que eu possa estruturar essa propriedade aqui e adicionar alguns quadros-chave, e poderei animar esse valor com o tempo E essa é, na verdade, uma abordagem viável. O que queremos fazer é construir um motor de física que possa cuidar de tudo. Farei algo que soará um pouco contra-intuitivo no início, mas vou explicar. Vou adicionar um atributo nomeado. Como você se lembra, esse nó me permitirá chamar ou invocar um determinado atributo que eu criei Nesse caso, vou chamar um vetor, que é velocidade É exatamente o mesmo vetor que este nó está criando. É o mesmo atributo e vou inseri-lo no valor. Como eu disse, isso pode parecer contra-intuitivo. Então, basicamente, esse nó está definindo uma propriedade chamada velocidade que tem esse valor Nesse valor, estou inserindo um atributo chamado velocidade É literalmente o mesmo atributo. É como o meme do cara despejando água em si mesmo enquanto está na piscina Você provavelmente pode adivinhar que o liquidificador lê a árvore de notas da esquerda para a direita, então ela começará com os pontos entrará na zona de simulação Armazene o atributo nomeado e, para cada nó, ele começará de cima para baixo. Primeiro, ele lerá o ponto vetorial, depois lerá a geometria, depois essa eleição e, em seguida, criará uma propriedade chamada velocidade ou um atributo chamado Para o valor, conectei a velocidade e, sempre que você conectar um atributo ao nó que está criando o atributo, o blender assumirá um valor zero É por isso que agora, se eu pressionar a barra de espaço para tocar, nada acontecerá. O ponto permanecerá no mesmo lugar, porque essa conexão que fiz aqui, conectando o atributo velocidade à loja chamada attribute que o define, me levará Então, nada vai acontecer. Mas o mais legal agora é que, se eu adicionar o deslocamento A e procurar a matemática vetorial, e eu o inserir logo após o atributo nomeado, agora o Blender pegará o vetor de velocidade, que é zero em nossa situação, adicionaremos a ele um valor que especificarei aqui, e esse será meu novo valor de velocidade ou meu novo vetor de velocidade que usarei posteriormente Digamos, por exemplo, que eu digite -0,1. Agora tente pensar no que vai acontecer. No quadro zero, é claro, nada acontecerá. Vou abrir minha linha do tempo e, para organizar melhor meu espaço de trabalho, vou reduzir isso para isso, e vou adicionar outro editor aqui, e vou alterá-lo para a janela de visualização em três D, e vamos reduzi-lo assim Isso me dará mais espaço aqui na minha tentativa de anotações. Eu tenho aqui na linha do tempo e posso me mover aqui na minha janela de visualização em três D. E como estamos trabalhando agora em apenas duas dimensões, vou pressionar uma no teclado numérico para pular para a vista frontal. Então esse será meu espaço de trabalho. Eu acho que isso é melhor. Talvez até eu vá arrastar isso um pouco para ter mais espaço na minha tentativa de anotações. Como eu disse, agora, no quadro zero, nada acontecerá. O ponto está na posição inicial de zero ou, na verdade, de 5 metros, mas assumimos que seja zero. No primeiro quadro, o Blender pegará o vetor de velocidade, que tem o valor zero, adicionará -0,1, e esse será o meu vetor de velocidade que usaremos posteriormente para e esse será o meu vetor de velocidade que atualizar Então, agora no primeiro quadro, liquidificador moverá esse ponto em 10 metros para baixo. Olha, boom. Então isso é 01. No segundo quadro, digamos que o liquidificador execute o ciclo novamente. Mas qual é o valor desse nó de velocidade agora? É zero ou é menos 01? Essa é a coisa importante que você precisa ter em mente, que é que esse nó agora manterá o valor do estado anterior. Neste momento, esse nó contém um atributo de velocidade que não é 000 Na verdade, é 00 menos 01. Agora, quando adicionarei menos 01, esse novo vetor de velocidade que obterei daqui não será menos Será menos 02, e observe o que vai acontecer Agora, a distância percorrida no quadro dois é um pouco maior. Na terceira vez para o quadro número três, qual é o valor desse? É o valor da velocidade anterior, que é menos 02. Agora vou adicionar menos 01, então terei menos 03, e essa será minha nova velocidade que usarei para mudar a posição Então, agora a lacuna está ficando maior. Estou no quadro três. No quadro quatro, esse vetor de velocidade não será zero Como eu disse, será menos 03, e quando eu adicionar menos 01, estará em -0,4, e é isso que vou usar para atualizar a posição Estrondo. Agora, se eu apertar play, você notará que a bola cairá um pouco mais rápido quanto mais tempo ela passar caindo Deixe-me diminuir um pouco para ver completamente o que acontece. E se eu apertar play, como você pode ver, agora temos algo parecido com uma bola caindo A chave para isso é esse pequeno truque que fizemos aqui. Pegamos a velocidade do estado anterior, adicionamos a ela um certo valor e, como é um liquidificador baixo toda vez que executa a simulação, adicionamos menos 01 no eixo z ao estado anterior do vetor de Espero que isso faça sentido. Agora, esse vetor que estou adicionando aqui, esse vetor é na verdade o vetor de aceleração. Esses valores são os que definem o quanto você deseja que o liquidificador aumente a velocidade a cada momento que passa Na verdade, isso é aceleração. Como eu também quero que a aceleração seja um atributo, porque vou usá-la mais tarde, vou adicionar outro nó agora chamado store named attribute, shift , store named attribute, e vou armazenar um vetor que chamarei de aceleração que tem esses valores. E eu vou usá-lo aqui, então procure o atributo nomeado. Vou procurar um vetor que acabei de criar chamado aceleração. Onde está a aceleração? Está bem? É um vetor chamado aceleração. E eu vou conectá-lo aqui. Nada acontecerá porque essa aceleração é zero. Como eu sei disso? Porque no nó que o define, eu não especifiquei qual valor esse vetor deveria ter. Se eu voltar ao quadro número um e apertar play, nada acontecerá porque a aceleração é zero. Não estou adicionando nada. Nada vai mudar. É por isso que vou digitar menos 01. Mamãe. E agora, se eu clicar em play, você obterá exatamente a mesma animação ou simulação que acabamos de ter. Portanto, esse atributo chamado loja definirá um vetor chamado aceleração. E toda vez que executamos a simulação no Blender, estamos adicionando esse valor à taxa de variação Em outras palavras, cada quadro ou sempre que o liquidificador executa a simulação Isso é o quanto o liquidificador aumentará a distância percorrida pelo ponto Toda vez que a distância aumentará em menos 10 metros. Sei que pode ser um pouco confuso porque estamos usando menos, mas lembre-se sempre de que o principal motivo pelo qual estamos usando menos é porque estamos É por isso que precisamos do sinal de menos. Então, este é o nosso notário atual. Espero que faça sentido. Agora temos uma simulação de ponto de queda, eu acho. Mas, na verdade, há um pequeno problema nessa simulação que precisamos corrigir no próximo vídeo. 9. O problema da Delta-t: Problema do Delta T. Algo que eu mencionei antes é que as simulações no blender são avaliadas em cada quadro Isso causará um pequeno problema. Nossa taxa de quadros atual é de 24 quadros por segundo. Isso significa que o liquidificador executará a simulação 24 vezes em 1 segundo Vou voltar para o espaço de trabalho dos nós de geometria, Se eu clicar na placa para armazenar a simulação em cache e depois ir para o quadro 24, aqui está a localização do ponto. 0 -25. Agora, digamos que eu queira que a animação final seja mais suave. Então, decidi aumentar a taxa de quadros para 60 quadros por segundo Depois de 1 segundo, quantas vezes você acha que o Blender executará a Você adivinha certo, 60 vezes. Se eu bater na placa para pegar a simulação e ir para o quadro 60, observe a localização do ponto. 0 -178. Eu sei que isso pode ser confuso, então, para esclarecer a questão, aqui está o que acontece na vida real. Imagine que você está jogando uma bola de um lugar alto. Digamos que a bola leve 3 segundos até tocar o chão e você tenha duas câmeras, uma gravando a 24 quadros por segundo e outra a 60 quadros por segundo Jogue a bola. Em 1 segundo, a bola estará nesse nível. O importante é notar que as duas câmeras capturarão a bola na mesma posição. A única diferença é que a câmera de 24 FPS gravou apenas 24 quadros Em outras palavras, ele registrou a bola em 24 posições diferentes. Enquanto isso, a câmera de 60 FPS gravou 60 quadros. Em outras palavras, ele registrou a bola em 60 posições diferentes. O momento é sempre o mesmo. A única diferença é a taxa de quadros. O que deve acontecer no Blender é o seguinte. Após 1 segundo, o ponto deve estar na mesma posição, independentemente da taxa de quadros. Então, como podemos resolver esse problema? A melhor maneira de explicar a solução é fazendo algumas contas. Mas eu prometo, não será tão complicado. Algo que mencionei antes é que velocidade é a taxa de mudança na posição no tempo Uma forma de traduzir essa afirmação em uma função matemática é a seguinte. V, que é a velocidade igual a Delta P sobre Delta T. Eu gostaria que você pensasse na palavra Delta como a mudança P significa posição e t significa tempo. Dizemos que a velocidade é Delta P, a mudança de posição Sobre Dilta T, a mudança no tempo. Agora, e quanto à aceleração? Como você se lembra, a aceleração é a taxa de variação da velocidade ao longo do tempo Uma maneira também de escrever isso como uma fórmula é a seguinte. Aceleração A igual, Delta V sobre delta t. Dizemos que a aceleração é Dilta V, a mudança na velocidade, sobre Dilta T, o Em nossa árvore de nós atual, Delta t é uma variável que muda dependendo da taxa de quadros. Se a taxa de quadros for 24, então Delta t é igual a 1/24, e se a taxa de quadros for 60, então Delta T é igual a 1/60 então Delta T Queremos que o tempo de nossa simulação seja o mesmo, independentemente da taxa de quadros. Com base na primeira equação, velocidade é igual a Delta P sobre Delta T, pode-se concluir que Delta P é igual à velocidade multiplicada por Delta T. Com base na segunda equação, A, aceleração é igual a Delta V Podemos concluir que Delta V, a mudança na velocidade é igual à aceleração, multiplicada por Delta T, a mudança no tempo A matemática é muito simples. Tudo o que fizemos agora foi expressar tanto a mudança na posição quanto a mudança na velocidade em função do Delta T. Isso fará Blender considere a taxa de quadros ao executar a taxa de quadros ao executar Como podemos traduzir essa lógica na árvore de nós. Isso será simples. Vamos começar primeiro com a mudança de posição do Delta P igual à velocidade multiplicada pelo Delta T. Qual é o nó responsável por mudar a posição do É o nó da posição definida, e essa parte da equação é a que precisamos calcular e inserir no soquete de deslocamento No momento, é apenas o vetor de velocidade. Com base na equação, precisamos multiplicar a velocidade pelo Delta T. Você precisa adicionar um nó matemático vetorial, alterar a operação para multiplicar e multiplicá-la pelo Delta T, que você pode obter do primeiro nó da zona de simulação Além disso, você pode definir a operação desse nó matemático vetorial em escala e ele fará exatamente a mesma coisa. Usamos a multiplicação ao lidar com dois vetores, mas como o tempo Delta é um número simples, podemos alterá-lo para escala Você pode usar esse sempre que estiver multiplicando um vetor por um único número Eles também são chamados de escalares no liquidificador. Daí a escala de nomes para a operação. Ok, agora estamos compensando a mudança de posição com base em nosso tempo Delta, que é baseado em nossa taxa de quadros. Agora precisamos fazer a mesma coisa para a segunda operação. Delta V, a mudança na velocidade é igual ao vetor de aceleração multiplicado pelo Delta T. Onde estamos definindo V, a mudança na velocidade? Bem, estamos definindo a mudança na velocidade usando esse primeiro atributo chamado loja O responsável por criar a aceleração. Lembre-se sempre de que os valores que estamos usando para o vetor de aceleração são responsáveis pelo quanto nossa velocidade está aumentando a cada quadro Então, o que posso fazer é inserir um vetor no valor dessa loja chamado attribute e, por padrão, o Blender manterá os mesmos valores A equação, Delta V igual aceleração multiplicada por Delta T, o que vamos inserir no soquete de valores do atributo chamado loja define a taxa de mudança na velocidade, que é igual à aceleração que é esse nó vetorial, e precisamos multiplicá-lo por Delta T. Tudo o que você precisa fazer é adicionar um nó matemático vetorial, alterar a operação para escala, alterar a operação para escala e multiplique por Delta T, que você pode obter do primeiro nó da zona de simulação, como mencionei antes É assim que podemos implementar a lógica das equações que expliquei no notário Como resultado disso, nossa simulação agora se adaptará à taxa de quadros e permanecerá consistente, independentemente da taxa de quadros. Para ter certeza de que é esse o caso, se eu clicar em play, primeiro você notará que a animação está muito lenta. Como nossa simulação agora é baseada no tempo da vida real, não em números de quadros, precisamos começar a usar valores da vida real para esses vetores É o valor da gravidade na vida real. É -9,8 Certifique-se de usar esse valor para o vetor de aceleração, pois é assim que os objetos aceleram ao cair Portanto, é sempre bom usar os valores da vida real, pois isso significa que nossa simulação será mais realista. Agora, nossa taxa de quadros atual é de 24 FPS. Então, vamos executar a simulação clicando em play. Vá para o quadro 24, que significa 1 segundo na simulação, e veja a posição do ponto. Está em 0,304. Agora, vamos alterar a taxa de quadros para 60 FPS, executar a simulação novamente e ir para o quadro 60, que também significa 1 segundo na simulação, porque apenas alteramos a taxa de quadros e lemos a posição desse ponto, e ele está em 0182 Os valores estão próximos, mas não são os mesmos. Por que isso? Sem entrar nos detalhes mais minuciosos de por que isso está acontecendo, tudo o que você precisa fazer é que sempre que estiver fazendo esse tipo de simulação no Blender , sempre haverá E isso se deve ao método de integração do lubrificador usado no Blender Posso passar horas tentando explicar quais são os métodos de integração do lubrificador e todos os problemas com eles Mas isso será demais para lidar. Então, tudo que você precisa saber é que sempre haverá uma margem de erro com a qual precisamos lidar ao fazer esse tipo de simulação no Blender Além disso, preciso mencionar que existem outras maneiras de integrar outros métodos de integração no Blender usando nós, mas vamos explorar as coisas mais avançadas dos nós de geometria E, na verdade, não se trata nem mesmo nós de geometria, mas de matemática literalmente pura E esse não é o tópico principal do curso. É por isso que sacrificaremos um pouco de estabilidade e aceitaremos um grande erro de margem por uma questão de simplicidade. E agora que nossa simulação é independente da taxa de quadros, precisamos fazer com que essas bolas basicamente saltem do chão introduzindo algumas restrições, o que faremos no próximo vídeo 10. Como adicionar restrições Pt.1: Adicionando restrições Parte um, o piso. Nosso ponto de vista agora continuará caindo para sempre, basicamente. Precisamos descobrir uma maneira de dizer ao liquidificador: ei, liquidificador, uma vez que a ponta chegue ao chão, faça com que ela se equilibre Este será um exercício divertido. A primeira pergunta que vem à mente é quando o ponto chega ao chão? A resposta é simples. Uma vez que a posição do ponto seja igual ou abaixo de zero. Agora, se eu voltar para a frase, ei, liquidificador. Quando nosso ponto atinge o chão, queremos que ele se equilibre, podemos alterá-lo para a seguinte frase. Olá, liquidificador Quando a posição do nosso ponto for igual ou menor que zero, queremos nos equilibrar no chão. Agora vem a segunda parte. Como podemos fazer isso ricochetear no chão? A solução mais fácil será reverter todas as forças aplicadas em nossa ponta ou em nossa bola. No momento, nossa simulação está fazendo a questão cair. Então, tudo o que precisamos fazer é dizer ao Blender que, uma vez que o ponto atinja o chão, inverta a simulação Em outras palavras, inverta a velocidade e a posição. Para entender isso completamente, quero explicar a arquitetura do nosso mecanismo de simulação. Primeiro definimos a aceleração. Árvore usada para definir a velocidade, que usamos para atualizar a posição Em certo sentido, é bastante sistemático ou algorítmico. É um processo passo a passo. Agora diremos ao Blender que, se a posição do ponto for menor que zero, inverta a velocidade e inverta a posição do Isso fará com que o ponto suba. É como se estivéssemos construindo um minimotor que entrará em ação quando a posição do ponto for menor que zero. Vamos traduzir todos esses pensamentos em nós. O primeiro passo para construir nosso mini motor é saber quando esse motor entrará em ação. Eu disse isso várias vezes. Quando a posição do ponto for menor que zero, começarei adicionando um nó de posição. Nos dará a posição do ponto e, em seguida, adicionarei um nó chamado x y z separado porque precisamos apenas da posição no eixo z, pois é o responsável por definir a posição do ponto para cima e para baixo. Adicione um nó de comparação e defina-o para menos de zero, e essa é a nossa condição. Uma forma de ler a lógica desses nós que criamos é a seguinte. Quando a posição no eixo z for menor que zero, faça alguma coisa. Agora vamos construir o que deve acontecer quando essa condição for verdadeira. Isso deve ser simples, porque tudo o que precisamos fazer é operar o mesmo motor que construímos ao contrário, o que podemos fazer facilmente multiplicando-o por menos Primeiro, precisamos reverter a velocidade. O ponto costumava descer, agora precisa subir. Como podemos atualizar a velocidade? Fácil. Adicione uma loja chamada attribute, altere o tipo para vetor e precisamos de velocidade Tudo o que escrevermos aqui agora substituirá os valores que tínhamos anteriormente para o vetor de velocidade Em seguida, adicionarei um atributo nomeado. Velocidade vetorial. Isso me dará o valor da velocidade do quadro anterior e eu o multiplicarei por menos um no eixo z e um no eixo x e y, pois não quero que eles mudem porque multiplicar por um sempre levará ao multiplicar por um sempre levará E eu vou conectar isso ao soquete de valor do atributo chamado tempestade Agora invertemos o vetor de velocidade. Vamos atualizar a posição, que a bola vá na direção inversa. Vou adicionar um nó de posição definida, adicionar um nó de posição, adicionar uma matemática vetorial e multiplicá-la por menos um no eixo z. E um nos eixos x e y e conecte-o diretamente na posição, porque queremos mudar diretamente a posição, não apenas o deslocamento E agora, esse é o nosso mini motor responsável por reverter a simulação se o ponto ficar abaixo de zero Mas, no momento, o Blender ainda não sabe quando operar o pequeno motor porque precisamos conectar nossos nós que definem a condição no soquete de seleção do atributo chamado da loja e na Então, agora, essas duas operações de alterar a velocidade e mudar a posição só serão executadas quando essa condição for atendida Se eu clicar em play agora, observe o que vai acontecer. Nosso argumento é saltar, e é assim que podemos introduzir restrições A bola agora vai quicar para sempre, mas na vida real, ela deve perder energia lentamente até parar A maneira de contornar isso será dizer ao liquidificador que diminua a velocidade gradualmente Você pode fazer isso aumentando o vetor de velocidade, então, em vez de multiplicá-lo por menos um, que é uma reflexão perfeita, você o multiplica por -0,8, por exemplo Agora, a simulação perderá vapor lentamente sempre que tocar o chão Até que pare. A forma como programamos atrito agora só se aplica quando essa condição é Uma vez que a bola toca o chão. Mas na vida real, a bola deve realmente perder velocidade gradualmente desde o início da simulação. Uma maneira de contornar isso é adicionar um nó vetorial de metanfetamina, configurá-lo em escala e conectá-lo logo antes do atributo chamado loja, e conectá-lo logo antes do atributo chamado loja definindo a velocidade e definindo o valor como algo como 0,98 Agora, a simulação perderá energia geral ou em cada quadro. Por quê? Porque, como sabemos, o Blender compila a simulação em cada quadro Para nossa simulação, excluirei o nó de escala e programarei o atrito dos nós responsáveis pelas restrições em um Agora construímos o sistema de restrição para o piso. Também precisamos criar algumas restrições para as paredes laterais, e é exatamente isso que faremos no próximo vídeo 11. Como adicionar restrições Pt.2: Adicionando restrições para dois, as paredes laterais. No vídeo anterior, criamos a restrição de piso, que permitirá que a bola salte do chão Neste vídeo, criaremos algo semelhante. Construiremos as restrições para as paredes laterais, direita e esquerda, frente e Para que todos nós estejamos na mesma página, certifique-se de pressionar um no teclado numérico para pular para a vista frontal. Começaremos criando as restrições para a parede direita Digamos que queremos que a bola ricocheteie em uma parede imaginária que está a 1 metro de distância. Por aqui. O conceito é muito parecido com o que fizemos para o chão. Precisamos descobrir uma maneira dizer ao Blender que, se a bola tocar essa parede imaginária, reverta Ou, para usar a analogia do minimotor, vamos criar um pequeno motor de física que entrará em ação se a bola tocar a parede direita Vamos começar com a condição. Isso deve ser simples. O ponto toca a parede. Se a posição no eixo x for igual ou maior que uma. Adicione o nó de posição para ler a posição de um ponto específico. Em seguida, adicionarei um xyz separado Tudo o que me importa é o eixo x, que deve ser maior que um. É minha condição. Agora, passamos ao que deve acontecer se essa condição for verdadeira. Queremos reverter a simulação, então invertemos a primeira velocidade e depois a posição Em vez de criar todos esses nós do zero, vou simplesmente copiar a configuração da restrição de piso e conectá-la assim Para a multiplicação da velocidade, certifique-se de mudar o eixo z de volta para Mude o eixo x para menos um, porque agora estamos trabalhando no eixo x. Eu farei a mesma coisa para multiplicar a posição Vou mudar o eixo z de volta para um e mudar o eixo x para menos um, além de me certificar de conectar a condição ao atributo chamado store e à posição definida Essas operações só entrarão em ação se essa condição for atendida. Agora, se eu apertar play, a bola cairá direto para baixo. Eu quero empurrá-lo um pouco para a direita. Vou logo após o nó de pontos, o primeiro nó da minha árvore, e adicionarei o atributo chamado loja. Isso é um vetor, e eu vou escolher a velocidade, e à direita, por exemplo, duas no eixo x. Agora, o vetor de velocidade começará em dois, que significa que o ponto será empurrado levemente para a direita e, dessa forma, podemos testar nossa restrição de parede que acabamos É como se tivéssemos criado uma velocidade inicial para o ponto, que ele não começasse do zero Se eu apertar play, o ponto tocará a parede direita, mas está agindo de forma estranha De alguma forma, ele salta para o outro lado. Por que isso? Bem, se focarmos nesse nó de posição, você notará que o estamos multiplicando por menos um Então, digamos que, hipoteticamente, a posição do ponto em um determinado quadro esteja em 0,9 no eixo x. A simulação continuará funcionando normalmente porque não tocamos em uma linha. No próximo quadro, a posição da bola está em uma, o que significa que a condição agora foi atendida, o que significa que o Blender executará essas operações que lhe dirão para reverter a simulação Então, agora a bola também deve estar aqui em 0,9 no eixo x. Mas como estamos multiplicando a posição no eixo x por menos um, salta para o outro lado para -0,9 no A solução para isso é simples. Precisamos trazer essa bola duas unidades para a direita, o que podemos fazer adicionando um nó vetorial de metanfetamina, configurá-lo para adicionar e vamos adicionar duas no eixo x. E agora, se eu apertar play, você notará que o ponto salta perfeitamente da parede direita, e essa é a nossa restrição para a Agora vamos criar a restrição para a parede esquerda. Isso deve ser simples. Vou duplicar toda a restrição da parede direita e conectá-la depois dela dessa forma A parede esquerda é a linha negativa. Quando a bola toca a parede esquerda? Ou a linha menos uma, quando a posição for igual ou menor que menos um, mudarei minha condição para quando a posição no eixo x for menor que menos Então essa é minha nova condição. O que deveria acontecer é revertermos a velocidade multiplicando-a por menos um no Então, vou manter esses nós do jeito que estão, e para a posição definida, vamos multiplicá-la por menos Precisamos corrigir isso adicionando dois. No caso da parede esquerda, como estamos multiplicando por menos um no eixo x, isso significa que a bola agora pulará para o lado direito, então precisamos movê-la duas unidades para trás, que podemos fazer facilmente Tudo o que você precisa fazer é alterar esse nó matemático vetorial de adicionar para subtrair. Agora, se eu apertar play, você verá como nosso ponto está saltando da parede direita e esquerda, e é exatamente isso que queremos Agora criamos a restrição para a parede direita e esquerda Faremos exatamente a mesma coisa apenas para a parede frontal e traseira. Em nossa janela de visualização em três D, agora estamos vendo a vista frontal, que significa que essa é a parede direita e esquerda Se eu acertar três no teclado numérico, vou pular para a vista lateral, o que significa que agora esta é a frente, esta é a parte de trás. Outra forma de pensar nisso anteriormente, estávamos trabalhando ao longo do eixo x. Se eu pressionar um no teclado numérico, você verá a linha vermelha que representa o eixo x. Agora, se eu acertar três no teclado numérico, pularei para a vista lateral e trabalharei ao longo do eixo y agora. Criar restrições para ambos será muito Vou apenas duplicar toda a configuração da parede direita e esquerda e alterá-la de funcionar com base no eixo x para o eixo y. Vou selecionar esses dois grupos de nós e pressionar D para duplicá-los Vou conectá-los assim. Vamos começar com a parede direita , que agora é a parede frontal. Altere o valor proveniente do eixo x y z separado para o eixo y. Deve ser igual ou maior que um. Se essa condição for atendida, faremos o seguinte. Pegue a velocidade e multiplique por menos um no eixo y agora e mude o eixo x de volta para Para a posição, a mesma coisa, multiplique por menos um no eixo y e mude o eixo x de volta para E como também precisamos considerar a correção, agora precisamos adicionar dois no eixo y e escrever zero no eixo x. Essa é a restrição para a parede frontal. Agora vamos passar para a restrição da parede traseira. Eu farei uma coisa parecida. Altere o valor que sai do eixo x y z separado para o eixo y. Deve ser igual ou menor que menos um. E se essa condição for atendida, faremos o seguinte. Pegue a velocidade e multiplique por menos um no eixo y agora e mude o eixo x de volta para Para a posição, a mesma coisa, multiplique por menos um no eixo y e altere o eixo x de volta para E como também precisamos considerar a correção, agora precisamos subtrair dois no eixo y e escrever zero no eixo x. E é assim que você constrói a restrição tanto para a parede frontal quanto para a traseira Agora, se eu voltar para a primeira loja chamada node de atributo que está nos dando alguma velocidade inicial e der ao nosso ponto também alguma velocidade inicial no eixo y e clicar em play, você verá nosso ponto saltando Ok, então é assim que você pode criar algumas restrições para sua No próximo vídeo, substituiremos esses pontos por algumas esferas, basicamente ou taças, que introduzirá um novo conjunto de desafios que precisamos superar 12. Raio: Adicionando o raio. Neste momento, estamos executando nossa simulação com base em pontos. Como mencionei antes, os pontos no Blender são apenas contêineres de dados que podemos trocar posteriormente com outros objetos O que queremos fazer neste vídeo é basicamente substituir esses pequenos pontos por esfera ou qualquer objeto. Se eu for até o final da minha árvore de nós e adicionar um nó chamado instance on points, eu o conectarei logo antes do nó de saída do grupo. Essa instância no nó de pontos substituirá o ponto por uma instância ou um objeto de três D que escolheremos. Eu quero substituir esses pontos por esfera. Vou adicionar uma esfera U. E vou conectá-lo ao soquete da instância. E como você pode ver, nosso ponto agora é substituído pela esfera. Para o raio dessa esfera UV, eu queria herdar o raio dos pontos, que podemos especificar a partir do nó de pontos, o primeiro nó do notário Uma maneira de contornar isso é adicionar o nó radius e conectá-lo à escala da instância no nó de pontos E agora, se eu mudar o raio dos pontos, também mudarei o raio das instâncias ou das Agora, se eu apertar play, você notará como nossa esfera está saltando do chão e das paredes laterais Mas se você se concentrar, notará um pequeno problema. Ou um grande problema, dependendo de como você o vê. Você notará que quando a esfera toca o chão, parte da esfera fica abaixo linha do piso. Por que isso? Bem, já que estávamos lidando com pontos anteriormente, eu disse que eles são apenas contêineres de dados, então eles não têm realmente um raio Agora que substituímos esses pontos esferas que têm uma geometria real de três D e têm um raio, precisamos considerar isso em nosso mecanismo Em outras palavras, precisamos descobrir uma maneira tornar nossa árvore de nós ciente do raio, para que ela o considere ao executar a simulação Será simples. Eu prometo. Vamos começar primeiro com a restrição do piso. Quando a esfera toca o chão? Isso deve ser fácil de responder. Quando a posição é menor que o raio. Lembre-se sempre de que a posição é avaliada a partir do ponto central de um objeto. Quando a posição ou o centro dos três objetos D é menor que o raio, isso significa que o objeto três D está tocando o chão Para a restrição de piso, tudo o que preciso fazer é adicionar um nó de raio e conectá-lo na operação menor que Agora, se a posição da esfera for menor que o raio, faça as seguintes operações Se eu clicar em play, tudo correrá bem. Parece que a bola está saltando do chão. Mas se eu mudar o raio do ponto para algo como 0,5 metro, por exemplo, e apertar play novamente para pegar a simulação, você verá algo estranho Agora, a bola, por qualquer motivo vai para baixo do chão antes de quicar Por que isso? Bem, você vê que o Blender está fazendo todo o cálculo com base no centro do objeto É importante enfatizar que todas as operações que estamos fazendo aqui são todas baseadas nos pontos que criamos. Esses pontos só se tornam esferas no final do notário quando usamos a instância em pontos conhecidos Então, até este ponto do notário, ainda estamos lidando com pontos, que significa que o Blender está vendo pontos aqui, Então, como solução para isso, podemos dizer ao Blender o seguinte Se a bola tocar o chão, mova-a para baixo na quantidade do raio, faça a correção e, em seguida, coloque-a volta. Isso terá a seguinte aparência nos Vou adicionar um nó de raio e conectá-lo a um nó XY Z combinado no eixo Z. Estamos fazendo várias operações em vetor, é por isso que preciso converter esse raio, que é um valor único, em um vetor Eu quero mover a posição para baixo na quantidade do raio Vou adicionar um nó matemático vetorial, alterar a operação para subtrair e vou conectar a posição ao primeiro soquete, o que significa que vou subtrair O segundo valor deve ser o vetor que obtivemos do raio. Então, conectarei o vetor do nó x Y Z combinado ao segundo soquete Em seguida, faremos nossa correção usando esse nó de multiplicação vetorial Precisamos cancelar a operação de subtração que fizemos antes adicionando um conjunto de nós matemáticos vetoriais para adicionar, e eu adicionarei o vetor que subtraí antes, que é o vetor que sai do nó combinado x Y Se eu apertar play, você notará que a bola agora está quicando do chão da maneira certa Agora vem a pior parte, que é que precisamos fazer uma correção semelhante todas as restrições diferentes, direita e esquerda, frente e verso Mas isso será simples. Vamos fazer isso muito rápido. Vamos começar com a condição da parede direita. Quando a esfera toca a parede direita? Simples quando a posição no eixo x é maior que um menos o raio Vou adicionar um nó de raio. Vou conectá-lo a um nó matemático, configurá-lo para subtrair, para que seja um menos o raio, e conectá-lo ao nó maior que Essa é minha nova condição. Por que deveria acontecer agora se essa condição for verdadeira? Inverta a velocidade, que deve ficar do jeito que está. Se eu apertar play, você ainda notará que a bola ainda vai além da parede direita porque precisamos fazer uma correção semelhante à que fizemos no chão. Deslocando a simulação para a direita, faça a correção e, em seguida, mova-a de volta Isso será mais ou menos assim. Vou adicionar um nó de raio e conectá-lo ao nó xyz combinado no eixo x desta Como mencionei antes, estamos fazendo várias operações em vetor. É por isso que preciso converter esse raio, que é um valor único, em um vetor Quero mover a posição para a direita de acordo com a quantidade do raio Vou adicionar um nó matemático vetorial, alterar a operação para adicionar. Vou conectar a posição ao primeiro soquete, o que significa que adicionarei à posição o segundo valor, que deve ser o vetor que obtivemos do raio Então, conectarei o vetor do nó x y z combinado ao segundo soquete Em seguida, faremos nossa correção usando esse nó de multiplicação vetorial. Em seguida, usaremos a operação ad para contar a outra correção e precisaremos cancelar as operações de adição que fizemos antes adicionando um nó matemático vetorial definido para subtrair, e eu subtrairei o vetor que adicionei antes, que é o vetor que sai do nó combinado x y z. Se eu apertar play, você notará que a bola agora está quicando na parede direita corretamente Essa é a correção para a parede direita. Agora precisamos fazer isso para a parede esquerda. Vamos começar com a condição da parede esquerda. Quando a esfera toca a parede esquerda? Simples quando a posição no eixo x é menor que menos um mais o raio ou o raio Vou adicionar um nó de raio. Vou conectá-lo a um nó matemático, configurá-lo para subtrair, para que seja o raio menos um, e conectá-lo ao nó menor que Essa é minha nova condição. Deve acontecer agora se essa condição for verdadeira. Inverta a velocidade, que deve ficar do jeito que está. Se eu apertar play, você ainda notará que a bola ainda vai além da parede esquerda, porque precisamos fazer uma correção semelhante à que fizemos para chão e a parede direita, alterando a simulação para a esquerda Faça a correção e, em seguida, mova-a de volta. Isso será mais ou menos assim. Vou adicionar um nó de raio e conectá-lo um nó x Y Z combinado no eixo x desta vez Eu quero mover a posição a esquerda pela quantidade do raio Vou adicionar um nó matemático vetorial, alterar a operação para subtrair. Vou conectar a posição ao primeiro soquete, o que significa que vou subtrair da posição, o segundo valor, que deve ser o vetor que obtivemos do raio Vou conectar o vetor do nó xyz combinado ao segundo soquete Em seguida, faremos nossa correção usando esse nó de multiplicação vetorial Em seguida, usamos a operação de subtração para contar a outra correção e precisamos cancelar a operação de subtração que fizemos antes adicionando um nó matemático vetorial e configurando-o para Vou adicionar o vetor que subtraí antes, que é o vetor que sai do nó combinado xy Z Se eu apertar play, você notará que a bola agora está quicando corretamente na parede esquerda Essa é a correção para a parede esquerda. Agora precisamos fazer isso na parede frontal e traseira. Isso deve ser muito semelhante à parede direita e esquerda. Vou pressionar três no teclado numérico para pular para a vista lateral, e vamos começar fazendo a correção para a parede frontal, que se parece com a parede direita dessa vista. Quando a esfera toca a parede frontal? Simples quando a posição no eixo y é maior que um menos o raio Vou adicionar um nó de raio. Vou conectá-lo a um nó matemático, configurá-lo para subtrair, para que seja um menos o raio, e conectá-lo ao nó maior que Essa é minha nova condição. O que deve acontecer se essa condição for verdadeira? Inverta a velocidade, que deve ficar do jeito que está. eu apertar play, você ainda notará que a bola ainda vai além da parede frontal porque precisamos fazer uma correção semelhante à que fizemos antes, colocando a simulação na frente, fazendo a correção e depois movendo-a para trás. Isso será mais ou menos assim. Vou adicionar um nó de raio e conectá-lo a um nó xyz combinado no eixo y desta Eu quero mover a posição para frente pela quantidade do raio Vou adicionar um nó vetorial de metanfetamina. Altere a operação para adicionar e conectarei a posição ao primeiro soquete, o que significa que adicionarei à posição o segundo valor, que deve ser o vetor que obtivemos do raio Então, conectarei o vetor do nó xyz combinado ao segundo soquete Em seguida, faremos nossa correção usando esse nó de multiplicação vetorial Em seguida, usamos a operação ad para contar a outra correção, e precisamos cancelar a operação de adição que fizemos antes adicionando um nó vetorial de metanfetamina definido para subtrair, e eu subtrairei o vetor que adicionei antes, que é o vetor que sai do nó xyz combinado Se eu clicar em play, você notará que a bola agora está saltando corretamente na parede frontal Esta é a nossa correção para a parede frontal. Agora precisamos fazer o mesmo com a parede traseira. Vamos começar com a condição. Quando a esfera toca a parede traseira? Simples. Quando a posição no eixo y é menor que menos um mais o raio ou o raio Vou adicionar um nó de raio. Vou conectá-lo a um nó matemático, configurá-lo para subtrair, então será o raio menos um e conectá-lo ao nó menor que Essa é minha nova condição. O que deve acontecer agora se essa condição for verdadeira? Inverta a velocidade, que deve ficar do jeito que está. Se eu apertar play, você ainda notará que a bola ainda vai além da parede traseira porque precisamos fazer uma correção semelhante à que fizemos antes, alterando a simulação para trás, fazendo a correção e depois movendo-a para frente Será algo parecido com isso. Vou adicionar um nó de raio e conectá-lo ao nó combinado XY Z no eixo y desta vez Eu quero mover a posição para trás na quantidade do raio Vou adicionar um nó matemático vetorial, alterar a operação para subtrair e vou conectar a posição ao primeiro soquete, o que significa que vou subtrair da posição, o segundo valor, que deve ser o vetor que obtivemos do Então, conectarei o vetor do nó XYZ combinado ao segundo soquete Em seguida, faremos nossa correção usando esse nó de multiplicação vetorial Em seguida, usamos a operação de subtração para contar a outra correção, e precisamos cancelar a operação de subtração que fizemos antes adicionando um nó matemático vetorial, configurando-o para adicionar, e eu adicionarei o vetor que subtraí antes, que é o vetor que sai do nó combinado x Se eu clicar em play, você notará que a bola agora está quicando corretamente na parede traseira E agora nosso mecanismo de física está ciente do raio dos pontos e o considerará ao executar a simulação Sei que pode parecer que fizemos muitas operações neste vídeo e isso pode ser avassalador Mas caso você não entenda exatamente o que fizemos, volte e assista a este vídeo desde o início e tente se concentrar um pouco e tentar visualizar o que está acontecendo, e você ficará surpreso com a facilidade desses conceitos Eu sei que pode parecer muito complicado, especialmente quando estou fazendo as coisas tão rápido, mas acredite, uma vez que você entenda, você será capaz de fazer isso literalmente olhos vendados, porque você entende os conceitos Provavelmente também riremos de si mesmos por pensar que isso também é complicado. É assim que podemos implementar o raio em nossa simulação, e agora só há mais um problema que precisamos resolver, que é como fazer essas bolas colidirem umas com É isso que faremos no próximo vídeo. 13. Colisão: Colisão. Olá, bem-vindo ao último vídeo técnico sobre como criar seu próprio mecanismo de física no Blender usando nós de geometria Passamos por muita coisa, então dê algum crédito a si mesmo porque esse vídeo pode ser o mais complicado até agora. Não vamos adicionar muitos nós, mas alguns de vocês podem achar um pouco complicado entender os conceitos por trás de todas as operações que faremos neste vídeo. Mas farei o meu melhor para explicar tudo passo a passo. E espero que, se você se concentrar o suficiente, entenderá exatamente a lógica do que construiremos Foi aqui que paramos da última vez, e agora estamos lidando apenas com um ponto. Ou uma bola. Eu quero ter vários. A maneira mais fácil de contornar isso será aumentar o número de pontos para algo como dez, digamos. E vamos ajustar o raio para algo pequeno, como 0,2 metros. Agora, todas essas bolas estarão em cima umas das outras. É por isso que vou me conectar à posição, um nó de valor aleatório, e esse nó atribuirá uma posição aleatória a cada ponto. E tudo o que você precisa fazer é fornecer um intervalo especificando um valor máximo mínimo, e ele atribuirá um valor aleatório nesse intervalo para cada ponto Você pode jogar com os valores até obter o resultado desejado. Mas no meu caso, acabei usando esses valores para os valores mínimos menos um menos um, três, e para os valores máximos, um, 15 Agora, se eu apertar play, você verá que agora temos dez esferas, mas o maior problema é que todas essas taças se cruzam umas com as outras. Não estão colidindo. Dissemos ao Blender que fizesse as bolas quicarem nas diferentes paredes, mas não pedimos que ele também as fizesse quicar umas nas outras, e essa é uma parte crucial da construção de nosso próprio motor de física Então, como podemos fazer uma coisa dessas? Vamos tentar debater algumas ideias sobre como podemos programar uma coisa dessas Vamos começar com a primeira pergunta. Uma delas é que duas bolas basicamente colidem? Porque se conhecermos essa condição, podemos dizer ao Blender que, ei, se essa condição acontecer, faça Bem, eu vou te dar a resposta. Duas bolas colidem quando a distância entre elas ou a distância entre os centros é menor que o raio multiplicado Acho que isso deve ficar claro nessa visualização. Eu sempre acho difícil pronunciar essa palavra. Essa é a lógica da condição que construiremos mais tarde. Diremos ao Blender que sempre calcule a distância entre dois pontos, e se a distância entre eles for menor que o raio multiplicado por dois, isso significa que eles estão colidindo, isso significa que eles estão colidindo, e você deve fazer Agora, vamos traduzir isso em nós. Vou adicionar um nó chamado índice do mais próximo. Esse nó me dará o índice do ponto mais próximo. Se eu pular para o espaço de trabalho dos nós de geometria, como mencionei antes, cada ponto terá um índice que se refere a O índice do nó mais próximo me dará esse índice do ponto mais próximo de um determinado ponto. Depois de saber o índice do ponto mais próximo, posso pedir ao liquidificador que leia sua posição, que você pode fazer adicionando um nó chamado evaluate at index, que é uma forma de saber o blender Para esse ponto, quero que você calcule algo. No nosso caso, queremos saber a posição desse ponto. Vou mudar o tipo de flutuante para vetor. Porque a posição é um vetor. Vou adicionar um nó de posição e conectá-lo ao valor. Agora, o vetor de saída dessa avaliação no nó do índice é o vetor de posição do ponto mais próximo, ponto B, que é o mais próximo do meu ponto. A saída do nó de posição é o vetor de posição do ponto A. Depois de ter esses dois vetores, posso adicionar um nó matemático vetorial e alterar a operação para distância Se eu conectar o vetor proveniente do avaliação no índice e do nó de posição, esse nó me dará a distância entre eles Agora, como eu sei se esses dois pontos estão colidindo? Eu disse a resposta antes. Se a distância entre os dois pontos for menor que o raio multiplicado por Vou adicionar um nó de raio que multiplicarei por dois, a distância deve ser menor que duas vezes o A saída agora dessa operação inferior é minha condição para quando dois pontos ou bolas estão colidindo Agora, há algo importante em que precisamos pensar, a ordem das operações. Se executarmos as restrições de colisão antes ou depois da restrição de bolas , pense nisso A resposta é antes. Precisamos contar com as colisões antes das restrições das paredes A razão disso é que faz mais sentido calcular a colisão antes que as paredes toquem as paredes, pois elas podem se afastar das paredes ou se empurrar contra as Uma vez que saibamos disso, podemos eliminar as restrições das paredes. É por isso que adicionarei um nó de posição definida e o conectarei antes da parte em que temos as outras restrições Basicamente, logo após o nó responsável pela atualização da posição. E eu vou apagar o resultado da operação menor que. Para o soquete de seleção da nota de posição definida. Agora que terminamos de construir nossa condição, agora precisamos passar para o que deve acontecer se essa condição for verdadeira ou o que deve acontecer se duas bolas estiverem colidindo Então, minha pergunta agora, o que deve acontecer se duas bolas estiverem colidindo? Pense sobre isso. A resposta é a seguinte. Se duas bolas estão colidindo, precisamos afastá-las uma da outra Isso é uma coisa segura de se dizer, e também acho que é supergenial dizer Mas há duas questões importantes que precisamos responder. Em primeiro lugar, em quanto devemos compensar essas duas bolas É assim ou eles vão se esforçar assim? Isso é uma coisa importante de descobrir. Então esse é o número um. Número dois, em qual direção. Então, se essas duas bolas colidirem, elas iriam assim ou isso ou isso ou isso Isso também é importante: precisamos descobrir uma maneira de traduzi-lo em nós. Quanto precisamos compensar a posição dos dois pontos, isso deve ser simples Calcule a distância entre os dois pontos, divida-a por dois e mova cada ponto nesse valor. Para a direção, é necessário empurrar o vetor que cruza os dois pontos Como podemos calcular o vetor? Aqui está o vetor de posição para o ponto A, e aqui está o vetor de posição para o ponto B. Eu posso calcular o vetor que os cruza fazendo uma operação de subtração, vetor posição do ponto menos vetor posição do ponto B. Isso me dará o vetor ao longo do qual a posição de deslocamento deve acontecer Agora, vamos traduzir todos esses pensamentos em nós. Começarei calculando o vetor que cruza os dois pontos Como eu disse, essa será a posição do ponto A menos a posição do ponto B, o que você pode fazer adicionando um nó matemático vetorial e configurando-o para subtrair Vou conectar a posição no primeiro soquete e o vetor que sai do índice de avaliação no segundo soquete Esse é o vetor ao longo do qual moverei os dois pontos. Agora, vamos passar para a quantidade de por quanto compensar os dois pontos Precisamos calcular essa distância dividida por dois, e essa é a quantidade de quanto eu deveria compensar cada ponto Como posso calcular a linha vermelha? Esse é o raio. Esse também é o raio e essa é a distância entre os dois pontos Se eu fizer duas vezes o raio menos a distância, isso me dará o comprimento da linha vermelha ou o quanto os dois pontos estão se cruzando Vamos traduzir isso em notas. Vou adicionar um conjunto de notas matemáticas para subtrair. A operação é duas vezes o raio, menos a distância entre os dois Vou adicionar outro nó matemático e configurá-lo para dividir, e eu vou dividi-lo por dois. O resultado disso é a quantidade de compensação. Vou adicionar um nó matemático vetorial, alterá-lo para escala e escalar o vetor ao longo do qual quero que a operação aconteça, que vem do nó de subtração do vetor, e escalá-lo pela quantidade proveniente do nó matemático de divisão Isso irá direto para o soquete de deslocamento do nó de posição definida E é isso. É assim que você pode criar uma colisão em nosso motor de física Agora, se eu apertar play, você ainda notará que as bolas ainda estão colidindo Essa é a parte em que você pode começar a me odiar porque mesmo depois de toda essa matemática complicada, ela ainda não funciona Mas vamos consertar isso. Quero mencionar que não é que o que fizemos esteja errado, o problema é com o liquidificador Não é nossa culpa. São liquidificadores Como mencionei antes, devido ao método de integração de lubrificadores usado no Blender , precisamos lidar com altos números O método de integração do lubrificador é, na melhor das hipóteses, bom e é realmente propenso a erros Então, a melhor solução para tornar nossa simulação mais precisa é, em vez de executar essa operação apenas uma vez, se pudermos descobrir uma maneira de dizer ao Blender que cada quadro não executa esse mecanismo de física apenas uma vez, execute-o, por exemplo, 100 vezes Dessa forma, você obterá um resultado mais preciso. Na verdade, você já sabe a resposta para essa pergunta. Você consegue adivinhar? O tambor rola e está repetindo zonas A primeira coisa sobre a qual falamos neste curso. O que vou fazer é adicionar uma zona de repetição e inserir todo o meu sistema de restrição dentro da zona de repetição desta forma E agora, a partir do primeiro nó da zona de repetição, posso especificar quantas vezes quero que o Blender calcule as restrições Sim, o Blender executará a simulação apenas uma vez, mas posso especificar, usando a zona de repetição, quantas vezes executar determinadas operações em um quadro Isso é chamado de subetapa. Eu farei, por exemplo, 50. Agora, se eu apertar play, blender, cada quadro executará o sistema de colisão 50 vezes para obter um resultado realmente preciso E agora, como você pode ver, nossas bolas estão colidindo bem e tudo está funcionando bem, e é assim que criamos o sistema de colisão No próximo vídeo, compartilharei algumas reflexões finais sobre como fazer certas coisas em nosso mecanismo de física. 14. A desova do Particle: Partículas desovando. Olá e bem-vindo, e neste vídeo, vamos fazer com que os pontos apareçam com o tempo e não os tenhamos todos de uma vez É aqui que paramos da última vez. No momento, nossa simulação tem apenas dez pontos. Digamos que eu queira 100 pontos. Se eu aumentar o número de pontos para 100 e clicar em play, você notará que a simulação ficará confusa porque quando aumentamos o número de pontos, aumentamos a probabilidade de erro, que tornará a simulação super instável Então, qual é a solução para isso? Bem, em nossa simulação atual, temos 100 pontos desde o início. E se descobrirmos uma maneira de fazer com liquidificador não tenha 100 pontos desde o início, mas os gere ou os adicione ao longo Isso deve levar a uma simulação mais estável. Como podemos fazer isso? Vamos começar com a primeira parte, que é como fazer com que o liquidificador gere as partículas ao longo do tempo? Isso será simples. Tudo o que você precisa fazer é adicionar um nó de geometria da junta e conectá-lo como o primeiro nó na zona de simulação Vou pegar a saída do nó de pontos, tecnicamente do nó de atributo denominado loja , e conectá-la ao nó de geometria da junta O que acontecerá agora é que o liquidificador adicionará mais pontos cada vez que executar a simulação Ou, para ser mais preciso, Blender unirá a geometria anterior com a nova geometria Em seguida, vou diminuir o número de pontos para um, porque se eu não fizer isso, o liquidificador explodirá Começará a ter 100 pontos e cada quadro adicionará outros 100 pontos. Você pode ver facilmente como isso fará com que tenha um número absurdo de pontos muito rápido, que travará o software. Quando eu altero o número de pontos para um, Blender adiciona apenas um ponto a cada quadro Na verdade, isso ainda é demais, e precisaremos fazer um liquidificador gerar um ponto, talvez a cada 20 quadros Mas antes de fazermos isso, se eu apertar play, como você pode ver, Blender está adicionando um novo ponto a cada quadro, que ainda é demais, e ainda está fazendo com que a estimulação fique A solução será dizer ao liquidificador que T não aponta um ponto para cada quadro Talvez adicione um ponto a cada dez quadros ou 20 quadros. Então, como podemos programar uma coisa dessas? Começarei adicionando um mesmo nó de tempo. Esse nó me fornecerá o valor dos segundos ou o quadro que estou ativado. Vou pegar a moldura e conectá-la ao nó de contagem de pontos. Agora, no primeiro quadro, o liquidificador adicionará um ponto. No quadro dois, o Blender adicionará dois pontos, então eu terei três pontos e no quadro três, o Blender adicionará três pontos, então eu terei seis pontos no total Isso não é o que eu quero. Eu quero dizer ao Blender que um ponto a cada certo número de quadros Vou adicionar um nó matemático e vou configurá-lo como módulo com piso módulo Floord é apenas uma maneira elegante de dizer que esse nó retornará o restante de uma operação de divisão Esse nó nos permitirá especificar com que frequência queremos que o liquidificador adicione um novo ponto Também adicionarei outro nó matemático e o definirei como igual a dois, e o valor deve ser zero. Aqui está a lógica do que está acontecendo. Blender pegará o número do quadro e o dividirá por esse valor e se o restante for igual a Isso significa que essa condição igual à é verdadeira, o que significa que esse nó produzirá um, então o Blender adicionará um E se o restante não for igual a zero, isso significa que essa condição igual a dois é falsa, que significa que esse nó produzirá zero, então o Blender não adicionará nenhum Quer que o liquidificador adicione um ponto em 20 quadros. Isso é o que eu vou conseguir se eu digitar 20 aqui. Aqui está um exemplo do que vai acontecer. Digamos que eu esteja no quadro 55. O Blender dividirá 55 por 20. O restante da operação é 15. 15 não é igual a zero, o que significa que esse nó produzirá zero, e como esse nó vai para a contagem do nó de pontos, isso significa que o liquidificador não adicionará nenhum ponto Agora, digamos que eu esteja no quadro 60. O Blender dividirá 60 por 20. O restante da operação é zero, zero é igual a zero, que significa que esse nó produzirá um porque essa condição é verdadeira agora Esse vai para o soquete de contagem de pontos, e o Blender adicionará um ponto à Acho que a lógica agora deve estar clara do que está acontecendo. Agora, se eu clicar em play, Blender começará a adicionar partículas gradualmente, que é exatamente o que eu quero A última coisa que quero fazer é mandar o Blender gerar cada ponto em uma direção diferente Posso fazer isso atribuindo um vetor de velocidade inicial aleatório a cada ponto, que você pode fazer facilmente conectando um nó de valor aleatório soquete vetorial do atributo do nome da loja que define a um vetor de velocidade inicial aleatório a cada ponto, o que você pode fazer facilmente conectando um nó de valor aleatório ao soquete vetorial do atributo do nome da loja que define a velocidade inicial. E eu adiciono os valores a menos um menos 10 para o mínimo e 110 para o É assim que podemos fazer com que o liquidificador gere as partículas ao longo do Acho que a lógica é super simples. No próximo vídeo, adicionaremos uma fração à nossa simulação. 15. Atrito: Adicionando fração. Uma parte importante de qualquer simulação é a fração. Sem atrito, as bolas continuarão quicando É por isso que é importante descobrir uma maneira de fazer o liquidificador atenue a simulação com o tempo Na verdade, abordamos esse tópico antes, mas o que faremos neste vídeo é tornar o processo de alteração do atrito um pouco mais fácil Agora, esta é toda a nossa árvore de notas, e o que pretendo fazer é o seguinte. Como você se lembra, nas restrições, eu tenho a velocidade que é multiplicada por menos um Se eu elevar esse valor para algo como -0,8, isso levará a mais atrito O que eu quero é alterar esse valor para todos os diferentes nós multiplicados uma só vez. Isso é simples. Vou adicionar um nó xy z combinado. Vou inserir o mesmo valor aqui, um, um menos um e conectá-lo ao vetor do nó de multiplicação Não fiz nada extravagante, apenas substituí o valor no multiplicação por esse nó combinado x y z. A razão pela qual fiz isso é que agora posso adicionar um nó de entrada de grupo, pegar o eixo z e conectá-lo à entrada do grupo. Agora, se eu for para a guia do modificador, você verá que posso alterar o valor a partir Além disso, é importante observar que só alterarei o valor dos eixos z porque esse é o soquete conectado à entrada do grupo Para o resto dos soquetes, eles permanecerão um. Isso facilitará muito o processo de alteração dos valores de atrito Agora, preciso fazer a mesma coisa para todas as diferentes restrições Começarei fazendo isso na parede direita, adicionarei um nó x Y Z combinado e adicionarei uma entrada de grupo. Vou passar para a parede esquerda, adicionar um zende x y combinado com os mesmos valores e adicionar uma entrada de grupo Eu farei a mesma coisa também para a parede frontal agora. Por fim, farei a mesma coisa com a parede traseira. S. E agora eu posso controlar o atrito facilmente a partir daqui. Também posso abrir a barra lateral pressionando n e o editor de nós de geometria, selecionar uma das entradas do grupo e você pode clicar duas vezes para alterar o nome dessa propriedade para algo Para minha simulação, vou definir o valor de atrito em -0,9 Outra forma de adicionar fração é voltar para a loja chamada nó de atributo que define a velocidade, e se eu adicionar um nó matemático vetorial e configurá-lo em escala, poderei diminuir a velocidade em toda a É como um atrito global que se aplicará a cada quadro. Posso até adicionar uma entrada de grupo e conectá-la lá, mudar seu nome para atrito global Vou configurá-lo para 0,99. A simulação perderá velocidade por um fator de 1% a cada quadro Além disso, pode ser útil alterar o número de etapas da zona de repetição a partir da etapa do modificador É por isso que também o conectarei um nó de entrada de grupo e o chamarei, por exemplo, de subetapas, e o configurarei como 20 Esses são os valores que eu uso para a renderização promocional. Por fim, definirei minha taxa de quadros para 120, então terei uma taxa de quadros realmente suave e minha simulação estará menos sujeita a erros Para o intervalo de quadros, digamos que eu queira uma renderização de dez segundos, o que significa que meu intervalo de quadros será de até 1.200 quadros Se eu clicar em play, nossa simulação está funcionando sem problemas. É isso aí, pessoal, por esse vídeo. Tecnicamente, terminamos tudo. Na próxima, mostrarei como criei a cena final e como renderizá-la. 16. Visão geral final: Olá de novo. Na última vez. Este é o último vídeo sobre construir nosso próprio motor de física no Blender Este vídeo é um resumo , uma visão panorâmica de tudo o que fizemos até agora A primeira coisa com a qual vou começar neste vídeo é nosso notário, porque atualmente está uma bagunça absoluta Se você decidir voltar a esse projeto no futuro, provavelmente se perderá no C de todos esses nós diferentes. É por isso que vou começar organizando e rotulando o notário e depois passarei para o resumo Ok, bem-vindo de volta ao Blender, e esta é toda a minha tentativa, e é uma bagunça Vou clicar na barra de espaço de controle para maximizar esse editor. Como você pode ver, há muitos nós e, especialmente no futuro, será difícil realmente entender o que está acontecendo porque não rotulamos nossa nota como try. O que faremos neste vídeo, como mencionei, é, antes de tudo, começar organizando nossa árvore de notas. Vou até o início da tentativa de nota. Vou selecionar todos esses nós, pressionar Control G para criar um rótulo em torno deles, pressionar F dois para obter um nome e vamos chamá-lo, por exemplo, de condição inicial. Assim que tivermos nossa condição inicial, entramos na zona de simulação. Temos essa geometria da junta responsável por adicionar pontos ao longo do tempo. Depois disso, definimos a aceleração usando esse atributo nomeado, e ela está relacionada à escala e a esse nó vetorial. Certifique-se de selecionar os três. Pressione Control G, F dois para obter um nome, e vamos chamá-los de aceleração. Em seguida, você terá o atributo nome da loja responsável por definir a velocidade Vamos movê-lo para cá. A mesma coisa. Vamos colocar todos esses nós em cima uns dos outros desta forma, empilhando-os. Selecione todos esses nós, controle G e F dois para obter um nome e vamos chamá-lo de velocidade porque estamos definindo a velocidade usando esses Em seguida, atualizaremos a posição usando o nó de posição definida, então empilhe os nós uns sobre os outros Selecione-os, controle G, F dois e vamos chamá-los de atualização de posição. Depois disso, entramos na zona de repetição , responsável por compilar todas as diferentes restrições Vamos colocar esse nodo por aqui. Na verdade, vou adiantar, mas vamos tentar encontrar uma solução para toda essa bagunça aqui Na verdade, para facilitar todo o processo e ter mais espaço, começarei a organizar esses nós a partir do final. Eu terei esses nós responsáveis por transformar os pontos em esferas, então selecionarei todos eles, Control G para criar um rótulo, F dois para um nome, e vamos chamá-lo, por exemplo, por exemplo, Mova-os de volta. Mova isso também para trás. Quanto menos restrições eu tenho aqui, é a restrição para a parede traseira Vamos selecioná-lo inteiramente, que devem ser todos esses nós. Vamos organizá-los. Em primeiro lugar, você terá esses nós no topo. Vou pegar o Control G, e essa é minha condição. Vamos organizar esses nós aqui. Algo parecido com isso. Talvez você trabalhe. E então eleja todos esses nós, Controle G, F dois para um nome, e vamos chamá-lo de back wall strant Em seguida, você terá isso. Faça algo semelhante, selecione estes, Controle G e F dois, e vamos chamá-lo de condição. Em seguida, vou mover esses nós aqui. Esse aqui, aqui, esses aqui. Selecione todos eles. Controle G, F dois para obter um nome e vamos chamá-los de restrição da parede frontal Agora, para a restrição de parede esquerda, todos esses nós, selecione essas duas condições de controle G F. Em seguida, está aqui, esse aqui e esse aqui. Selecione toda a árvore de notas, controle G, F dois, parede esquerda, restrição Agora, para a restrição de parede direita, controle G, condição F dois, mova esses nós aqui A mesma coisa para este e este, então assim. Em seguida, selecione todos eles, controle G, F dois, restrição de parede direita Por fim, a restrição de piso, que são esses nós Faremos algo semelhante. Selecione a condição de controle G, F dois. Mova esses aqui, para a posição, para a velocidade, desculpe, e selecione todos eles Controle G F restrição de dois andares. Essas são as diferentes restrições e, por último, você terá Vamos tentar descobrir uma maneira de organizar tudo isso. Vou selecionar todos eles e mover tudo para baixo. Eu acho que isso vai ser melhor. Vamos colocar isso aqui e talvez mover a zona p e todos esses nós ligeiramente para a esquerda, e então selecionar todos esses controles G F dois, e isso é chamado de colisão Este é meu grupo de colisão. E traga essa opinião do grupo, um pouco assim. E ao fazer isso, organizamos nossa árvore de nós. No futuro, se você voltar a isso, saberá exatamente o que cada grupo de nós está fazendo. Porque nós os rotulamos. Além disso, quando você tem essa visão panorâmica de toda a árvore de nós, começa a ver a lógica por trás de tudo o que fizemos. Como resumo final, aqui está a lógica de tudo o que construímos. Primeiro de tudo, começamos definindo as condições iniciais, quantos pontos temos, quando queremos gerar pontos e tudo Posteriormente, esses pontos entrarão na zona de simulação. A primeira coisa que fazemos aqui é definir a aceleração e depois definir a velocidade Que nós dois usamos para atualizar a posição dos nossos pontos. Depois de termos essa configuração básica, podemos começar a pensar em diferentes restrições Para nosso mecanismo de física, há dois tipos de restrições com as quais nos preocupamos A primeira é a colisão, que é a colisão entre as diferentes esferas, e depois as diferentes paredes, que são o chão, a parede direita e traseira e a parede esquerda e E no final da árvore de notas, usamos essa instância no nó de pontos para transformar esses pontos em uma geometria real, que no nosso caso era uma esfera EUV E ainda assim, este é todo o nosso motor de física. E sim, é basicamente isso que mostra como você pode construir seu próprio motor de física no liquidificador Agora você pode criar uma cena em torno da simulação e renderizá-la como quiser. Além disso, como o sombreamento e animação estão além do escopo das pontuações, eu queria manter o curso conciso e torná-lo apenas sobre nós geométricos É por isso que fiz um vídeo bônus gratuito que você pode assistir, onde mostro passo a passo como criei minha renderização. Você pode assistir pelo link na descrição ou acessando meu site. A parte do nó de geometria e a parte de barbear são disciplinas bem diferentes, e é por isso que fazia mais sentido mantê-las separadas, já que eu adoto abordagens diferentes para ensinar as duas Por fim, obrigado por se inscrever neste curso. Espero que você tenha aprendido muito. Se você achou este curso útil, deixe uma boa avaliação que nos ajude a criar cursos melhores, e você ainda pode conferir o resto dos meus cursos aqui. Muito obrigado, e nos vemos ou.