Os fundamentos da escrita de scripts Python no Blender | Simon Van Den Hende | Skillshare

Velocidade de reprodução


1.0x


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

Os fundamentos da escrita de scripts Python no Blender

teacher avatar Simon Van Den Hende, Pipeline Developer

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.

      Visão geral

      1:21

    • 2.

      Visão de interface: introdução

      0:53

    • 3.

      Visão de interface: espaço de trabalho de scripts

      1:06

    • 4.

      Visão de interface: painel de informação

      2:22

    • 5.

      Visão de interface: console integrado

      1:13

    • 6.

      Visão de interface: editor de texto

      4:14

    • 7.

      Visão de interface: console do sistema

      3:58

    • 8.

      Criando objetos com código

      16:02

    • 9.

      Como limpar uma cena usando o código

      6:45

    • 10.

      Ideias para construir sobre este projeto

      4:02

    • 11.

      Randomização controlada: introdução

      1:25

    • 12.

      Realização de Randomization (criando uma vedação

      17:03

    • 13.

      Criando uma onda de seno Introdução

      0:28

    • 14.

      Criando uma onda de seno

      13:13

    • 15.

      Leitura e visualização de dados reais: introdução

      0:25

    • 16.

      Leitura dos dados ( csv )

      10:36

    • 17.

      Leitura dos dados ( txt )

      15:20

    • 18.

      Criando o gráfico de bar

      13:37

    • 19.

      Adição de etiquetas

      6:59

    • 20.

      Adição de pontas

      11:32

    • 21.

      Labeling

      13:27

    • 22.

      Criando e Randomizing materiais

      6:56

    • 23.

      Randomização controlada

      6:59

  • --
  • 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.

660

Estudantes

3

Projetos

Sobre este curso


Este curso vai ensinar Python de ponta

Vamos começar lentamente, discutindo todas as ferramentas que Blender tem a oferta. Dessa forma, você sabe exatamente o que está disponível e como usar.
usando esses recursos, vamos criar um fluxo de trabalho proficiente que nos permita trabalhar muito eficaz.

Desde o início começamos a programação. Este curso é muito aplicado, então esteja preparado para escrever um código!
Mas tenha medo Abordamos cada passo e problemas juntos.

Durante este curso, vamos criar cinco scripts do zero, cobrando vários tópicos incluindo:

  • Visão de ferramentas e utilitários

  • Usando o console e dicas de ferramentas

  • Olhar em relação como estruturar e agrupar seu código

  • Como converter e aplicar práticas práticas na programação e scripts

  • Estruturas de dados em Python (listde de dicionário, Float, String, Int )

  • Gerando objetos por código

  • Gerando curvas por meio de código

  • Criando e Assigning materiais por código

  • Randomização controlada

  • Trabalhando com módulos existentes para gerar geometria interessantes

  • Leitura e visualização de dados de arquivos .csv e txt no Blender usando Python usando Python

  • Muitos muitos mais

Se de qualquer momento você está completamente perdido, não tenha medo de me contactar. Ficar muito feliz em ajudar você a ter a sua questão que encontrar. Você não está isolado neste processo.

Vamos começar juntos.

Conheça seu professor

Teacher Profile Image

Simon Van Den Hende

Pipeline Developer

Professor

Pipeline Developer with solid experience and a passion for automation.

 

Worked at Outpost VFX on multiple feature films and television projects. Focusing on Pipeline and Data Flow as well as research and development. Main tools I used here were Python, Maya and Houdini

 

Worked at Prompto on the Pipeline and Data Flow. Focusing on Unreal and Blender tools / automation. All done with Python

 

Besides CGI, I have a strong love for web development / programming in general.

 

If there is anything I can help you with, don't hesitate to reach out on my email address: simonvdhende@outlook.com

I look forward to hearing from you!

Visualizar o perfil completo

Level: Beginner

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. Visão geral: Saiba como fazer scripts Python qualidade de produção hoje obter classificação de especialistas para mim, pipeline, diretor técnico, ver móvel e terminou com lições que são técnicas comprovadas de produção afetadas , enquanto ainda é fácil de seguir e direto ao ponto, ir além do apenas aprender o básico como eu ensino conceitos de programação, fluxos de trabalho eficientes e execução final que vai fazer você trabalhar muito mais eficientemente. Vamos começar por olhar para todos os painéis de codificação e utilitários são ofertas liquidificador são a caixa. E aplicaremos diretamente essas ferramentas e técnicas para solidificar um proficiente ou legal. Nós não precisamos de qualquer experiência em programação ou liquidificador. A fim de seguir adiante, vou guiá-lo através do básico e descobriremos as possibilidades juntos. Nosso registro será estruturado e compreensível. E assim podemos facilmente empurrar-nos mais longe do que jamais seríamos capazes de fazer de outra forma. À medida que temos mais e mais confortável programação e liquidificador, Estaremos sempre nos concentrando na direção da arte para garantir que nossos scripts incluem abundância de detalhes artísticos e controle. O objetivo aqui é criar uma base forte. No final deste curso, você terá criado cinco scripts do zero, e você estará bem no seu caminho para se tornar um programador proficiente. Então junte-se a mim e melhore seu antigo trabalho ou aprenda algo novo hoje. 2. Visão de interface: introdução: Pessoal, é parte do curso e vamos falar sobre nosso ambiente de desenvolvimento, que é onde vamos construir nossos programas e roteiros. Vamos rever todos os painéis de decodificação que o liquidificador tem para oferecer e falar sobre seus casos de uso individuais e armadilhas e apenas garantir que você entenda como usá-los porque eles são muito, muito poderosos. Todos eles realmente apenas muito mais do que, do que escrever um par de linhas de código. Isso só vai mostrar como eu trabalho como um desenvolvedor interativamente com esses painéis, eu posso pegar informações de Brian e usá-lo em outro. Então isso vai ser muito excitante. Ele vai estar falando sobre meu fluxo de trabalho em geral, mas em um nível alto, então é muito compreensível para todos. E então enquanto progride pelo curso e você vai continuar se referindo para frente e para trás através desses painéis e você vai me ver usá-los. Mas, por enquanto, eu só quero ter certeza de que você entenda seus usos e apenas saiba o que eles são. 3. Visão de interface: espaço de trabalho de scripts: Certo, vamos falar sobre nosso ambiente de desenvolvimento. Acabei de lançar o Blender. Estou usando a versão 2.81, ou ele não importa muito, você pode usar qualquer versão. Eu recomendo usar qualquer coisa acima de 2.80. Então ele precisa, nós estamos parecendo meio a mesma coisa. Mas uma vez que você colocar um liquidificador, você deve ver algo como isso, o que é muito bom. Mas não para scripts. Então, para scripts ou programação, você vai ter que escrever algum tipo de texto ou executar alguns comandos que não podemos fazer agora. Então vamos ter que mover espaços de trabalho ou apenas painéis incapazes. Mas isso é feito por padrão se você mover espaços de trabalho. Então, é mais fácil se nós apenas ir para o espaço de trabalho de script, que você pode encontrar que o meio superior aqui. Então você pode clicar nesse cara. E você verá esse layout intimidante ou apenas painéis de texto e coisas que você talvez não tenha visto antes. Mas não tenha medo que ele vai estar passando por isso só para ter certeza que você sabe o que, tudo é. Tudo bem, tudo. Então vamos nos concentrar e vamos fazer exatamente isso. 4. Visão de interface: painel de informação: O primeiro painel de que vou falar é do pequenote aqui em baixo. Você pode ver meu cursor. Eu, ele está escondendo seu nome agora, mas é a batalha de informações bem aqui você, então sob script, estes são os três painéis de que vamos falar. O primeiro vai ser script do que painel completo, desculpe. Então, a partir de agora, parece um pouco vazio. Vi isto em cerveja. Mas o que esta batalha faz, apenas mantém o controle da sua história. Mas em ouro. Então este é um pouco de um conceito abstrato ou talvez tudo o que foi deleite. Então você pode simplesmente fazer qualquer operação ou comando ou qualquer outra coisa em sua janela de exibição ou apenas clicando nas coisas como você faz normalmente scripts. E vai se registrar aqui em baixo. Então este é o comando Python real é executado a fim de obter o mesmo resultado exato. Então, se analisarmos isso, deixe-me talvez eu possa ampliar aqui, então eu vou apenas colar aqui. Isto, isto é o que vamos passar ao lado. Não tenha medo. Talvez só fazer isso um pouco maior. Eu posso clicar aqui, aqui eu posso controlar. Deixe-me ver. Ok, então eu vou ampliar vai ser um pouco mais rápido. Então, se você pode ver que o comandante acabou de ser executado é BP. Por que dot-dot-dot transform.py traduzir, traduzir, certo? Sabemos o que isso significa. Isto está a mover alguma coisa. Então, apertei o G e mudei. E você pode ver talvez por que o ponto-ponto transformar não traduzir. Então isso é apenas mover algo no código Python. Então isso é realmente valioso. Você pode até mesmo, digamos que você pode entrar no modo de edição para enfrentar selecionar rosto, fase extrudida. E toda a sua história está gravada aqui em baixo. Então, extrusão, razoável é apenas uma simples extrusão dentro do código Python. E apenas voltando, rastreando passos para trás, você pode realmente facilmente automatizar qualquer coisa realmente, Este é o meu primeiro ir para se eu não sei um determinado comando ou como eu, como eu deveria fazer algo em Python. Eu só faço isso manualmente. E então olhe para esta janela e veja o que o liquidificador faz. Uma forma de codificação, a fim de alcançar o que eu acabei de fazer manualmente. 5. Visão de interface: console integrado: E no próximo painel eu vou estar falando sobre isso, o console interativo Python, o da esquerda aqui. Você pode ver o console lá. Eu só vou arrastá-lo um pouco para torná-lo um pouco maior para que você possa realmente ler o que eu estou digitando. Este caso aqui é basicamente permitindo que você execute comandos como você veria aqui. Então vamos dizer, deixe-me começar de novo. Mas digamos que você crie um cubo. Você pode ver que este é o comando para criar um cubo onde este é o último que fizemos. Você pode copiar isso e você pode colocá-lo aqui. E pressionando Enter, você acabou de criar o cubo. Você pode ver, eu apenas removê-los para que você possa ver isso com mais visualmente. Então vamos dizer que você faz isso, boom, clique em você aparece. E esta é apenas uma maneira de testar seus comandos realmente rapidamente executar linhas simples ou como um bloco de código interativamente em sua cena para garantir que ele funcione. Então vamos dizer que eu quero tentar criar uma cena ou como uma fila, que é um pouco maior, tamanho 20, ok, é assim que você faz isso. E eu fui, você tem sua fala. Você pode simplesmente movê-lo para o próximo painel vai estar falando, que é o editor de texto real. 6. Visão de interface: editor de texto: Então você pode ver aqui que leva o editor, desculpe, que é onde você estará mudando seus comandos. Então este é basicamente onde você estará escrevendo seu programa ou script para isso em sua saída final. A principal coisa que você tem que lembrar sobre isso é saída como faz este editor de texto, que é onde você me deixa escrever seu script, é que você sempre, sempre, sempre, tem que importar ser PY. E talvez por que você pode ter notado é o prefixo de todos os comandos que você está vendo. Então tudo o que o liquidificador faz é impulsionado por este pacote BPI. E é assim que importamos em nosso roteiro. Então isso é algo que é um Pythonic. Você está basicamente apenas incluindo uma biblioteca de comandos e código indo para que ele seja PY. E isso permite que você acesse todos esses, todos esses comandos e essa janela. Talvez mais uma coisa e queremos ter certeza sobre este editor de texto é que você realmente criar um pouco de texto. Então, quando você abri-lo no início, ele vai ficar assim e você não pode realmente digitar nada aqui, mesmo que eu esteja clicando, você não pode digitar. Eu realmente tenho que criar um novo bloco de dados, novo bloco de dados de texto, clicando no novo, como o ícone de adição, o botão Novo aqui. Então isso criará um arquivo para você. Doenças chamadas Texas só são armazenadas internamente no liquidificador. Então eu posso escrever “Grande Interface Importante” aqui com você. Nunca pode esquecer, pode salvar isso. Mas esse roteiro é na verdade uma narrativa de roteiro, um pedaço de texto, e vamos talvez torná-lo um pouco, um pouco mais com isso aqui também. Talvez, deixe-me mostrar-lhe como posso realmente construir isso. Então agora eu tenho que elogiar por criar um cubo e aqui, então se eu fosse executar este script, apenas me livrar de tudo para que possamos realmente ver o que está acontecendo aqui. Posso executar o script clicando neste botão? À direita estão apenas pressionando tudo p como você pode ver lá, que é um atalho. Então deixe-me fazer isso. Que executará o script, que executará sua linha de sinal, que será essencialmente o mesmo que fazer isso aqui. Mas o, o principal benefício de usar esta janela aqui que podemos realmente encadear comandos. Então vamos dizer que queremos criá-lo e todos e movê-lo para fora. Por isso, também queremos fazer isso. Pode colar isso aí. E agora temos dois comandos na única janela, em um único arquivo de texto. E eu quero executar isso. Vamos criar uma fila, mas depois vamos movê-la. Então agora podemos ver que há um cubo. Eles estão na escola, mas novamente, dívida espacial. Então, é aqui que você pode continuar adicionando comandos, adicionando coisas ao seu script. Se eu fosse me livrar desses, executar isso, eu apenas criei um cubo, mova-o, é uma moldagem e tudo de uma vez. Mas agora vamos dizer que você quer tentar girar então você quer ver, ok, então este é o comando para girar. Agora você sabe, você pode colocá-lo, colocá-lo de volta aqui. E digamos que você queira testá-lo primeiro, você pode executá-lo aqui primeiro. E então se eu girar o cubo atual sem ter que passar por todos esses, esses comandos sempre. Então eu poderia enfrentá-lo aqui e depois executá-lo e ver se isso funciona. Você sabe bem, porque agora sabia que eu vou. Mas talvez você não saiba. Talvez você tenha um script inteiro ou um monte de coisas que acontecem também, além de criar a fila e mudar para girá-lo. Eu nem sempre quis fazer todo o processo ou você só quer testar alguns comandos e isolamento. Você pode simplesmente fazer isso. Aqui. Você pode até atribuir variáveis. Você pode armazenar seus dados, todos os tipos de coisas. Você pode fazer tudo aqui uma vez que você sabe o que funciona e faz transferi-lo para o texto real, para o script real. E assim você constrói seu roteiro, seu código, seu programa, o que quiser chamar. 7. Visão de interface: console do sistema: Uma última janela que eu quero mencionar é o console do sistema. Então nós temos um retrata um console interativo aqui em baixo. Você pode ver o console Python. Há outra janela que se esconde. Então não há pacotes de verdade ou não é. E aqui, você só console que temos aqui é um console Python. Se fôssemos ao Window. E, em seguida, aqui você pode ver console do sistema duplo. E este é essencialmente o console ou determinável em que o liquidificador está sendo executado atualmente. Então, se eu fosse a saída de qualquer coisa para o console usando a função de impressão que é embutida no liquidificador. Então eu poderia dizer imprimir, Olá mundo, que é uma pressão muito clichê em sua palavra apropriada em Inglês, mas você provavelmente já viu isso antes para que você possa imprimir como o mundo, e correndo este ano você realmente verá que nada aconteceu. Vou rodar de novo para te mostrar. Assim como os descritores realmente correndo, mas nada está acontecendo mesmo que eu esteja fazendo algo. E se você fosse aprender ou ler no liquidificador, você veria que eu tenho vitaminas ou você veria que isso realmente é saída de coisas para o console onde você vê aqui no console, nada está sendo emitido, certo? E se você fosse olhar para o console do sistema, você veria que ele realmente recebe saída aqui. Então D lado a lado por um segundo. Digamos que eu vou apenas outra coisa. Senão, o que não importa. Você pode ver que tudo é colocado aqui. E isso é muito importante notar porque toda vez que você colocar algo para fora para o console, você realmente vai ter que olhar para o console do sistema. Então você pode jogar toda essa oferta. Eu realmente não tenho em uma coisa que você vai realmente fazer, eu realmente vou sair do Blender. Criei uma nova janela de console. Desculpe, está na tela para que eu só executar mix lá a partir daqui. Então agora isso funciona para mim porque eu tenho liquidificador em minhas variáveis de ambiente. Você também pode apenas obter o caminho do arquivo do liquidificador. Então, vou mostrar-vos rapidamente como chegar lá. Normalmente, ele deve estar em seus arquivos de programa de unidade C, mas, em seguida, sua fundação. E qualquer versão que você tenha instalado aqui, você teria o liquidificador dot EXE. Então este é o caminho para ele. Isso é apenas editar minha variável de ambientes, mas você não tem que passar por todos esses problemas. Você também pode simplesmente arrastar este arquivo de saída em seu terminal. Será algo parecido com isso. Há duas aspas porque espaços aéreos no caminho. Então tenha certeza que tem isso. E, em seguida, basta pressionar Enter vai realmente lançar mistura lá também. E dessa forma ou console do sistema é esse cara aqui embaixo realmente não relacionado a, para se misturar lá em tudo. Quero dizer, é seu próprio console, que é muito mais fácil de manusear. Então vamos dizer que eu quero imprimir Olá mundo novamente. Verifique se a sintaxe está correta. Executa isto. E vamos ver em nosso costume, quero dizer, em nosso próprio console, nós imprimimos com Hello World. E isso é especialmente útil quando, digamos que o liquidificador falha ou algo assim. Então você está executando seu script e no meio de descrições, liquidificador esmagamentos, seu terminal seria fechado também porque um terminal está ligado ao Blender, o terminal realmente corre dentro do Blender. Quando você usa o padrão onde você apenas, você acabou de lançar liquidificador. Mas um quando você lança liquidificador from_id terminal, credor corre dentro deste terminal e ele renderiza falhas. Ou se eu fechá-lo, o terminal ainda existe. Então isso é realmente muito útil. Em certos casos, quando pergunta liquidificador às vezes é passar apenas eu executá-lo através de seu próprio terminal de carreira e, em seguida, apenas para ter certeza de que você pode realmente ver o que quer que as impressões ou declarações de depuração são antes que ele caiu. 8. Criando objetos com código: Então a primeira coisa que vamos fazer de novo livrarmo-nos deste cubo. Sei que faz com que a comunidade exclua o cubo padrão. Bem, isso só vai adicioná-lo novamente, a fim de ver o que é preciso para adicioná-lo. Copie como fizemos antes. Novo livro didático criativo ou roteiro ou qualquer outra coisa, importa vice-presidente, porque este é o nosso passo necessário que nunca podemos esquecer. E, em seguida, com base r comando vai clicar em Salvar como visto aqui, o que for. Então agora, essencialmente, já escrevemos o roteiro. Então nós escrevemos um nó de script, eu vou criar um cubo. Então, se você ver se eu executá-lo pressionando todos os seus, gravando os scripts e a direita, assim o outliner, você pode ver o cubo recebe edições cada vez que eu executar o script. Então, você sabe, isso é alguma coisa, tudo bem. Mas vamos torná-lo um pouco mais interessante. Então o que queremos fazer é que eles leiam uma posição aleatória. Então nós basicamente só queremos, quero dizer, há, há várias maneiras de fazer isso. Claro, há sempre várias maneiras de fazer qualquer coisa com scripts ou programação ou, e liquidificador, mesmo às vezes em geral. Então o que poderíamos fazer é criar um cubo e depois traduzi-lo. Então mexa-se. Essa é uma maneira de fazer isso com outra maneira. Se você olhar atentamente para o comando add cubo, talvez trazendo isso para bit, podemos ver que você pode realmente especificar tamanho e o local. Quando você cria o cubo. Isto é o mesmo que se para criar um QC aqui, pode realmente atribuir, quero dizer, você pode realmente alterar esses valores aqui também. Torná-lo maior. E você vê aqui nossas atualizações de comentários. Então, se eu fosse copiar isso e colocá-lo ao lado dele, você pode ver o tamanho pode ser alterado alterando este valor. E nossa localização pode ser alterada alterando esses valores. Então você pode ver que estas são coordenadas x, y e z. Então se eu me livrar de tudo de novo e me livrar desse cara. Então vamos dizer que eu quero, eu quero criar um cubo. Então novamente, toda vez que você quiser modificar ou fazer qualquer coisa nesta janela, você tem que se certificar de que seu cursor está aqui. Então, se eu sou meu cursor está aqui e eu faço backspace, não vai fazer nada. Sexta-feira, o que tem aqui? Eu sou expatriados, eles são iguais. Então isso é um, algo algum caule também, você tem que se acostumar. Então, se eu fosse executar isso, agora, faça isso é, você tem um cubo de tamanho 3,9 para o aqui. Mas na verdade é um normalizado, mas, na verdade, se você medir isso, isso deve ser 3.92 e a localização é 9.39 no eixo x, que você pode ver e ver aqui também. Assim podemos facilmente. Modifique o nosso QQ quando o criarmos. Então o que queremos fazer é, na verdade, em vez de bloquear este local para um certo valor, seja 0 ou 9 ou o que seja, queremos ter isso aleatorizado. Então, a fim de randomizar, ele evita a biblioteca aleatória. Este é um pacote como BPI.com com Blender, vem com Python em geral. E isso nos permite gerar números aleatórios. Então talvez eu possa mostrar-lhe imprimindo uma função uniforme. Se eu fosse imprimir isso. Quero dizer, executar isto não vai mostrar-te nada. Você realmente tem que ir abrir seu console, que provavelmente vai querer fazer como janela, console do sistema de firewall. E a janela do console deve aparecer. Fazer a luz das estrelas novamente se foi e, em seguida, trazê-lo de volta. Tudo bem, então eu apenas imprimi um número aleatório entre 01. Se eu fosse fazer isso de novo, eu vou imprimir este. Faça isso de novo. Então você pode ver que é apenas qualquer número aleatório entre 01 também pode testar a célula, executando-a no console interativo. Na verdade, esta é provavelmente a melhor maneira de fazer isso. Tenho que reimportar, é claro. Então, novamente, essas duas janelas, elas não estão relacionadas uma com a outra. Eles não falam um com o outro. Todas as variáveis que você tem aqui que dizem que eu crio uma variável, atribui a 250 se eu fosse imprimir 50, e aqui eu imprimir VAR, por exemplo. Será que realmente vai dizer nome VAR não está definido? Se eu fosse imprimir barra aqui, ele iria imprimir 50 porque neste bit, nariz enquanto var é e aqui não faz. Então isso é algo a ter em mente. Mas isso é o semeado um monte de vezes pressionando a seta para cima em nossa, em nossas flechas. Na seta para cima, você pode puxar para trás comandos recentes. Você pode simplesmente percorrer sua história pressionando para cima e para baixo. Por isso podes continuar a executar este tipo. Você pode ver que ele sempre retornará um valor entre 01. Mas se eu dissesse 010, ele vai me dar um valor entre 010 é muito útil para menos 1010. Penso, portanto, que esse ponto é claro. Então, podemos utilizar este valor aleatório e em nossa função de adicionar cubo. Então vamos dizer que isso é tão longo que nós realmente dividimos isso linha por linha, nós realmente não encontramos esse cara também. Se você for, vamos olhar para as referências. Talvez, vamos fazer isso juntos. Então houve um enorme Ufa, desculpe, eu disse isso. Um liquidificador enorme. Site da API Python. Então esse cara aqui provavelmente vai querer marcar esse cara. Isso contém todas as informações sobre BPI. Então, se eu procurasse nossa função aqui, copiá-la e colá-la aqui. E a busca. Você verá a documentação real sobre esta função. Então você pode ver todos os parâmetros que vimos antes, redimensionar, entrar em Modo de Edição, localização, Rotação. Nenhuma destas coisas está disponível dentro desta função. E então você pode ver o padrão. Então, esses padrões classificados. Então, se eu não fosse, se eu não definisse o tamanho, só levaria dois. E se eu não especificar, e através do modo Editar, ele vai para falso. E isso é essencialmente apenas repetindo o padrão para que eu possa tomá-lo. Mas isso já pode ser um pouco demais. Então talvez nós provavelmente vamos voltar para as documentações e como ler isso corretamente. Eu só sei que ele existe e todo o, tudo o que tem a ver com ser PY ou qualquer outro módulo liquidificador que está listado aqui em baixo. Como explicado neste site, na API, há apenas uma coisa que você precisa notar é a versão. Você está sempre querendo, querendo usar a versão mais recente ou ainda melhor apenas para a versão que você está usando um liquidificador. Então eu estou usando o Blender versão 2.81, mas eu estou usando os documentos API de 2.83. E se alguma coisa mudar entre 2.832.81, eu realmente vou ter para a versão mais recente enquanto eu estou usando a versão mais antiga. Mas as diferenças entre 2.812.83 ou tão pequenas que realmente não importa. Quero dizer, pelo menos em um ponto de vista de script, mas geralmente é melhor, prática recomendada usar sempre a versão mais recente. Então, à parte, vamos voltar aqui. Então, se formos executar isso, isso deve funcionar. Estamos apenas criando cubos no local 00 para o tamanho 3,92. Então, se eu colocar isso, então você pode ver como isso afeta o QC é criado. Tudo bem? Mas a coisa é que nem sempre queremos usar o tamanho 00 ou 0. Podemos bloqueá-lo à medida que você se inclina para o padrão. Podemos até deixar de fora se você está acostumado, mas eu vou deixar lá dentro. Mas é por isso que queremos, queremos ser, queremos mudar este local. Então vamos novamente pegar nosso valor aleatório. Então vamos chamar esse valor aleatório e atribuir nosso valor aleatório a essa variável. Então isso é essencialmente como usar variáveis que podem ser um pouco abstratas, conceitos abstratos, mas é realmente simples. É essencialmente apenas atribuir um valor. Isso pode ser qualquer tipo para apenas uma representação de palavras. Por isso, geralmente é uma boa prática dar-lhe um nome significativo. Então isso é essencialmente, sim, este é um valor aleatório, você poderia dizer entre menos 1010 ou o que seja, mas valores aleatórios mais do que suficientes. Portanto, isto é auto-explicativo e esta é uma boa prática. Então vamos, vamos usá-lo. Vamos colocar isso em vez de R 0. Então agora, em vez de uma referência 0 para são aleatoriamente gerado número. Então isto. Bit de código que retornam algum valor entre 1010 negativo. Então digamos que ele retorna 9.93. O valor aleatório será igual a 3,9. Então, se eu dissesse que minha localização é igual a 3.93.93.9, ou qualquer valor entre dez negativo. E então ver se eu executar isso, você verá, acontece que o valor aleatório que foi gerado com essa função foi negativo 3,56. E então nosso Q foi criado naquele local. Ou fazer isso de novo. E nu sobre n valor será tomado e um novo cubo será criado nesse local. Fizemos isso como um monte de vezes. Veremos recriar esses cubos, mas estão todos nessa linha reta. Então isso não é tudo o que você quer escrever. Isto é que queremos que eles fiquem por todo o lado. Big R em cubo, apenas um monte de cubos dentro. Mas porque tomamos o mesmo valor aleatório para todos os três acessos, vai sempre criá-los nesta linha tridimensional. Então o que queremos fazer é criar três números individuais com três valores aleatórios, um para x, um para y e um para Zed. Então vamos fazer isso. Podemos duplicar qualquer linha que nosso cursor subiu pressionando o controle D. Então eu fiz isso duas vezes. E então eu vou renomear o valor porque você realmente nunca pode ter nomes de variáveis duplicados. Bem, em Python você pode, mas ele irá apenas substituir o anterior. Então eu vou atribuí-lo através, digamos um. Em seguida, ele será substituído para o que quer que este retorne, e então ele será substituído novamente. Então, é essencialmente ainda ao mesmo tempo. Quero dizer o mesmo valor só para comer vezes. Se eu chamasse esse valor aleatório de X ou Y ou Z e mudasse esses caras de acordo. O que é importante porque o valor aleatório neste momento não existe mais. É apenas valor aleatório X, Y, e Z em valor aleatório agora vai ser criado. Então não vai saber o que é. Então, se eu fosse executar esse cara, nós temos um cubo em um local realmente aleatório dentro de nosso dendrite, então a célula de grade iria apenas enviar spam. Estarei lá só para te mostrar um pouco mais de cubos. Então esta linha é o que tínhamos antes. E agora com nossos números aleatórios individuais, nós realmente temos um resultado bonito. Então vamos nos livrar desse sabor visto. Talvez você faça de novo algumas vezes. Então você pode ver como isso se parece. Certo, então este é um script de cubo gerado aleatoriamente, mas novamente, ainda não temos 100 cubos ou 500 grupos, que é onde o script é tão poderoso, ainda temos que pressionar essa coisa repetidamente. Então, a fim de contornar tags, eu vou criar um loop for. Assim, para as pessoas que são novas na programação completamente, um loop for é essencialmente uma estrutura de programação que irá executar certas, como certas linhas de código uma certa quantidade de tempo. Então digamos que eu crie um loop for aqui para escrevê-lo fora. Então eu vou fazer um loop. Quero dizer, vou executar este pedaço de código 100 vezes. Este é essencialmente o conceito de um loop for. Portanto, quaisquer bits de código que estão dentro do loop for serão executados x quantidade de vezes. Então, digamos que a quantidade de cubos é igual a 100. E então eu posso trocar isso por aí. Então eu vou passar por cima de um 100 vezes e eu vou apenas imprimir i. Eu é basicamente esta variável mudando que irá representar a iteração atual. Então vamos iterar para um 100 vezes, e então eu vou realmente manter o controle de qual a duração que estamos atualmente em. Isto é apenas para fins de demonstração. Então, vou garantir que a discórdia seja ignorada por enquanto. E eu vou, eu sinto muito, eu vou cuidar disso. Eu estou realmente retorna um erro. Então vamos ver o que isso diz. Ok, eu tenho que colocar o para i no alcance. Eu sinto muito. Então, se eu executar isso, vamos ver que esta variável é i alterações para cada iteração. Então ele começa sendo 0, e então ele apenas incrementa até que seja 99. Então, neste ponto, nós executamos este código 100 vezes. Então, se eu fosse realmente escrever script cubo r e ouvir, executar isso, teremos um 100 cubos exatamente como esse fora da caixa. Então, se eu fosse remover todos eles, rode novamente. 100 cubos, todos com locais aleatórios dentro desta grade de dez por dez em todos os três x's. Então, usando isso para loop, você pode criar uma grande quantidade de geometria ao mesmo tempo. Então você descobre como fazer isso uma vez. E agora você é apenas um invólucro que esta extremidade é estrutura de quatro loop e tudo o que será recuado, retomá-lo. Este é, este é um. Então, uma conta. Tudo neste nível de recuo será executado 100 vezes ou o que ele queria vezes que você especificar aqui. Então, se eu quisesse grandes 50 cubos, exclua tudo. Ou nisso teremos 50 cubos. Então você pode ver aqui. 9. Como limpar uma cena usando o código: Mais uma coisa que eu gostaria de mencionar é que cada vez que executar este script, que r cubed z uma pilha em cima do outro. Então o que devemos fazer é selecionar tudo excluído em torno dele. Ok, bem, tudo bem. Vamos criar 50 e abrir. E com este script não importa muito, mas às vezes você simplesmente não quer sempre, quando você está criando uma geometria processual com scripts ou classificando outra coisa. Você sempre quer ter que entrar e excluir tudo e, você sabe, é um trabalho entediante que você está tentando evitar com scripts. Então é uma espécie de obter sua intuitiva se você continuamente tem que fazer um trabalho tedioso. Então eu vou mostrar rapidamente como não ter que fazer isso. Então nos pague, vamos realmente entrar aqui e somos console interativo porque nós vamos estar testando coisas para fora, tentando descobrir. A primeira coisa que vou mostrar a vocês é como pegar todos os objetos em sua cena. Então, basta ir Man é chamado BPO I ponto-ponto objetos. Então você pode ver que há atualmente 50 objetos na cena, mas apenas normal porque eu criei 250 cubos e eu excluí tudo antes. Digamos que eu crie um 100. Agora, execute isso. Aperte a seta para cima, pode executar os comandos anteriores no console R ou clima console interativo. E agora podemos ver que havia 150 objetos, tipo 50 que estavam lá antes e 100 extras porque eu uso mais concedido. Mas nós essencialmente só queremos ter um 100 neste momento. Então o que poderíamos fazer é listar. Então agora temos uma lista de todos esses objetos. Podemos removê-los todos. E vamos fazer isso com o loop for novamente. Então, o que fizemos nosso loop para dessa maneira? Poderíamos especificar quantas vezes queremos fazer loop. Sabemos que fui a um 100 e você sabe, cada vez que você executa, você vive 100 cubos. Mas neste momento, você sabe, você não sabe quantos objetos nós vamos estar na cena. Você poderia dizer, bem, sim, porque eu sei 100 de novo, você sabe, remover tudo, mas então se você quiser colocar em 50, não vai mais funcionar. Não é realmente dinâmico este peso. Então, essencialmente, o que queremos fazer é queremos iterar sobre muitos objetos que existem, mas sem saber quantos objetos existem primeiro. Então eu não quero dizer para mim na faixa de 150, porque não haverá sempre 150 objetos. Mas o que poderíamos fazer é dizer para o objeto atual BY ponto objetos de dados. E vamos apenas por enquanto apenas imprime objeto atual. Então o que fazemos aqui me faz rolar todo o caminho para cima para objeto atual em APY ponto-ponto objetos. Então, para cada objeto nesta coleção de objetos ou neste ainda, e esta coleção de objetos. Mostre-me o seu principal. Então, como se eu fosse nossa variável que iria manter o controle de nossa iteração atual. Esta variável aqui dar greve sobre o nosso item atual dentro desta coleção. Então isso é basicamente uma matriz ou uma lista para vocês programadores lá fora. E isso é basicamente todos os elementos dentro dessa lista. Então, se você tiver uma lista de objetos, este é o item atual, o objeto atual que você está iterando no momento. Então, seja qual for o objeto, faz parte desta coleção. Então, usando isso, você pode ver que eu tenho todos esses cubos. Como se eu pudesse pegar todos os cubos. Então, novamente, para o meu objeto e esse objeto, então para cada objeto na coleção de objetos, eu quero removê-lo essencialmente, certo? Eles querem se livrar de todas as teorias de objetos. Então, para isso, podemos fazer PPA ponto-ponto e objeto ponto remover. E então você deseja especificar o objeto que ele deve ser removido, que é o objeto atual. E assim, tudo se foi. Todo o objeto desta cena se foi. Agora isso também vai apagar câmeras e luzes porque eles também são objetos, certo? Então, se eu fizer isso de novo, a câmera desaparecerá. Então você tem que ter isso em mente para remover tudo. Você também pode listar malhas, materiais, imagens, praticamente tudo. Então, se eu fosse para ir para dados de ponto BPI e, em seguida, pressionar o espaço de controle, o que é um truque muito legal. Ele mostrará todas as coisas que estão dentro desses dados. Então você pode ter textura, sons, telas, malhas, materiais, luz. Então você começa a basicamente tudo o que tem. Mas vamos fazer objetos por enquanto. Então o código que escrevemos aqui realmente funciona. É dinâmico. Ele funcionará para qualquer quantidade de objetos. Então, vamos agora incluído no nosso script. Então, como devemos fazer isso? Podemos fazer isso antes. Assim como nós fizemos. E alinhados apropriadamente, boom, agora está no lugar. Assim, cada script será executado da linha um à linha, apenas a última linha. Então para baixo um através desistir de milho logicamente. Então ele virá aqui, olhar para todos os objetos na cena, removê-los todos, e então criar 100 novos. Se eu fosse fazer isso, eu teria um 100 objetos é o mesmo que seria antes dele. Se eu fizer isso agora, quero que você chegue a 100 objetos diferentes. Se eu olhasse aqui muito rapidamente, apenas imprimindo todos os nossos objetos, veria que ainda é uma lista de 100. E eu posso executar este 2020 vezes ou quantas vezes você sempre estará sob ele. Ou para mudar isso para 50. Agora vou ter 50 e todas as centenas serão apagadas. Piratas por 500 de novo. Primeiro, ele excluirá o 50, então criará 500 novos. Mas você não precisa especificar quantos objetos haverá no início porque você nunca pode saber. Como Now, eu não noto 500 que talvez possam ser sorrateiros e criar um. E eu poderia criar um círculo, sabemos que está certo. Mas se eu fosse executá-lo novamente e este é meu amigo é um pouco demais. E movendo-se para círculos ido também porque tudo vai ser sempre ido e substituído por em torno dele. 10. Ideias para construir sobre este projeto: Tudo bem, então nós chegamos bastante longe, já estamos neste primeiro capítulo do curso. Mas eu gostaria que vocês realmente aprofundassem sua compreensão do que estamos fazendo aqui é tentar algo por conta própria. Então, geralmente há uma prática recomendada para apenas, você sabe, ir, sair por conta própria e experimentar algumas coisas diferentes talvez enquanto você está criando desrespeito inspirado ou você as tem, você sabe, apenas inspiração para fazer outra coisa. E eu gostaria que nós prosseguíssemos isso agora ver se você pode adicionar a isso. Uma coisa que eu poderia sugerir é descobrir como aleatorizar sua rotação também. Então, como se agora é apenas locais aleatórios e você pode ver se você colocar nosso lugar, sua câmera em algum lugar aqui. Ninguém parece muito interessante. Mas, a fim de levar isso para o próximo nível, você pode talvez aleatorizado mais estrela. Então isso pode ser uma rotação, isso pode ser escala. Isso pode até ser sim, isso pode ser qualquer coisa realmente eu não vou Eu não vou dizer muito porque eu não quero limitar a sua imaginação. Então, basta passar pelo que você adicionaria a isso e, em seguida, experimentá-lo, procurar coisas na documentação. Então, mais uma vez, rapidamente conectei este link ao EI. Então liquidificador, Python API intensificou e, e Google. E você terá o mais recente. Certifique-se de que você está sobre os mais recentes é realmente 2.90 agora, desde que eu acho que desde um par de dias atrás, onde o 4 de setembro agora. Então eu não vou fazer a troca do curso do MIT. Talvez eu dê uma olhada no registro de mudanças e se alguma coisa mudar, mantenho-vos atualizados. Mas, por enquanto, a API é idêntica a 0.812.832.9 para todas as coisas que estamos cobrindo neste curso vão funcionar. Vai ser tudo o mesmo, por isso não te preocupes com isso. Mas sim, aqui você pode apenas um tipo de pesquisa ele mesmo pode perceber rapidamente, copiar este cara aqui, ver o que podemos fazer com isso. Então este sou eu só vou te mostrar como você pode lidar com isso. Então podemos ver que há um tamanho que pode ser aleatorizado. Então isso é apenas definido para dois. Aqui, também está definido como dois. Então este é apenas um número estático, então você pode aleatorizá-lo da mesma forma que fazemos aqui. Eles podem escolher seus limites. E assim você pode realmente adicionar mais dimensões a este local, sua rotação ou escala novamente, então isso é definido como 0, que é um pouco estranho porque geralmente quando você escala para 0, você apenas faz com que seja infinitamente pequeno. Você deve dimensionar por um para manter as mesmas dimensões. Isto é apenas um multiplicador. E isso é um pouco confuso. Então eu não me preocuparia com este se você quiser aleatorizar o tamanho, eu faria isso por aqui. Isso faz, é, isso é uma escala uniforme. Então este é apenas um dimensionamento de cada X é igualmente. Talvez você consiga algo que você possa fazer é escalá-lo e dizer algo e depois selá-lo. E por que um pouco? Vamos matá-los, um X, outra coisa. Então você realmente tem essas formas retangulares. Então, se usarmos o parâmetro de tamanho, você sempre terá um cubo. Então isso é algo a ter em mente. Você sempre pode olhar aqui e ver o que fizemos. Só fiz algumas coisas interessantes e depois tentou escrever. Apenas se divirta um pouco e experimente algumas coisas em si mesmo. Isso é realmente, realmente vai ser a diferença entre um, você apenas assistindo o curso e você realmente entender o que falamos, realmente aplicando o que falamos. sempre bom para meio que tentou criar suas próprias coisas. E se você fizer isso, certifique-se de enviá-lo através de e-mail ou através de minhas redes sociais, haverá uma descrição do curso. Estou sempre muito interessado em ver como vocês, uh, ou vocês apenas criam um pé com as coisas que eu tentei ensinar, tipo que seria muito legal ver como vocês têm seu próprio olhar sobre o que ele criou e como vocês acho que pode ser melhorado. 11. Randomização controlada: introdução: E, a fim de levar o proceduralismo e a randomização para o próximo nível, temos que pensar sobre quando e onde usá-lo. Às vezes, geralmente é melhor aleatorizar algo porque, como humanos, estamos sempre tentando encontrar Padrões Reconhecíveis. E é assim que nós artistas, a forma como o nosso cérebro funciona. Sempre tentamos reconhecer padrões. Sempre tentamos criar padrões. E mesmo quando você tenta criar um 100, jogando através, sempre focando em dois ou três. Mas, com o tempo, você se torna reconhecível e se tornou repetitivo. E isso são apenas problemas com os quais uma máquina não tem que lidar, que são puramente matemáticos. Quero dizer, se você, se você pedir a uma máquina por um número entre 01, ela não pensa, ele só dá o número e segue em frente. Então, se você perguntar 100 vezes, você terá 100 valores aleatórios. Quando você pergunta a um humano, haverá sempre, sempre haverá algum tipo de padrão dentro. E isso é exatamente o que temos que tentar evitar. E isso é exatamente o que Python e liquidificador, e eu quero dizer apenas processualismo e randomização e generalistas. Tão bom. Não está sendo tendencioso como não sendo previsível, sendo não reconhecível. E quando você realmente vê esse valor. E então você pode realmente empurrá-lo para o próximo nível. 12. Realização de Randomization (criando uma vedação: Então isso é o que vai ser fazendo e este capítulo, é cerca completamente aleatória. Você pode ver que há algum deslocamento na rotação e, em seguida, a altura também. Então isso parece esteticamente agradável, é realmente fácil de fazer. Então sim, isso é o que vamos ser a largura. Vamos começar com um novo C pode realmente comprar completamente ir para scripts como estamos acostumados a agora. Vamos arrastar isso um pouco, salve. Fazer todos os itens essenciais antes que possamos realmente começar a criar um script importante batida por algumas dessas coisas terapêuticas. E agora estamos prontos. Então vamos realmente começar colocando em menos coisas que fizemos no capítulo anterior, que é limpar a cena. Então, se não nos lembrarmos completamente, vou repetir. Então a coisa que vamos fazer é pegar todos os objetos da cena. Então, para objetos para ser DY ponto-ponto objetos, e então vamos removê-lo. Então, se eu somar os textos, isso só vai se livrar de tudo cada vez que há muito mais fácil enquanto você está trabalhando. Quero dizer, não estou dizendo que você deve ir embora. Ou você realmente publica este script ou quando você realmente começa a usá-lo porque você é apenas, talvez você queira criar uma cerca na cena que já existe e você só quer não quer se livrar de tudo, certo? Mas, por enquanto, é muito tedioso sempre remover ou nós criamos porque, desde a primeira iteração, vamos criar uma fila. E como você vai ser irritante para sempre removê-lo. Dito isto, vamos começar criando o nosso cubo. Então, novamente, você deve notar agora já este comando, mas mesmo eu esqueço muitas vezes. Então vamos colocá-lo novamente, criando um cubo de tamanho dois e localização 000. E é realmente mover isso para baixo para um. É um pouco mais fácil de trabalhar e, em seguida, entrar no modo Editar como vimos antes, ele pode ser excluído. Então isso ainda vai funcionar. E agora só temos um cubo menor. Observe como o grande desapareceu, o que é incrível. É uma coisa tão pequena, mas sim, mantém-te sã como pessoa. Eu poderia te dizer isso. Tudo bem. Mas isso não parece muito em branco, não é? Então, para torná-lo parecido com um espaço em branco, refere-se necessidade de movê-lo para cima. Claro, quero dizer, escalá-lo. Então, como Z, digamos dez centímetros, o que é um pouco demais, mas quero dizer, tudo bem. É talvez escalá-lo para baixo no x. e isso, que é 0,25. Então, novamente, você vai ter que continuar usando esses, esses, esses painéis. Mistura-os o tempo todo. É super útil. Então, se realmente dermos um passo para trás e vermos o que fizemos, então aumentamos a escala logo depois. E lá nós reduzimos em 0,25 e o x. Então é assim que podemos realmente criar isso. Então vamos copiar aqui. E isso é proporcional, na verdade, o que podemos ver, talvez eles possam notar stick é o PEC. Novamente. Este é o mesmo comando que executamos duas vezes um após o outro. E então uma vez que executamos 3D mais arriscado do que os zeros e uns mais arriscados do que o x. então nós provavelmente podemos combinar esses dois. Então vamos nos livrar dessa. Vamos ver se realmente funcionou. Então agora você apenas cria uma fila de tamanho 1 e então nós a escalamos para colocar a menos que talvez movê-la para cima por cinco, que será a metade do que quer que seja, qualquer que seja o item. Então é isso. Então nós essencialmente criamos um espaço em branco. Parece bom. A escala está completamente errada. Não vamos nos preocupar com isso. Mas apenas como uma nota lateral. Mas sim, ok, então esta é basicamente a receita de como criar um espaço em branco. Então talvez devêssemos agrupar isso em função. Eu vou repassar isso. É muito rápido porque há apenas agrupamento de código. Por agora. Você não precisa saber nada mais do que o distrito ser um agrupamento de código. Então vamos dizer Criar em branco e é colocar todas essas coisas dentro. Então, se executarmos agora, na verdade, nada vai acontecer. Mas se chamarmos a nossa função, então ele irá realmente executar este código. Então a discórdia só é executada quando chamamos essa função, o que é ótimo. Então, vamos primeiro passo. Isso já está bom. Vamos agora tentar marcar, digamos dez espaços em branco. Então, novamente, como fizemos com os cubos e o primeiro capítulo, vamos fazer um loop sobre uma certa quantidade de valores. Então, digamos que para mim no alcance deles. Deseja criar um espaço em branco. Por enquanto, devemos ter dez links. Claro, não queremos que todos estejam no mesmo local, então queremos que eles sejam compensados. E por que essa quantia? Tudo bem, então nós sabemos que a largura real, vamos ver se esta é uma largura. Por mais que seja no eixo y vai ser um. Porque criamos isto um cubo de tamanho 1. E não reduzimos isso. E y, então y ainda é como eu apenas escalando por um fator de um. Então é essencialmente multiplicar um por um, que ainda é um. Então sabemos que este é um. Então, se criarmos um espaço em branco e, em seguida, movê-lo por um, ou digamos, vamos realmente identificar uma lacuna. Então vamos dizer que queremos ter que obtemos o 0.1. apenas 10% sobre a espessura. Então, digamos um mais lacuna. Então nós sempre queremos fazer um porque esse é apenas o montante acima do anterior. E eu só quero adicionar um pouco de uma lacuna de 0,1. Então, se fôssemos fazer isso, isso não funcionou porque isso não está realmente movendo-o. Isto não é realmente um delta y, isto é realmente um, um y real. Então esta é a nova posição y, que na verdade não é o que queremos. Devíamos usar-me, certo? Então podemos fazer i vezes um. E eu só quero incrementalmente a lacuna. Lá vamos nós. Então agora temos dez espaços em branco como talvez torná-lo um pouco maior de um boné. Não tenho certeza se você está trabalhando. Eu não acho que é como talvez não através desta lacuna e eu multiplico isso por i. Então, por que a iteração atual? Isso é ainda pior, certo? E eu sou a tal. Tudo bem, lá vamos nós. Então agora temos nossas tábuas e temos uma pequena lacuna entre 0.1.2. Pode ser um pouco grande demais. Tudo bem, então isso não está parecendo muito gasto, certo? Melhor olhar para cerca, mas é um pouco perfeito demais. E é assim que é como um artistas 3D para o realmente perceptível e é como ferramenta decisões perfeitas para ilustrar tudo. Então é aí que a aleatoriedade vem em Suez ele como um humano novamente, é realmente difícil agarrar esta fase de parada e em seguida, este movê-lo para fora e levar um pouco para, para tê-lo um pouco compensado. Então é isso que vamos tentar evitar agora. Então vamos começar. Então o que queremos fazer para cada espaço em branco é que queremos ter altura acostumada. Então o hidrogênio muito sempre. Então, em nosso loop, vamos declarar uma variável e definir nossa altura para ser dez. Então, por enquanto, vamos mantê-lo na verdade uma variável codificada ou não. Quero dizer, ainda é uma variável que é um, é um número definido, então não vai mudar. E isso é realmente passar isso em. As recriações estão piscando. Então eu apertei, apertado. Então, esta altura vai ficar aqui. Queremos substituir nossa altura inicial. Então nossa escala de Zed, que estava configurando a altura, já que estamos usando um. Então este agora ainda será o mesmo resultado, mas usar esta variável aqui nos dará um pouco mais de controle, especialmente passando por esta função. Então, se fôssemos executar exatamente o mesmo, e agora se eu quiser mudá-lo para 15, isso vai acontecer aqui. Agora, é claro, nós estávamos movendo para cima por cinco, já que nossa altura estava esteticamente ajustada para dez. Mas agora que mudamos para 15, não parece mais bom porque você usaria 7,5. Se eu fosse executar isso, é novamente, ele vai estar alinhado. Sim. Mas nem sempre queremos. Quero dizer, já que queremos mudar isso, também temos que mudar isso. Então é apenas metade de qualquer altura. Então isso funcionará independentemente do que eu coloquei aqui, vamos sempre alinhá-lo ao fundo. E isso é muito, muito importante. Quase nunca quando uso esses números mágicos. mesmo que, mesmo aqui assim, 0,25. Não é bom ter isso aqui. Devemos ter isso como uma variável de espessura. Tudo bem, desculpe, espessura aqui. E é claro que temos que colocar espessura aqui também. Então isso é um Eles causam 0.25. e essencialmente ainda é o mesmo código. Faz exatamente a mesma coisa, mas é muito mais legível. É muito mais abrangente. Se rodarmos de novo e, no entanto, este é o mesmo resultado. Mas é, é muito mais claro e, em seguida, apenas escalando no x, y. e agora você sabe que isso é uma espessura. Tudo bem, então vamos colocar. Então a coisa é, porém, nós queremos ter a altura variável, isso tem que ser dinâmico, é tem que mudar para cada espaço em branco. Então, novamente, vamos estar usando nossas funções aleatórias é bem, vamos importar aleatoriamente. E agora, em vez de enviá-lo para dez, vamos ser, vamos escolher um valor entre 910. Vamos dizer. Talvez 911 seja demais. Uniforme de ponto aleatório. Claro, este é o, o nome real da função. E você pode ver que já os espaços em branco estão agora transportando altura pode ser um pouco demais. Então isso é um fator de um. Portanto, a diferença entre o mínimo máximo é um. Então vamos ver uma mudança máxima de altura. Um. Será que ele ainda pode ser muito dele. Vamos fazer Component_2 ou algo assim. Você pode brincar com esses números, certo? Estes são apenas a espessura é finito. É como uma pequena variável. Ok, então isso é bom. Isso já é algo que já está parecendo muito melhor do que, do que estava antes. E mais uma vez, você sabe, isso está dando pequenos passos e nós estamos apenas criando então agora. Então você pode pensar, você sabe, isso é estúpido, eu não poderia fazer este minuto. Mas digamos que você queira ter 100 tábuas, como ofensivas e eles vão, Hollywood ficar aqui. E isso é especialmente útil quando você tem como uma cena que tem um monte de cercas ou apenas sim, quando isso se torna reutilizável, você vai ver um monte de valor. E mesmo quando você ficar bom em scripts, você pode escrever isso em um minuto ou algo assim, simplesmente vai muito, muito rápido. São os mesmos comandos, certo? Você pode apenas puxá-los para fora aqui, parlamento um for-loop e BAM, lá vai você. Portanto, não demora muito, na verdade leva menos tempo para roteirizar e criar bibliotecas em branco Andra. Então, sim, só para dar alguma perspectiva. Legal. Então eu tenho tábuas e colocá-los de volta para dez para focar um pouco mais. E vamos adicionar uma outra dimensão de aleatoriedade, certo? Então estão todos alinhados perfeitamente. Quem quer que tenha posto isto é o mestre. Bebê Austerlitz, talvez um randomize engrossa um pouco. Eu quero que você tenha isso no lugar com as variáveis e você siga isso. Essa estrutura é muito fácil de adicionar a isso, certo? Talvez vamos tornar isto um pouco mais variado. Sim. Você pode simplesmente pegar cada aspecto e apenas torná-lo um pouco mais exclusivo, um pouco mais aleatório para, para adicionar detalhes em vez de apenas, quero dizer, detalhe também está em script. Você não tem apenas a modelagem de mosaico ou palestras ou em qualquer coisa que ele possa ter detalhando scripts também. Tudo bem, então nós temos altura, espessura, ouça, eu vou fazer rotação. Como vimos no vídeo anterior na documentação, há um campo para rotação ao criar um cubo. Se olharmos aqui, cubo, temos esta rotação, esta rotação valores aqui também. Então você pode ver em nosso método de adição de cubo, cada local, há também uma rotação. E você pode ver que esses valores são bem pequenos. Presumo que isto seja uma irradiância em vez de graus. Então isso pode ser um, quero dizer, você só tem que manter isso em mente que estes são raio e não graus. Então agora que sabemos que isso existe, oops, vamos realmente copiar isso. Então isso é irritante. Rotação. Vamos tirar isso e vamos nos basear no final. Então, agora novamente, nossa rotação é definida em pedra, o que não é de todo dinâmico, mas para fins de demonstração. E enquanto você está criando este programa, isso é apenas bom para apenas certificar-se de que ele funciona e ver o que parece que não é. E também ficou muito mais espesso porque você está realmente redimensionando globalmente. Então 4N tipo global, que é talvez ver se isso funciona melhor. Se você fizer local, isso funciona. No entanto, faz. Então agora estamos girando um pouco. Cada xs, que é agora o que queremos fazer, na verdade queremos girar no Zed, eu acho, certo? Sim. Então nós realmente queremos manter esses x não-zero e y. só quero girar e dizer, vamos colocar este aqui. Certifique-se de que funciona. Então você pode ver que eles estão todos ligeiramente inclinados, ligeiramente inclinados, eles são todos iguais. Vamos adicionar uma variável de ângulo aqui. E então vamos colocá-lo para um uniforme aleatório, renomear vinho e não é tão ruim. Então eu vou fazer 0.1.1, negativo, e positivo 0 para um. Desculpe por isso. Eu queria que eles se amassem. Mas ainda assim a espessura. Sim, nós realmente aleatorizamos a espessura onde eu acho que está tudo bem. Então, se olharmos para ele aqui agora, isso não é um bevy lê dele através de espessura. Boom. Lá vamos nós. Vamos ver como fica quando temos um pouco mais. Lá vamos nós. Olhe para isso. Você acabou de criar 100, quero dizer, para federais relativamente grandes. E só um segundo. E é muito, muito dinâmico. Bem, eu queria estar carregando um pouco mais de altura. Você pode apenas digitar. Mas este 3-11. Agora você tem um pouco mais de variação em TIC. E é muito, muito flexível só por causa da forma como configuramos isso. 13. Criando uma onda de seno Introdução: Tudo bem, então estamos bastante confortáveis com randomização e processualismo. Agora acho que vamos passar de matemática aleatória para matemática geral. Agora, nós não vamos estar resolvendo para x estão fazendo e equações ou algo assim. Vamos usar a biblioteca de funções matemáticas, como usamos a biblioteca aleatória. Então agora vai ser mais complexo ou teórico ou qualquer coisa como fizemos com o aleatório. Isto vai ser apenas aplicando a biblioteca de funções matemáticas. 14. Criando uma onda de seno: Muito bem pessoal, vamos preparar-nos para o nosso próximo programa. Então vamos passar para o espaço de trabalho de script mais uma vez, nos livraremos de tudo o que existe. Crie um novo bloco de dados, amplie um pouco de controle, role o real e já descobriu isso. Importante PY e alguns N3 é apenas para nos preparar para o nosso roteiro. Para este, vou ter uma abordagem um pouco diferente. Não vamos apenas começar com um cubo e, em seguida, ir de lá, realmente vamos recriar ou malha do zero desta vez. Então vamos entrar nisso. Para fazer isso, estaremos criando nossa malha. Tudo bem, então, isso pode parecer um pouco familiar para quando carregamos todos os nossos objetos. Usamos objetos ponto de dados BPI para listar todos os objetos, que também nos permitiu removê-los. E você também pode apenas criá-los. Ao fazer isso, trabalhamos para criar um objeto para ser puro e todos os outros objetos sobre novo. Chame de curva do pecado também, talvez. E isso realmente vai entrar e os dois braços de ligação através do nosso objeto. Então, uma vez que temos uma malha e um objeto, podemos link profundamente de texto completo. É uma boca cheia. Obj. Talvez devêssemos fazer malha neste ponto também. Se não estou enganado. Vamos executar isso. Ok, então agora podemos ver que temos nosso objeto que tem um avançado. Se eu não fizer isso, isso vai se opor às coisas. Basta criar uma malha. Talvez carreira. Livre-se do objeto. Selecionado, exclua-o. Você pode ver que eu poderia executar isso tantas vezes quanto um. Nunca vai haver um objeto aqui e vai ser um monte de malhas aqui em baixo. Então isso é um pouco confuso. Estas coisas estão escondidas no fundo como esta malha de cubo. Acreditamos que foi há muito tempo, mas ainda está escondido. Então vamos realmente passar pela nossa rotina de exclusão. Então nós fizemos isso algumas vezes onde os objetos, então eu me lembro para OBJ e BP direita até objetos de dados. Os objetos de dados removem o tipo de objeto atual. Então, cada objeto é listado e, em seguida, ele é removido como para que possamos realmente fazer o mesmo para uma malhas. Então, para malha no ponto BPI as malhas amarelas, ponto BPI, dot.me Mesh. Então isso realmente vai se livrar de todas as missões que estão atualmente em cena. E então criará um novo. Então vamos ver se isso funciona, certo, parece que funcionou. E assim há apenas uma malha aqui, ainda não há objetos. Então vamos descomentar esses caras de novo. E temos tudo pronto agora. Tudo bem, legal. Nossas malhas ainda um pouco chatas, certo? Não há nenhuma visão real de dados. Então podemos mudar isso fazendo purê de pontos britânicos, anúncios, anúncios. Um 100100 vértices através da malha. Eu também vou adicionar um par de bordas. Então nós realmente precisamos de um a menos do que a quantidade de excesso de alavancagem é porque uma vantagem é sempre uma linha de conexão entre dois vértices. Então sempre haverá um Edge a menos e havia quatro Dixit. Então talvez devêssemos realmente colocar isso lá e uma variável. Então, digamos 100amostras. Então eu quero ter um 100 vértices e, em seguida, menos um arestas. Certo, então agora deveríamos saber que ainda há todos nos mesmos locais onde ainda não há nada a fazer. Mas primeiro, vamos talvez um pouco mais basicamente do que a classificação de cliques para onda senoidal. Vamos apenas criar uma linha plana simples, uma curva plana. Então vamos rever cada vértice. Então para i no intervalo de amostras, porque isso é exatamente a mesma quantidade de vértices. Então quantidade de amostras. Vamos pegar o vértice atual, que será mesclado para cada um do índice i. E então vamos dizer atual vértice C, o, que é a coordenada. Vamos definir que igual a, digamos 0 em x e y, e então um em z ou algo assim, então não é plano no chão. Uma espécie de recompensa para fazer isso. Olhe para a curva. Certo, isso não é ruim. Ainda não há geometria real. Assim, podemos ver os pontos que tinham sido compensados, mas as bordas não são. Quero dizer, há bordas lá, mas eles não sabem o que esperar por viciados é profundo ou o que eles devem fazer. Então isso é realmente configurar isso também. Então eu não vou querer fazer é para cada borda, para cada quatro ticks, eu quero fazer isso para cada vértice exceto para o último. Então, se eu é menos do que simples, minus1, eu queria dizer, bordas de malha. A corrente que eu adoto os vértices é igual ao vértice atual e, em seguida, o próximo. E isso é basicamente apenas uma assinatura. Então eu estou atribuindo um vértice para vértice é para cada missão de sempre, cada borda. Então, cada vantagem é essencialmente maior de sempre. Este é um vértice, este astérix aqui. E você tem um vértice aqui. O que eu quero fazer é nós, então você só liga estes quando uma borda. Então este é o vértice atual, vértices I. Então vértice atual como um índice de i. E então o próximo vértice desse cara, que é o fim da conexão, é i mais um. O próximo. Ou você tem que se certificar de que nunca analisaremos amostras menos uma. Porque então eu mais um seria 101 ou 100. E esse vértice não existe porque vai de 0 a 99. Por isso, temos de nos certificar de que nunca excedemos esse limite. Porque se dissermos que você deixaria isso de fora, teríamos um erro. Pode realmente carregar o console. Então você pode ver que é um leitor fora do índice de alcance 99. Então, aparentemente, isso não existe. Então temos que fazer para garantir que ele mantenha o seu ainda no alcance. Nós ainda podemos sempre temos que ir em relação a guia de toque duplo é selecionado, a fim de ver a nossa curva. Então isso é um pouco irritante. Vamos realmente adicionar um modificador a ele, então é um pedaço apropriado de geometria. Então é aí que pegamos a pele é finita. Nós podemos guiar isso, bem como filme rapidamente fazer isso. Então vamos fazer isso fazendo modificadores de arquivo OBJ, esse novo tipo é igual a skin e, em seguida, nome. Não importa o que é chamado de seus parentes fazerem isso, então nós já, então depois de criarmos os objetos, criamos um modificador do tipo skin, que é um pouco mais fácil de ver se você apontar. Tudo bem, então isso já está parecendo muito legal. Deixe-me aplicá-lo a um C aos vértices porque não me deixa ver. Tudo bem, legal. Então, isto são amostras humanas. Se pegarmos a amostra e for muito mais curto, talvez não devêssemos fazer isso. Bem, por enquanto, está tudo bem. Vamos entrar aqui, aplicar o modificador. Eu vejo, o eu, eu vejo. Por isso, vai ser sempre mudado por um. Assim como pode ler isso. E florestas. Para onda senoidal, devemos adicionar mais algumas variáveis. Então vamos adicionar uma frequência. Vou colocar isto no comprimento de 30, porque deve ser mais variável. E depois altura três, talvez. E então poderíamos fazer um passo que seria o comprimento dividido pela nossa amostra, que vai endireitar tudo. Isso faz um pouco mais de sentido. Você vai ver como isso parece em um segundo. Tudo bem, então, a fim de fazer o, para obter a onda senoidal, nós temos que importar matemática, o que nos permite acessar um monte de módulos mais. Então, se pudermos começar a ser explorado e o console um pouco, amplie. Uma coisa que você poderia fazer. Terceiro, matemática. Isto, esta função é derivada, função é apenas função Python padrão. Vou listar todas as coisas que você pode fazer com o método ou classe atualmente selecionado. E aqui, para que você possa ver matemática oferece raízes quadradas seno. Talvez eu possa mostrar-lhe aleatoriamente para torná-lo um pouco mais visualmente também. Se eu fosse fazer o aleatório, você poderia ver uniforme aleatório. Então essa é a função que usamos antes, certo, para uniformes aleatórios. E aqui você pode ir à procura de coisas. Então vamos dizer que eu queria fazer algo com pecado ou irradiância ou com poder, eu acho, meio que procurar por isso. Então eu vejo ok, então é chamado de pecado. E eu posso talvez como ter métricas em, e então ele irá retornar o seno de x, seno x retornar um seno de x. Então, se eu fosse fazer seno 90 é 0,9, isso é correto. Medido em radianos. Claro que não é bom assim como o seu método. Porque é um aqui também. Tudo bem, então radiância MATLAB, sim, 90. Isso é 1.5 sites fazer. Sim. Então o seno de 90 é na verdade um que funciona acima, então você só tinha que pressioná-lo e em brilho. Mas sim, isso é apenas um pouco mais sobre como você pode realmente jogar e descobrir esses, esses módulos. Se você apenas imprimir isso, você pode tipo de passar por tudo o que ele oferece, o que mais tem você também pode, é claro, verificar a documentação. Então deixe-me encaixar rapidamente o que quer que entre aqui. Então você pode ir assinar. Talvez em um suporte. Sim. Há um seno de x radianos. Sim, e x radianos, é claro, um retorno de alvo está em radianos, mas um sinal em radianos. Isso não faz nenhum sentido. Além disso, acho isso. Agora sabemos como funciona a matemática. Então podemos realmente pegar nosso, digamos que nosso valor é o que queremos fazer. Sim, vamos em vez de um, escuta este método seno de i t nós temos agora você tem onda senoidal que tem muito, muito bloco e muito, muito longo também porque temos 500amostras. Então isso vai ser 500 e link porque sim, isso sempre vai ser um. Então sim, definitivamente não queremos isso. Queremos ter algum tipo de passo. Quero dizer, todas as provas já no lugar. Então vamos dizer que o meu valor é igual a i vezes passo. E então eu queria fazer, em vez disso, eu quero fazer valor, o que vai torná-lo um pouco mais controlável e um pouco mais suave porque nós temos esses passos extras. Em vez de ser apenas um , será 30 dividido por 500. E desta forma podemos realmente controlar o comprimento. Se colocarmos isso em 20, será menor, mas não mudará a frequência que você esconderia ou algo assim. E é realmente incluir TIC. Então vamos multiplicar nossas coordenadas xy pela altura. Então desta forma, se você fizer 33,55, vai realmente afetar a altura. Vamos colocar isso no três. Eu meio que gosto disso. Está bem, então já está a olhar. Talvez. Vou mostrar-lhe quais amostras muito rapidamente para ter menos amostras, você tem menos vértices. Então é menos resolução. 500 e suave. Isso corre rápido como bem. 15. Leitura e visualização de dados reais: introdução: Eu pessoal, nesta parte do curso, Eu vou estar falando sobre a leitura em dados reais de um arquivo CSV e exibi-lo como gráficos 3D apropriados gráfico de barras 3D. Vamos passar passo a passo, lendo os dados, exibindo-os bem. E eventualmente, vamos acabar com um gráfico de barras 3D adequado, como você vê aqui. 16. Leitura dos dados ( csv ): Tudo bem caras. Apaguei todo o nosso ouro para gerar este material. Então eu vou me livrar dele também. Aquele, vamos ver antes que ele se vá. E eu vou começar de novo, importante BP como estamos acostumados. Isso também é importante. Csv, que é o módulo padrão para Python e liquidificador. Acabei de incluir por padrão para que não tenhamos que fazer qualquer outra instalação ou qualquer coisa. Eu só vamos entrar por padrão. Então, talvez vamos rapidamente para nosso console e executar isso também onde ele realmente ainda está aqui. Eu já fiz uma pequena gravação que eu tive que começar de novo para possamos realmente ver o que era a saída ou que são que vêm em. Então você pode ver algumas outras coisas aqui podem ser um pouco abstratas. Só não vou ver os dois carregarem a biblioteca CSV. Nós só vamos usá-lo para, para importar nossos dados. Então, a principal coisa que precisamos é de um caminho de arquivo. Este será o banho real sobre isso sobre o nosso arquivo CSV que queremos lê-lo. Então vamos abrir esse cara, não preciso ver nele é realmente uma espreitadela do que Alcott entrou. Mas como você vai para os gráficos de barras, e este é o arquivo de dados real. E nós, relativistas, abrimos isto rapidamente. Então vocês podem dar uma olhada no que está lá dentro. Se você não estiver familiarizado. Arquivos Csv, arquivo de valor separado por vírgula é basicamente apenas valores separados por vírgulas. Talvez se eu mostrasse como adicionar um arquivo de texto ou como em um bloco de notas. Pode ser um pouco mais claro. Novamente, estas são apenas as horas de Gama trabalhadas e então você pode apenas ver todos os dados aqui em baixo. Então essencialmente na sexta-feira, as 4z sete horas, isso é o que os dados dizem. Então, como uma breve visão geral do que vamos estar olhando. Então, a fim de obter o caminho do arquivo desse cara, você pode clicar aqui no topo do Explorer e cultural c, tudo isso. Então este é o diretório d e, em seguida, o nome do arquivo. Vamos apenas fazer F2 para renomear Controle a para selecionar tudo e Controle C. Certifique-se de que você tem a extensão lá, nenhum. Então você realmente tem tutorial dot CSV ou qualquer que seja o seu arquivo, dot csv. E isso é realmente importante porque caso contrário o liquidificador não será capaz de encontrá-lo. Então este parece um bom banho. Uma coisa que temos que fazer é pressionar como arte que eu frente a ela. Isso ocorre porque temos barras invertidas em nossa string. Tudo entre aspas é chamado de string e programação. E Python é na verdade, você realmente tem que dizer ao Python para não lidar com essas barras invertidas porque você pode realmente fazer como uma barra invertida n para uma barra r, que é como caracteres especiais, não vão entrar em aqueles de hoje. Você só precisa ter certeza de que você quer melhor arte e frente ou escapar de cada barra invertida com outra barra invertida. Então, ambos os morcegos são válidos. Se fizeres as palestras do Beck, isso não vai funcionar e eles vão ser capazes de resolver o seu caminho. Portanto, esteja ciente disso. Vou usar o primeiro porque é quem lê melhor. Então, tudo bem, agora temos nosso caminho de arquivo declarado. Nós só vamos ter que ler os dados CSV reais que estão armazenados dentro deste arquivo. Então eu vou criar uma variável na qual eu vou armazenar todos os dados. Então talvez eu chame dados, talvez um pouco mais limpo. E então abriremos nosso arquivo. Então este é um pouco de código Python é, não está vinculado ao Blender isso, este é apenas código Python geral para abrir um arquivo. Assim, com aberto e um caminho para o arquivo, a reivindicação e como a nova linha é um ponto que diz ler matéria como um arquivo CSV. Então, dentro disso, seremos capazes de interagir com nosso arquivo usando a variável de arquivo CSV que é melhor aqui. Usando, quero dizer, isso é apenas uma maneira de abrir um arquivo e, em seguida, tê-lo perto diretamente se você está familiarizado com a programação. Se não for, realmente não importa. Este não é um tutorial sobre o arquivo IO ou qualquer coisa, então apenas pegue minha palavra sobre ele. Em seguida, vamos declarar o nosso leitor CSV e dar-lhe o nosso arquivo CSV como um, como uma entrada. O que, na verdade, eu vou mostrar o que isso retorna executando isso. E eu estou dobrando nosso console porque a impressão realmente imprime para o console do sistema, como dissemos antes. E que o capítulo do curso de Peri, isso realmente retorna um objeto leitor CSV, que não é realmente nada com que possamos trabalhar, certo? Obviamente vai ter que alugar os resultados dos nossos leitores. Então, um leitor é na verdade uma lista de linhas. Então o que podemos fazer é fazer um loop sobre todas as nossas regras dentro do leitor e, em seguida, colocar isso em nosso dicionário, nosso dicionário de resultados reais. E novamente, tudo isso, o que estou explicando agora é muito pitônico. Ouro. Isto não tem nada a ver com o liquidificador ou isto não tem nada a ver. Isso é apenas não até que eles misturam decisões cotidianas, todos os tipos de coisas, a fim de extrair dados de um arquivo CSV. Você pode procurar isso online. Há muitas respostas de estouro de pilha. Vou te dar exatamente isso. Eu só não vou gastar muito tempo nisso porque este não é realmente o foco de hoje. Mas sim, vamos ver o que isso nos dá. Na verdade. Vamos mudar isso de volta para dados porque realmente usado dados aqui. Vamos imprimir dados e ver o que isso nos dá. Vamos conseguir um dicionário. Então nosso primeiro índice será dia e horas de trabalho. Então esta é na verdade a primeira fila. Então isso é talvez comparado com entradas na saída para o que escrevemos. Então, primeiro de tudo, nós obtemos são ou variável que é tipo CSV, e então nós podemos loop over, para que possamos iterar sobre todas as linhas em nossos índices que nós arquivamos. Então, se fôssemos abrir nosso arquivo CSV novamente, vou usar o Excel desta vez para que você possa realmente ver claramente as linhas. Você pode ver por linha. Então talvez eu imprima o tamanho disto. Assim, o comprimento do leitor será essencialmente a quantidade de vestes que todos têm, mas realmente não esperava o trabalho. Deixe-me mostrar isso rapidamente. Sim, não tem, não é uma lista real. Por algum motivo, você pode iterar sobre ele, mas não é como um tipo de lista. Como vimos antes. Este é o objeto do leitor CSV. Então é um pouco diferente, mas você pode fazer um loop sobre ele, que é a coisa mais importante. Assim, você pode rolar sobre todas as linhas. Eu uso a função enumerar, a fim também ser capaz de X como nosso índice sorta atualmente subiu Ed próximo. Assim, desta forma, podemos realmente ter uma chave única. Isto é porque se eu fosse usar fazer para leitor de linha, e então eu poderia imprimir minha regra. Vamos fazer isso por um segundo. Execute isso. Você pode ver que estas são todas as linhas que estão dentro do meu leitor. Verá que estão reservadas na segunda-feira, certo? Então, se olharmos aqui, podemos colocar ao lado do outro e escolher um quatro quando z3. Então estes são, estes são os dados e em suas linhas. Então, para cada fileira, estou imprimindo o que está dentro. Mas agora, quando eu tenho isso, não há nenhuma chave única que eu tenha. Porque o problema com dicionários é que você nunca pode ter uma chave duas vezes. Então, se eu dissesse dados, e eu poderia colocar a linha 0, que é o primeiro índice com esta lista, que será segunda ou terça ou quarta ou qualquer outra coisa. Então, se eu pegar esse cara e definir isso igual a um, que são as horas trabalhadas. Então 84, três. Então eu só teria uma entrada para segunda-feira, uma entrada para terça-feira e assim por diante. Porque ele irá constantemente sobrescrever a entrada anterior dentro. É assim que discuto como os dicionários funcionam em Python. Então isso é algo que você tem que estar ciente. Sua chave sempre terá que ser única. Porque novamente, se ele encontrar, então, você vê aqui segundas-oito com este é um mau exemplo. Então terça é uma, mas na verdade, há quatro horas ou seis ou quantas. Ele só se lembra da lista, escolha um e as linhas. Então, a fim de corrigir isso, temos que manter o controle do índice. E se você quiser fazer isso, isso não é um toro e erro porque não há valores suficientes para mpeg. Ou, na verdade, não diz especificamente. Mas isso é algo que eu sei. Então você tem que fazer enumera sobre isso, desculpe, eu recebo o cheque real sobrecarregado, mas você também tem o índice e eles podem usar nosso índice tem uma chave. E então nós podemos realmente criar um dicionário dentro do nosso dicionário que irá armazenar nossos dados. Então este seria o rótulo e este seria o valor para como, como eu chamá-lo. Isso é bom. E então veremos que temos uma entrada para cada dia, toda segunda, terça. Eles não foram substituídos. Desta forma, podemos realmente extrair todos os dados. Então isso já é um grande pedaço de trabalho feito. Nós temos nossos dados ordenadamente em um dicionário e eles estão prontos para ser trabalhados. 17. Leitura dos dados ( txt ): Ei pessoal, eu vou rapidamente passar por cima de tudo. Também podemos extrair nossos dados quando se trata de um arquivo de texto. Então você pode ver aqui é o CSV, que pode ser um pouco complicado demais para o que estamos tentando alcançar. Agora. Essencialmente, os dados são os mesmos, mesmo a forma como são escritos, são os mesmos. Acabei de mudar a extensão para ler ponto TXT. Então, se colocássemos estes ao lado do outro, veríamos que é essencialmente o mesmo. Mas este é um arquivo TXT ponto que torna um pouco mais fácil de trabalhar e interagir com. Então vamos abrir o Blender. Isto é apenas uma cena vazia. Vamos para a batalha de Scripts. Novo arquivo maior. E então as importações seriam ICM, assim como estamos acostumados. Salvar cena, assim. Tudo bem, e estamos prontos. Ok, então a primeira coisa que vamos ter que fazer é localizar ou arquivar porque queremos importá-lo no liquidificador. Você tem que saber onde está. Vou clicar rapidamente aqui. É a mesma equidade com o CSV, mas se você não viu o vídeo, vou rever isso de novo. Então vamos ter que copiar o diretório. Então clique na parte superior do Explorer e as pessoas veem isso. Venha aqui e vamos configurar uma variável chamada caminho de arquivo e, em seguida, copiá-lo. E assim, até agora, tão bom. Vamos voltar aqui, pegar nosso nome de arquivo real, verifique se você tem as extensões ou não é TXT. Você precisa do todo o todo. Tínhamos todas as mensagens aqui. E posso adicionar outra barra invertida. E baseado em um nome de arquivo, uma coisa a menos que temos que fazer para tornar este um caminho válido no Python é uma barra pouco antes da string. Há algumas palestras OPEX de manipulação que Python faz por padrão e não queremos que ele faça isso agora. Então, podemos apenas dizer para não trazendo estes estão na frente. Então isso é realmente importante. Você não pode esquecer isso. Tudo bem, então essencialmente o que fizemos agora é pegamos o arquivo AAC, mas ainda não fizemos nada com ele. Então vamos abrir. E eu nem fiz isso. Então, com caminho de arquivo aberto, queremos ler o arquivo. Então vamos colocar r aqui, que é o modo de visualização. E então vamos dizer como arquivo TXT. Então, na verdade já estava feito, agora abriu nosso arquivo. E você pensa, por que isso não está dentro desta declaração, então neste nível de recuo estará acessando o arquivo. Então, sempre que estamos aqui dentro são seguidos por aberto, mas sempre que estamos de volta aqui, o arquivo estará perto. Então isso é muito legal. Isso é feito automaticamente com essa sintaxe de largura aberta. O liquidificador oferece que Bitcoin oferece melhor. Tudo bem, então nós estamos em nosso arquivo neste momento porque meu cursor é um recuo acima do início ou desta largura. No arquivo. E vamos imprimir por enquanto. Então vamos imprimir o ponto do caminho do arquivo, ler linhas. Vamos apenas ler todas as linhas e ver o que isso nos dá e basta clicar em Executar. Vai me dar um erro. Então vamos verificar isso abrindo nosso console do sistema. É assim que podemos realmente ver o que escreve sobre dizer. Portanto, ele não tem qualquer retransmissão de atributo. Ok, então isso é porque sempre que estamos dentro de nosso arquivo de texto, nós temos que usar nosso arquivo DEX onde não podemos usar nossos arquivos porque nosso sentimento ruim é apenas a localização do arquivo, arquivo de texto. Esse é o que declaramos aqui, na verdade, é o conteúdo do arquivo. Então, seja lá o que for aberto, você tem que ser referido como arquivo txt neste exemplo. Então não era isso que eu queria fazer. Isto executar aquilo, que funcionou. Vamos voltar para o nosso console do sistema porque ele ainda está imprimindo também tem que ser emitido para os servidores do console do sistema vão ter que olhar aqui. E podemos ver que agora temos todas as nossas linhas aqui. Portanto, esta é uma lista essencialmente. Então esta é uma coleção de linhas. Readlines função retorna como uma coleção de linhas. E podemos ver isso aqui. Há essa barra invertida n, que é um dos, o caractere de barra invertida que eu estava falando aqui. A barra invertida n está essencialmente dizendo ao seu, seu arquivo isto é um enter, então este é um novo caractere de linha. E nós realmente não queremos isso em nossos, em nossos dados, para que possamos nos livrar disso. Então vamos realmente criar um dicionário como fizemos antes. Então este será, seus dados, será um dicionário vazio como este. Então é assim que você pode declarar um dicionário vazio. Então é essencialmente o mesmo que dizer isso. Mas eu só estava datilografando trabalhos por enquanto. Desculpe, meu alarme. Certo, então temos um dicionário vazio. Vamos agora passar por cima de todas as nossas linhas. Então temos X quantidade de linhas. Nunca sabemos quantas lentes ou temos esta coleção de linhas? Assim como fizemos com os objetos, podemos apenas iterar sobre cada linha que podemos encontrar. Então, linhas de arquivo TXT de quatro linhas de leitura. Então esta será a nossa coleção de linhas sobre cada linha. Uma coisa que temos de fazer, por isso deixa-me imprimir a linha. Para fins ilustrativos. Podemos ver que temos estas, todas estas linhas. E agora observe que essa barra invertida n caractere não está mais aqui. Mas em vez disso, temos esta entrada. Nós temos esta linha no meio, que é essencialmente fora é barra invertida. N personagem é interpretado em mistura em Python, que não é o que queremos, é claro. Então, uma coisa que podemos fazer é gravar nossa tira esse personagem. Então, por que estão se despindo? Nós podemos essencialmente retirar qualquer coisa da direita da nossa cadeia atual. Então minha linha seria igual a. Vejo você na próxima segunda-feira, destino. E eu sou barra invertida, dizendo que nossa tira, nós podemos realmente começar da direita e você pode tirar essa barra invertida n. Então, o que quer que coloquemos aqui vai ser despojado. Então nós vamos realmente obter isso em vez disso. Então, se formos imprimir isso para o console, rode nosso script. Você pode ver agora que o entra no nosso, nosso desaparecem. Então esta é essencialmente a linha que queremos armazenar em nosso dicionário de dados. Então vamos redefinir nossa linha. Defina-o igual à linha sem este enter no final. E então nós podemos realmente usar isso em nosso dicionário. Ainda há mais uma coisa que temos que fazer. Então, para ver como reutilização iniciada, cada coluna já foi dividida por string, pelo, pela função. Mas agora vamos ter que fazer isso nós mesmos. Então podemos ver esta linha, por exemplo, diz domingo vírgula cinco. Mas, na verdade, precisamos dividir isso. Então nosso dia é domingo e nossas horas trabalhadas são, são cinco. Mas a partir de agora, esta é apenas uma entidade, esta é uma string. Então temos que dividir isso. Então, a fim de dividir a string, podemos usar a função split. E não é assim tão difícil. É, isso é uma coisa legal sobre Python. É tudo muito legível e não é tão abstrato. Então poderíamos dizer o nosso dia. Este ponto de linha se divide e um é dividido na vírgula. Então isso irá essencialmente retornar uma lista de nosso, de nossa cadeia que nós damos a uma linha como uma string. Queremos dividir esse coma em atraso. Então vamos pegar o que está antes da vírgula, o que quer que esteja depois da vírgula. E essa vai ser basicamente a nossa lista. Deixa-me mostrar-te. Vou imprimir o dia agora. Este não vai ser o dia real. Esta vai ser apenas a lista que foi dividida sobre a vírgula. Desculpe, isso ainda não está correto, então vamos fazer isso. E agora veremos que temos o nosso dia e as nossas horas trabalhadas separadas. Então esta é agora uma lista com 22 itens e assim um para cada coluna. Uma vez que as nossas colunas estão divididas com esta vírgula. Então, nosso dia é na verdade o primeiro. Então podemos dizer e em seguida é 0, porque sempre temos que começar com o índice 0. E as nossas horas trabalhadas seriam o índice um. Então, isso será em tudo depois que o cólon é tudo antes. E isto é tudo depois. Bem, claro, se houvesse várias vírgulas, haveria mais de dois índices nesta lista porque é assim que a propagação funciona. Ele vai se dividir antes de cada croma. Mas já que há apenas um, só teremos o que é antes e o que é depois. Então é exatamente isso que queremos. Então, e se pudéssemos saber, por exemplo, que eles iriam imprimir horas trabalhadas e veremos que isso é exatamente o que queremos. Então agora ainda há, nós ainda não queremos isso para cada linha aqui. Isto é apenas um cabeçalho ou rotulagem ou o que quer que lhe queiras chamar. Então uma coisa que eu vou fazer, eu vou usar a função enumerar novamente. Então esta é uma boa maneira de bytes e permitindo-nos obter um porão de nossa atual e próxima. Por isso, enquanto estamos a percorrer todas as nossas linhas. E do jeito que tínhamos antes. Então, para linha em arquivo, comprimento de leitura, somente leitura, pegue nosso objeto alinhado. Três apenas pegar o objeto string real que está na lista que não sabemos qual é o índice atual ou a iteração atual, nós apenas obter o objeto. Mas usando a função enumerar, pegamos nosso índice, então nossa iteração atual e on-line também. Então isso é realmente muito mais Pythonic que também poderia fazer para o índice no intervalo e, em seguida, o comprimento ou como a quantidade de linhas que temos e, em seguida, estão mentindo seria o arquivo de texto é linhas lidas em um. para o índice no intervalo e, em seguida, o comprimento ou como a quantidade de linhas que temos e, em seguida, estão mentindo seriao arquivo de texto é linhas lidas em um. variável também, um acre apenas gravidade pode explorar isso pode já ficar um pouco confuso. Então vamos voltar a este modo de lê-lo. Então agora usar essencialmente usando esta função enumerar e nossa coleção, temos essencialmente desbloqueado este índice querível em nosso loop for. Então, agora podemos acessar isso também. Então, como fizemos antes, vamos pegar nosso dicionário de dados ou chave tem que ser única, então vamos colocar o índice aqui, e então vamos armazenar nossos dados aqui. Então eu chamo isso rotulado como na verdade, como nós chamamos de um dia por agora, mas é um pouco mais auto-explicativo. E o nosso trabalho é horas trabalhadas. E se fôssemos imprimir dados aqui embaixo, veríamos que temos, bem, ainda temos essa primeira linha. Vamos nos livrar disso agora, já que estamos usando o índice de rotação, podemos filtrar. Então podemos dizer se meu índice é maior que 0. Assim, para a primeira linha, nosso índice será 0 porque esta será a primeira iteração e sempre começamos em 0. Então, este será um olhar aqui. E 0 será esta linha. Então não queremos ser, basicamente vamos ignorar esta linha. Então, sempre que for, meu índice é maior que 0. Então, sempre que estivermos aqui ou aqui, ou onde quer que seja, vamos realmente fazer o que queríamos. Mas antes disso, pule. Essencialmente. É por isso que colocamos esta declaração if, esta filtragem todo o caminho no topo. Porque você nem quer se despir. Nem queremos incomodar se é a primeira linha, basta ir para este continuum. Isso não importa. Se imprimires isto para a nossa consola. Veremos que começa à uma. E depois temos todos os nossos dias e mais de horas trabalhadas. Tudo bem, então talvez deixe-me apenas mostrar rapidamente como isso seria se não usássemos nosso índice aqui, porque isso é uma armadilha ou dicionário que você tem que ser River. Então vamos dizer que nós apenas colocar o nosso dia aqui e então nós definimos isso igual ao que sempre trabalhamos. Ele só parece um pouco lista de matriz bonita poderia apenas funcionar. Então vamos executar isso. E agora, como podem ver, só temos sete entradas aqui. Só temos uma entrada por dia. E isso é porque uma chave de dicionário nunca pode ser, pode nunca estar lá duas vezes. Ele sempre irá apenas sobrescrever a chave do dicionário anterior. Digamos que tivemos segunda-feira, então colocamos oito. Ok, está tudo muito bem. Mas então teremos segunda de novo e então ele irá substituí-la com um. Então, se você, se você olhar de perto, você verá que esta linha é essencialmente apenas uma semana passada que o pecador não ouve. Então de domingo a sábado seis, então ele meio que volta e sobrescreve o que temos dentro. Então isso não é bom. Então, se você tem dados duplicados aqui, quero dizer, se o rótulo é duplicado ou, ou se qualquer coluna é duplicado que você não pode usar, não pode usar essa coluna como uma chave ou dicionário porque você perderá dados. Você vai, você só vai permanecer o último, menos entradas. Então não é isso que queremos. Então vamos usar nosso índice, que vai ser único porque é apenas a iteração atual da linha. Então este é basicamente o número da linha. Então eu uso isso em vez disso. E isso apenas criará um dicionário dentro e armazenará nossos dados aqui. Então, na verdade, não perdemos nada. Vai executar isso. Embora tenhamos todos os nossos dados ordenadamente e o mesmo formato que tínhamos quando costumávamos ver como biblioteca V. 18. Criando o gráfico de bar: Tudo bem, então agora que temos nossos dados, deixe-me realmente rapidamente renomear isso de volta para a mesma maneira que vocês no tipo de hábito CSV lado. É realmente rótulo e valor. Se você não conferiu o vídeo, eu verifiquei. Eu fiz um pouco mais explicando sobre como você gostaria de abrir o arquivo e o caminho do arquivo e outras coisas funciona. Então, se você sabe que isso ainda não está claro para você, talvez você possa ir ver esse vídeo também. Algumas mais informações para enumeração também. Então não é ruim para checar. Mas uma vez que você está aqui e seus dados são impressos, você está realmente pronto para ir para o próximo passo, que é na verdade visualizar os dados, porque é por isso que estamos aqui, certo? Deseja criar o nosso gráfico de barras 3D 3D? Não, é liquidificador. Então é isso que temos que fazer agora. Talvez primeiro, vamos escrever nossa pequena parte de limpeza que temos feito para o último par de scripts, bem como porque nós não queremos entrar e remover toda a geometria ou eu vou ser objetos toda vez porque eles devem estar criando cubos e outras coisas a partir de agora em cada iteração, toda vez que executamos o script e não queremos sempre ir para o ponto de vista e removemos tudo. Então você deve se lembrar que é agora. Portanto, para cada objeto em objetos de ponto de dados BPI, portanto, todos os objetos são uma coleção de objetos. E vamos rever todos individualmente. E então vamos cada objeto individualmente. Se fizermos isso, tudo se foi. Malhas ainda podem estar aqui. Então isso é o que vimos antes no nosso curso de sinais ou no curso de matemática. Talvez eu não escreva aqui. Então, se você quiser se livrar dele, este é um bom exercício para vocês tentaram, tentaram se lembrar de como fazê-lo. É muito parecido com o que escrevemos aqui. Tenha em mente que não queremos que ele mova objetos, mas queremos remover malhas. E isso deve ser uma boa dica para os caras que querem experimentar isso em casa. Por isso, não vou falar nisso neste momento. Então, vamos, na verdade, talvez um pouco. Então, digamos que o tipo de dados está aqui. limpeza acontece aqui. E agora todos nós fazemos e visualizamos dados. Tudo bem, legal. Então, essencialmente, o que queremos fazer é para cada índice, para cada linha, ou cada bit de dados que temos, queremos criar uma barra. Então o que vamos querer fazer é rever todas as nossas entradas de dados. Podemos fazer é fazer para entrada de dados e dados. Vamos imprimir isso. Vamos imprimir a entrada de dados. Veja o que conseguimos. Ficamos passo a passo. Você obtém todos os nossos índices, que agora é essencialmente o que queremos. Mas poderíamos usar isso para pegar nossos dados através de mim em um HLOOKUP, nossa entrada de dados atual em nosso dicionário de dados. Então, se fôssemos executar isso, veríamos o que queremos ver. Então estes seriam os nossos dados. Deixe-me abrir um arquivo de texto para que seja mais rápido. Então você veria linhas. Mas depois em Blender e Bison. Então, até agora, tudo bem. E vamos dar o pontapé de saída, desculpe. Muito bem, se conseguirmos os nossos dados, estamos a rever a sua história ou a verificar cada entrada de dados individualmente. E essencialmente o que queremos fazer agora é criar um dinheirinho. Então, para fazer isso, vamos apenas criar um cubo rapidamente para ter certeza de que sabemos como isso funciona novamente, porque nós continuamos esquecendo. Esta é uma deixa simples. Agora, a coisa é que eu quero redimensionar isso, a fim de torná-lo, para fazer a altura b o valor atual ou a corrente, a quantidade de horas que trabalhamos. Então, a fim de fazê-lo Alex, mas para diminuir para um, porque eu vou acabar redimensionando isso para cima. E eu quero apenas multiplicá-lo por um para que seja um pouco melhor. Então você não tem o dobro do tempo que deve ser resolvido antes que eles possam se livrar deste modo de edição entrar. E a localização vai ter que mudar também. Então não queremos que todas essas barras se sobreponham umas às outras. Então vamos colocá-los na direção y. Então diz que estamos usando um tamanho de um. Nossa largura ou o cubo será um em todos os momentos e são índice ou hora. A iteração também incrementa com um. Então vamos usar novamente a função enumerar, que é uma que eu uso o tempo todo. Então, para repetir mais uma vez, o enumerar. Usando enumera antes de nossa coleção desbloqueia, nosso índice, desbloqueia nossa iteração atual. Então, por que nós apenas, para a entrada de dados ou para o item em dados, nós apenas excesso ou itens que você pode imprimir. Item que está bem. Mas não há nenhuma maneira de manter o controle de qual estrada de ferro iteração ou quantas vezes nós já rodamos esse loop. Nós poderíamos, naturalmente, definir uma variável i igual a 0 e apenas I é igual, igual a um cada vez em nosso loop. Mas isso é muito não-Pythonic. Então Python oferece essa funcionalidade por padrão, apenas colocando enumerate aqui. Então, desbloqueando nosso idx, nosso índice, e certifique-se de que você tem este pedido configurado corretamente para que ele seja o índice primeiro e depois o item real. Então isso é importante para notar. Então temos o nosso índice agora. Então você pode muito bem colocar isso como nossa coordenada Y. Assim, na primeira iteração, nosso índice será 0. Então nosso índice y r, y coordenada será um, será 0. Desculpe, deixe-me ilustrar. Então, nossa coordenada Y até V 0. E nosso próximo cubo, ou próxima iteração ou IV, x será um e nossas coordenadas Y serão um. E isso continua e continua. Então temos 2345 e assim por diante. Então, desta forma, podemos realmente facilmente apenas alinhar ou cubos. Desde que sabemos que o comprimento vai ser sempre um. E isso sempre vai aumentar com um. Então isso funciona bem. Ok, agora, ele já parece um gráfico de barras, mas não é realmente interessante, é tudo igual. Então nós vamos ter que escalar estes para cima. Então vamos fazer isso manualmente novamente para ter certeza de que sabemos como fazer isso. E comecei a roubar o comando aqui em baixo. Então podemos apenas redimensioná-lo, o valor, o que quer que seja. Então isso não deveria ser dez, certo? Deve ser o nosso valor real. É absolutamente amor. Este deve ser um dois ou seis. Então, a fim de obter esse valor, vamos precisar procurar nossa entrada de dados atual e dicionário de dados. E então ainda não teremos, deixe-me mostrar o que temos se fizermos isso. Então agora temos apenas os cubos de risco, mas este é o nosso valor. E não queremos isso direito. Queremos pesquisar nosso valor dentro de nossa entrada de dados. Então nós realmente temos que procurar duas vezes porque nós temos um dicionário dentro de um dicionário aqui. Então vamos ter que procurar de novo. Então, usando esses colchetes e, em seguida, queremos digitar os valores. E esta é a chave que usamos para armazenar nossos dados, nossas horas trabalhadas. Então, se usarmos isso, veremos que nosso valor é realmente o nosso valor. Então, agora que temos, podemos colocá-lo em vez de R, então ele se torna dinâmico, mas ele realmente pára de funcionar. Então vamos checar isso. Item de sequência esperado do tipo float, não string. Ok, então nós imprimimos isso. Isto parece números. Tudo bem, isso parece para mas essencialmente o que arquivos DEX ou arquivos CSV bem fazer é eles adivinharam qualquer valor que encontrar duas cordas. Então, em vez de armazenar para frente, ele irá realmente armazenar uma representação de cadeia de caracteres ou para o mesmo com qualquer outro tipo de dados. Digamos que você tenha uma lista de números. Então isso é 123. Ele vai realmente apenas embrulhar isso entre aspas e transformá-lo em uma string. Então você não vai realmente tê-lo. Você não será capaz de usá-lo como uma lista. Você teria adivinhado de volta a uma lista primeiro. Então isso é algo a ter em mente. Mas sabemos que isso sempre será um flutuador porque temos algum controle sobre nossos dados. Então podemos simplesmente lançá-lo explicitamente para um carro alegórico. Então isso vai, durante o seu número em um carro alegórico. Agora você tem que estar ciente. Então essencialmente o que temos agora, então o valor é uma string que é quatro. Então, se você fosse imprimir valor ou talvez apenas imprimi-lo assim, ele iria olhar. Como se fosse um valor para um carro alegórico. Mas se nós, digamos que fazemos valor mais três, isso não funcionaria como você vê, pode então ser concatenado string para string. Então nosso valor é uma string. Ainda assim. Devíamos fazer isso mais explicitamente n-type, obter o tipo do nosso valor. Isso seria um carro alegórico. Então, a fim de mudar isso, podemos dizer valor é igual a representação flutuante do valor R. Veríamos que o nosso valor é do tipo float. E se fôssemos agora para 3-2, isso funcionaria. Mas há uma coisa que você tem que estar ciente. Então digamos que meu valor é string, uma string real. Então, se esta é uma cadeia de quatro ou uma cadeia de testes, esta é a mesma coisa se eu fosse digitar, para procurar o tipo. Então string B, digamos que meu valor é igual a mesas. Esse valor é, ainda é uma string, ele não sabe o que, o que há dentro. Agora sabemos que quatro é um, é um flutuador, então podemos adivinhar para um flutuador. Mas digamos que nosso valor seja igual ao destino ou tente adivinhar isso para um carro alegórico. Isto não vai funcionar. Não foi possível converter string para teste flutuante porque este não é um, este não é um número, ele não vai funcionar. Então, o que fazemos aqui, como adivinhamos a flutuar, mas digamos que o nosso valor não é, não pode ser convertido em flutuar. Isto é, isto vai quebrar o nosso programa. Então isso é algo que você tem que ser cauteloso. Agora sabemos que isto vai ser tudo números ou está bem. Mas tenha isso em mente. Que você não deve simplesmente lançar tudo de forma imprudente para flutuar porque isso pode nem sempre funcionar. Mas, no nosso exemplo, isso sempre vai funcionar. Então vamos fazer isso e vemos que nossas barras têm o tamanho correto. Agora, mais uma coisa a notar é que este tipo de parece uma onda sonora ou algo que não é realmente o que queremos. Queremos que todos sejam planos no chão. Então você vai ter que movê-los para cima individualmente. E como você pode ver, ele escala a partir do centro. Então metade do, metade dele vai estar abaixo de 0,5 vai estar acima de 0. Então, basicamente, o que temos que fazer é subir metade da altura. Portanto, este valor é uma altura, muda para TIC. Então esta seria a altura e então esta seria a altura dividida por dois. Então, se você executar isso, podemos ver que tudo está alinhado corretamente. Nós não temos como uma pergunta que você quer, deixe-me talvez ela neste, nos dados, eu mudei isso para 19. Isso é professores recuando. Então parece um pouco melhor. E lá vai você. Agora eu tenho um gráfico de barras que há um gráfico de barras 3D real, não como a palavra de alguém impostores tentando alcançar. Então você pode construir em cima disso, é claro, você também pode usar esta leitura de dados de um arquivo de texto e criar uma paisagem urbana ou algo em segundo plano para obter, apenas obter alguns números e, em seguida, obter alguns edifícios. Mas, por enquanto, isto é apenas um gráfico de barras. Ele não diz muito. Podemos talvez adicionar algumas etiquetas ou algumas outras coisas que as crianças fazem assim que configuramos isso no nosso dicionário. Sabemos qual é a nossa gravadora, certo? Então podemos muito bem usar isso, imprimir isso, ou realmente armazenar isso. Então, isto funciona. Então talvez pudéssemos ter como deitado no chão aqui. Então talvez tente isso. 19. Adição de etiquetas: Tudo bem, agora que temos acesso ao nosso rótulo aqui, então talvez deixe-me imprimir isso rapidamente e ter certeza de que isso é exatamente o que queríamos ser. Então, isso é só um dia. Vamos realmente colocar isso em nosso 3D também. Então não queremos apenas ter que olhar em nosso console, certo? Então é isso que é. Qualquer 3D. Talvez devêssemos criar algum texto para isso. Acho que é a melhor maneira de representar isso. Então não me faz fazer isso manualmente primeiro para ter certeza de como isso funcionaria. Está bem? Então, o que fizemos? Nós adicionamos isso. Nós apagamos, e depois voltamos. Tudo bem, então isso significa utilizar dados. Na verdade, vou colocar isso aqui também. Então isto é para o bar. E depois vamos rotular o bar aqui em baixo. Como a nossa gravadora é esta. Você quer adicionar algum texto. Então o mesmo, isso parece parecido, certo? Então, em vez de cubo primitivo neste será decks adicionar, entrar, Modo de edição é igual a falso. Acho que queremos que isso aconteça. Nossa localização pode ser o mesmo que o cubo como r. Não podemos compensar isto e ovos. Então isso é compensado por 1.2 deve ser um estático porque sabemos que na verdade não são. Então sabemos que este é um, então este tamanho é um. E podemos ver as linhas já no centro. Então não temos que fazer isso até 1.2. Podemos fazer isso por 0,6. Então esta distância daqui até aqui será 0,05. E nós gostaríamos que fosse um pouco mais longe. Então vamos fazer isso. Talvez já vejamos como isso se parece. Então devemos ter um monte de mensagens aqui. E devemos empurrá-lo para trás um pouco no, no y. porque eu vejo já alinha ele também. No entanto, já o alinha assim. Mas nosso Q estava indo para os dois lados. Se fôssemos fazer isso seria um pouco melhor. Continuamos entrando no modo de edição, o que é normal porque é isso que dizemos a ele para fazer. Então vamos agora, na verdade, já editada. Então primeiro vamos ter que nos livrar do texto que está lá. Então, vamos fazer isso. Agora uma coisa que temos que fazer aqui é em vez de anterior ou seleção, ou ele vai ter que mudar isso para palavra anterior. Porque nós, nós também poderíamos apenas fazer isso cinco vezes como fizemos aqui é pressionado backspace cinco vezes B. Desta forma, nós estamos realmente apenas vai remover todo o mundo, remove todas as palavras porque um pouco mais fácil. E então vamos realmente inserir nossos textos que queremos. Portanto, texto inserir texto recupera antecipadamente. Então nós queremos. Sinto muito, cara, Open. Jogar golfe o tempo todo é muito irritante. E vamos tentar não fazer mais isso. Mas então estamos basicamente configurando nosso rótulo e o texto e então nós só queremos sair do modo de edição. Então deixe-me copiar isso. Desculpe, estamos prontos para o próximo. Então o que fazemos agora é procurar o nosso rótulo. Aqui criamos um pouco de texto. Nós nos livramos do, o texto de exemplo. Então isto é um pilhas. Nós não queremos isso. Introduzimos o texto do rótulo que queremos. Então, o nosso dia e eu voltarei ao modo 2 LLC. Então, se fizermos isso, podemos ver que temos nossos dias. Parece legal. Talvez pudéssemos fazer uma coisa, porque isto agora é plano. Há um extrovertido, talvez seja um bisel ou algo assim. Então objeto complexo que vai ser dados de ponto de objeto atual. Mas possuir o 0.01. Veja como isso parece. E agora temos alguma espessura, pelo menos. Então, se compararmos, se não fizermos isso, é plano, faça-o. Temos um pouco de Robin é muito fino. Escalá-lo em Z. Tão seco que talvez já esteja, mas acho que está bem, porque parece muito melhor com o sombreamento porque o ar é como a geometria real porque isso é apenas, bem, isso já está com o bisel, mas é bem plano. Com isso, temos um pouco mais de tridimensionalidade. Eu diria, bem, isso é tudo uma preferência pessoal, certo? Eu vou escalá-lo em dois, apenas torná-lo duas vezes mais grosso do que deveria ser como era antes. Para que possamos tê-lo assim. Exagerar para te mostrar, ela é basicamente a espessura. Ok. Vou colocar isso na variável também para torná-lo bonito para que não tenhamos todos esses números mágicos. Na verdade, sou um par deles. Então nossa espessura definiu isso para deixar esse cara aqui nivelar que seria 0,01. Temos também um texto que será 0,6. Então eu estou basicamente traduzindo todos esses valores, variáveis. Então, quando lemos isso, não são apenas números mágicos e podemos ter essa localização centralizada de onde ajustamos esses valores. Então não há mais. Quero dizer, isto foi 0,05. É porque temos um aqui. Quero dizer, posso deixar isso aí. Então eu tomo agora vamos começar, você geralmente só quer evitar ter números em seu, nessas funções agradáveis. Você só quer que ele seja x porque então você sempre tem que ir procurar onde esses valores estão em IA, este é o nosso y definir a espessura. Então eu tenho que olhar para o valor Zed aqui. Agora você pode simplesmente chamá-lo de x espessura. Boom, para mudá-lo ali mesmo. É muito mais conveniente. Ok, então agora temos uma rotulagem repentina acontecendo. Isso já está parecendo muito bom. Talvez possamos ter alguma rotulagem no, no eixo Zed também. 21. Labeling: Tudo bem, então nós temos nosso silício grosso, ok, o substituto meio que dá um pouco mais de significado para os dados, mas realmente não muito. Isto é apenas uma espécie de coisa visual. Então agora vamos realmente somar nossas informações adicionais aqui também. Então, vamos colocar o número ou os ticks estão ao lado, para tomar assim que eles dizem um pouco mais e, em seguida, usar onde o. Então, para isso, vamos basicamente fazer o mesmo que fizemos com a nossa rotulagem aqui em baixo. Então vamos apenas colocar um pouco de texto em uma linha que é apropriadamente, certificar-se de que a posição está correta. Sim, então como é que vamos estar a fazer é apenas copiar isto e, em seguida, apenas mudar os valores. Então talvez o local que eles podem perder e o tamanho é realmente bom. Então eu não vou mexer com tudo isso aqui. O imposto real vai ser diferente em outro local, é claro. Para começar, posso copiar a localização do nosso pinto. Acabei de colocar isso aqui. E, em seguida, o texto que eu vou apenas fazer 0 por agora apenas como um manequim para ver como isso funciona. E nós já podemos ver nossos textos como sendo posicionados aproximadamente no lugar certo. Bem, pelo menos ele mexe combina com uma espessura, mas não está realmente alinhado corretamente. Então nós vamos ter que empurrar isso um pouco para cima. Em nosso valor Zed localização, ou valor atual vai ter que ser um pouco maior. Aqui vamos ter que atravessar a espessura espessa dividida por dois, a fim de colocá-lo no topo. E então nosso número real também tem espessura ou você vai ter que adicionar isso também. Então este será o nosso chanfro que vezes r espessura. Então vamos fazer isso também. E então você quer ser bem grande, então isso é talvez criar uma variável para ele. Então número, não tenho certeza se esta é uma maneira correta. Número porque eles não devem olhar para definir x é, vamos apenas chamá-lo assim por enquanto. Então teremos definido aqui também. Só para que funcione. Vai fazer todos os nossos cálculos aqui. Então vamos pegar o valor atual, que é o meio deste bloco, irá adicionar a espessura grossa. Então, metade disso é levado é pensado para ele. E então nós também vamos adicionar nossa batalha que se eu puder encontrar esse nível de profundidade vezes textos espessura como K aqui. E este é um bocado só para ter a certeza de que está alinhado. Então deixa-me mostrar-te. E eu estava perfeitamente em cima do Ártico para cada carrapato. Então, isso funciona bem. Agora, mais uma coisa que temos que fazer é girá-lo. Então, isso será em torno de Z e então em torno de Y. Então, se eu fosse fazer o nosso set 90 ou 90 ou puxá-lo para cima, eu poderia apenas copiar esses caras aqui embaixo. Então, depois que você fez isso, não importa onde colocamos isso. Então nós queremos fazer isso por aí, faz isso, e em seguida em torno do y. Então, para executar, todos eles vão ser. De pé onde eles devem estar tigela. Então já temos algum número em carrapatos. Então isso não é ruim. Agora só temos que ter certeza de que é para corrigir um. Então, basicamente, o que queremos fazer é apenas colocar o, o que quer que esteja em posição é como um, como um valor aqui. Então vamos apenas pegar o valor atual e colocar isso aqui. Agora isso não vai funcionar porque nosso valor atual, que vai ser um flutuador. Diz que tem que ser um número, mas precisamos de um tipo de string. Então, em vez de dizer, eu vou aqui e o console ser rápido para ilustrar. Em vez de dizer que meu texto é igual a 40, que é que você quer ser um flutuador ou um inteiro neste ponto. Mas isso não é um direto porque precisamos explicitamente de uma string. Então você pode ver aqui esperado esta string. Então, se olharmos, nosso tipo não é string, então é errado. E se fôssemos fazer isso e depois digitar, obter o tipo, veríamos que é uma string, então tudo o que está entre aspas será sempre do tipo string. Isso é importante notar. Então, bem, não podemos simplesmente pegar aspas em torno disso porque seu valor atual está realmente fazendo referência ao valor. Se você fizesse isso, veríamos a palavra valor atual aqui porque não queremos fazer isso, certo? Então você quer realmente adivinhar o valor que está dentro do valor atual da variável. Queremos mostrar isso como a seguir. Então, uma maneira de fazer isso é SDR e, em seguida, o valor. Então, se eu colocasse x ou digamos que o valor atual é igual a 40 é 0,02 maduro, é um flutuador. E então digitamos onde você obtém o tipo de valor. Então isso vai ser flutuante. Certo? Agora, se você fosse lançá-lo em uma corda, você pode ver que as colheitas vão ser enroladas em torno dela. Não temos de fazer isto, só temos de escrever isto. E vamos realmente reatribuí-lo ao seu valor atual é igual à representação de string. E então se você fosse digitar para fora, que possamos ver que isso é uma string agora. Então, suportes STR, assim como fizemos com o flutuador, um pouco mais alto. Então, cada hóspede, o que quer que esteja aqui dentro, para um valor de ponto flutuante, faremos o mesmo com uma corda. Então aqui nós vamos apenas lançá-lo em uma corda. E se fôssemos fazer isso, chegaríamos lá. Eles são. Agora o alinhamento ainda está um pouco fora, então você pode ver que ele realmente fica alinhado à esquerda. Você vai querer alinhá-lo à direita. Então nós podemos apenas obter, obter o, o, o tamanho disso. Então este é agora três caracteres e este é quatro caracteres. Então o deslocamento vai ser um pouco diferente. Então, vamos realmente adicionar uma variável aqui e é um valor como cadeia ou armazenamento SSD lá. Porque uma coisa adicional que podemos fazer agora, se voltarmos aqui, iniciar o valor atual é aqui do tipo string. E agora podemos realmente consultar para alongar. Então, o comprimento será quatro. Então isso significa que havia quatro personagens no atual e no distrito. Assim, um 1234, ele pode até mesmo obter o índice de u1. Então o valor atual 0, isso tem um relatório. O primeiro índice vai ser 0,23 e vejo você no próximo ano. Isso tem quatro caracteres para consultá-la. Não vai funcionar porque o índice não existe, porque há apenas quatro e começamos em 0, então é 0 ou um a três. Então, fora do caminho, nós temos um par de caracteres e nós basicamente queremos compensá-lo de acordo. Então aqui cada conjunto é grosso deslocamento, queremos adicionar ou queremos adicionar a ele, mas nem sempre queremos adicionar a mesma quantidade. Então o que queremos fazer aqui é que queremos adicionar o comprimento do nosso valor atual vezes uma certa letra com variável. Então vamos atribuir essa largura de uma letra. E eu vou estimar que este seja um. E vamos ver o que conseguimos. Agora. Não é o que você quer. Então esta é a única razão. Então eu acho que isso é um pouco demais. E isso pode ter que ser negativo porque você está indo na direção oposta. Então vamos ver o que temos agora. Sim, este definitivamente não é um tiro de tiro ainda o ego deles. Então, porque nós apenas usamos um tamanho padrão deste texto, nós podemos apenas, ele vai ser um, então nós podemos pegar metade dele e vai ser o tamanho de letra única. Então isso parece bom. E vamos, talvez, então. Então esta é agora uma linha à direita. E isso talvez seja apenas para marcar o oposto. Para ser. Eu ainda vai ser, eu imaginei que eles vão ser relativos ao animal de estimação. Então, basicamente, o que queremos fazer é ir sentar dividido por dois, separados, um pouco menos longe. Não é aquele Bertier que. Então, sim, só se resume a preferência pessoal. Novamente, eu só meio que descobrir onde colocar isso. Talvez eu queira fazer um pouco mais. Então isso é um deslocamento adicional. Então este é um número. Vamos fazer isto 0,1. E depois isto, isto aqui. Vamos dar uma olhada nisso, um pouco maior para ter certeza que é assim que você quer que seja. E você pode jogar com esta posição. Claro, isso é apenas preferência pessoal. Eu só estou mostrando como você pode obtê-lo está vivo e como você pode obter os valores e onde você colocá-los exatamente. Não importa muito, pode até torná-lo um pouco menor. Se vamos dizer que você é como um bando, pode haver um pouco de porco. E agora vamos ver se eles se adaptam corretamente. Então, vamos trazer de volta nossos dados rapidamente indo para navegar para ele. Certo, então tutorial TXT. Abaixe isso para nove novamente. Vamos ver. Agora temos algo assim. Você também vai, porque agora pode ser um pouco estúpido ter 0 em todos os lugares para um inteiro, mas então você perde alguma precisão, é claro. Então isso é um, algumas coisas que você tem que levar em conta. Vamos colocar 39 rapidamente para ver como isso se comporta. Estamos sempre indo um sobre a configuração atual. Então certifique-se de que você gosta disso. Eu costumo fazer. Não importa tanto assim. O principal é que ele funciona. Isso, isso não deveria acontecer. Mas agora nós temos alguns problemas de arredondamento enquanto ele é arredondado por padrão, então por liquidificador, mas nossos números são muito longos agora nós não queremos exibir isso, talvez apreciá-lo. Então, vamos realmente levar isso em conta também. Então os alinhamentos ainda funcionam. Então isso é muito legal. Então, ele ainda vai estar alinhado à direita. Então, R, S, os trabalhos. Mas vamos arredondar isto. Então o nosso valor como string vai estar ocorrendo valor, mas arredondado. Então vamos levar dois valores após a vírgula para o bom em torno dele ponto. Tudo bem. Talvez rapidamente para ilustrar tesoura, função redonda e liquidificador. Então você pode simplesmente arredondar qualquer flutuador até qualquer quantidade de precisão. Então, se eu tivesse um número que é 0.0.0 é cinco, e isso iria dividir um número. Bem, talvez seja um número ruim. O número é igual a 15, alguma coisa. Número. Eu poderia arredondar esse número até que um valor atrás da vírgula eu conseguisse isso. Na verdade, seria inteligente o suficiente para arredondar isso porque o próximo valor é um nove. Se fosse 16,128, mostrar-lhe. Seria seis simples foi para era um, será 11, então codon. Então isso é um pouco mais sobre a função de arredondamento. Já não são dois importantes. Funciona do jeito que você espera. Então isso é sempre bom. E é assim que podemos adicionar mais significado aos nossos dados, ao nosso gráfico. 22. Criando e Randomizing materiais: Certo, temos falado muito sobre objetos e malhas e todas essas coisas. No final, é claro novamente, eu quero cobrir um pouco mais de terreno e eu quero falar sobre materiais também. Então, a maneira como usamos materiais é bastante, bastante semelhante à maneira como usamos objetos. Então talvez eu apenas ilustrar isso com um rápido. Você pode apenas criar um novo material e ver como isso se parece. Cbp, por que não upstart material dot nu. Então material arrogante que sabia, ok, é um pouco diferente. Mas se formos escrever isso, funcionaria da mesma maneira. Então vamos criar um material no final agora. E vamos ver que eles têm 10, na verdade têm um par de materiais. Eles já vão fazer isso algumas vezes. Então você vê toda vez que você executa isso, um novo material meio que ser criado. Mas o velho Walden também vai estar lá. Então, talvez vamos rapidamente nos livrar deles. Vamos fazê-lo da mesma forma que nos livramos dos nossos objectos. Então talvez eu faça uma pausa para um pouco, um pouco. Quero dizer, você deve pausar o vídeo, descobrir como você pode realmente remover todos esses materiais. É muito semelhante ao que fizemos antes, e é muito semelhante ao que está na tela agora. Então eu vou fazer isso. Pause se você de novo, três para um, vamos. Então queremos rever todos os nossos materiais, pegar o material atual. Assim, para cada material em nossos materiais, assim como fazemos para cada objeto e outros objetos. Materiais de ponto de dados Bpi porque estamos verificando materiais agora, remover material de garantia. Isso é se eu fosse executar isso agora, só haverá um material, que é este aqui. Não sei se posso passar um nome aqui. Bem, na verdade, como uma nota lateral rápida, geralmente é má prática usar BPI dot ops. É algo que vamos dizer e não explicar demais? Porque há todo um raciocínio por trás disso. Principalmente contexto e bolas e, e há liquidificadores coisas, liquidificadores, coisas API que eu não vou entrar. - Ele. É um pouco complexo demais para o escopo atual deste curso. É principalmente apenas bom lembrar que BPO i dot é algo que você só deve usar quando absolutamente necessário. Então, quando você quer criar geometria é usado para maneira de fazê-lo. Mas quando você cria o material, é essencialmente se deve usar dados de ponto BPI, materiais de ponto. E aqui eu posso chamar isso de qualquer nome que seus artistas usem por enquanto. E fazer isso é na verdade um pouco mais, um pouco menos propenso a erros. Então, na verdade, podemos ver aqui isso varia. Ou você diz restrita, a coisa da UI.R. É operadores são bastante bloqueados para baixo para o seu ambiente, por isso é melhor não pensar nisso aqueles e fazer apenas usar material de dados de ponto PPI ou quaisquer outras chamadas essencialmente. E agora podemos até atribuir isso a uma variável e podemos imprimi-lo apenas para verificar o que isso parece. Então você pode ver que temos um material. Chama-se nome. Posso chamar isso de qualquer material. Tudo bem, então agora essencialmente sabemos como criar um único material. Então vamos fazer isso para cada cubo. Então podemos fazer isso pressionando Tab e o início da linha, que é, whoops, que é que você quer empurrar nossa, nossa linha em nosso loop for. Então, novamente, tudo o que está neste nível de recuo vai ser looped sobre x quantidade de vezes. Então esta linha agora vai ser executada para um 100 vezes. Então, se eu rodar isso e ver que temos um 100 materiais, o nome é estático, mas ele só adiciona este ponto 048 ou ponto, ponto qualquer ponto, número ponto. Por trás disso. Há outro realmente importante, o nome apenas no URI ou onde quer que seja. Então agora essencialmente criamos um material à medida que criamos o cubo. Então, a única coisa que nos dura atribuir o nosso cubo 3D material. Então, podemos fazer isso fazendo objeto de contexto ponto BPI, que é atualmente objetos ativos com o qual é o nosso R cubo você acabou de adicionar, podemos acessar os materiais de dados deste objeto, e então podemos apenas acrescentar nosso material atual a ele. Então, podemos ver agora essencialmente contexto de ponto BPI de objetos dados dados ponto materiais, que é um, bastante boca, está se referindo a isso aqui para nossos materiais. E ao clicar neste botão, estamos anexando a ele. Então ele realmente está criando um novo e, em seguida, atribuindo-o diretamente já com esta maneira, criando-o e, em seguida, estamos anexando-o ao objeto atual. Então o objeto ativo no momento, o ativo, o objeto e ele acabou de ser criado por esta função. Então, se você fosse fazer isso, veríamos que cada cubo agora como um material, cubo C 017, que é material 017, e assim por diante. Então isso já está parecendo legal, mas todos os materiais ainda são os mesmos. Então, poder para ir para o editor de sombreamento. Equilíbrio, nem mesmo usando notas estão sendo exibidos aqui. Mas sim, eles estão todos parecendo exatamente iguais. E nem precisamos usar nós para fazer com que não seja o mesmo. Então, uma coisa que poderíamos fazer é um material que difusa a cor é igual. Vamos apenas torná-lo vermelho por enquanto. Veja se isso funciona ou não. Necessidade reduzida de. Portanto, este seria o nosso “G por isso, se nos preocuparmos também, vou comandar isto. Então, basicamente, o que estamos definindo como nossa cor base. Então, como você pode ver no, na ponta da ferramenta ele diz ponto cor difusa. E aqui você pode ver f, r, g, b, a. Então 1001. Não queremos que todos sejam lidos. Claro que queremos que todos sejam aleatórios. Então podemos usar nossa função aleatória como temos aqui para obter um número aleatório entre 01. E isto. Queremos fazer isso para todos os canais. Então queríamos isto para vermelho, verde e azul. Eu vou segui-lo sempre vai ter um. Vai ser sempre totalmente transparente ou opaco como a palavra transparente para o outro cara. Então, fazendo isso, estamos basicamente gerando uma cor aleatória. Então eu corri as cores para cada cubo, ou atribuindo essa cor através do novo material que criamos para cada q. e então estamos atribuindo o material com uma cor aleatória a ele, um cubo. 23. Randomização controlada: Certo, então temos nossas cores aleatórias atribuídas aos nossos cubos aleatórios. Se eu fosse executar isso mais algumas vezes, você veria que todos esses cubos agora têm cores individuais. Alguns sósias, mas são todos únicos. Quero dizer, pode haver uma duplicata que há como mil em cubos. Vamos supor que, para cada cubo, estamos aleatorizando. Então, para cada Q terá um material único. Mas digamos que queríamos ter um pouco mais de controle e queremos não apenas ter 100 cores aleatórias, mas digamos que queremos ter umas dez cores aleatórias. Então o que poderíamos fazer é quantidade de cores igual a dez. E da mesma forma como recriar nossos cubos Android, você pode criar um 100 materiais. Então, para i na faixa de cores de uma montanha, podemos fazer nossa criação de material ou randomização. E então essa atribuição, na verdade, não vai funcionar. Este ponto porque ainda não temos as nossas filas. Mas vamos, por enquanto, copiar isto aqui. Então vamos fazer é vamos criar X quantidade de materiais e, em seguida, vamos aleatorizar suas cores. Então agora ele se desgasta. Livre-se disso. Então não vamos mais criar um material para cada cubo. Ainda havia que atribuir material ao cubo atual. Então isto ainda pode ficar. Mas faz referências materiais e nossas quebradas porque não há acesso a esses materiais aqui. Então talvez vamos manter o controle de nossos materiais criando uma lista vazia no topo. E então, na verdade, anexando nosso material através desta lista. Então o que fizemos aqui é que criamos nosso material. Mas esta linha, nós aleatorizamos e, em seguida, adicionamos a esta coleção de materiais. Este é o lugar onde reinicializar esta coleção. Então só temos uma coleção vazia e uma lista vazia de materiais. E então, à medida que passamos pela nossa lista, à medida que criamos estes materiais estão a encher a nossa coleção. Então, no final, se eu imprimisse nossos materiais e eu executarei isso. Eu vou apenas giz console de desenvolvedor térmico e ele continua desaparecendo. Veremos agora que temos uma coleção de material. Objetos são BPO, materiais de ponta de cauda adulta, material dopado. E isso é realmente um objeto material e você pode ver que isso é uma coleção de objetos materiais. Então é isso que queremos, certo? Há uma referência do material que está sendo mantido na memória porque isso também é chamado de material. Mas eu estou, então é por isso que nós realmente vemos uma cor e isso não cai. Se eu chamasse isso de outra coisa, quebraria. Mas vamos deixar isso por enquanto. Então, basicamente, só queremos tirar qualquer material da nossa coleção. Então, o que poderíamos fazer, ele rapidamente agarrar nosso console novamente como você usa a função aleatória. Então uniforme de ponto aleatório, bem, na verdade estamos conectados, eu quero usar uniforme de ponto aleatório. Vamos usar outra coisa. Porque como vimos, três uniformes de ponto aleatório duplo entre 010 porque temos, temos dez cores. Então, na verdade, o que faríamos com um mês de cores é igual a dez, apenas certifique-se de que temos o mesmo, mesmo olhar que iríamos daqui para uma quantidade de cores. Mas como você vê aqui, continuamos recebendo esses números de ponto flutuante. Manteiga uniforme de ponto aleatório é um ponto flutuante número três, estamos fazendo uniforme de ponto aleatório. Você veria métodos de aleatória, instância aleatória obter um número aleatório no intervalo de um ou B dependendo do arredondamento. Bem, não está dizendo explicitamente que são carros alegóricos, mas podemos dizer, certo? Então nós podemos, nós podemos depurar ou bons programadores. Então vamos realmente verificar o que aleatoriamente oferecer. Além do uniforme de ponto aleatório faz um monte de funções aqui. Nada que você pudesse fazer é apenas o Google. Tem um número inteiro aleatório entre uma cúpula, par de limites, mas vamos fazê-lo. Blender, por enquanto, apenas hardcore. Eu já posso ver aluguel int provavelmente vai ser um bom. Alcance aleatório Vamos buscar a ajuda. Eu queria aqueles pontos aleatórios. Alcance. Escolhe um item aleatório de organizar, iniciar, parar. Isso corrige o programador para alugar, que inclui o endpoint. Então, em Python, isso geralmente não é o que queremos e é realmente aqui. Também é um mais de um. Portanto, não queremos incluir os endpoints. Então, se eu fosse obter um intervalo aleatório ponto-ponto entre 0 e a quantidade de cores, nós obteríamos um inteiro. E agora isso nunca deveria voltar. Então, porque vemos aqui nove, este deve realmente ser o valor mais alto que este retorna. Então vamos fazer isso algumas vezes e garantir que nunca teremos nada acima da noite. Como se nunca tivéssemos dez. Não devemos, porque lemos a ajuda, mas é sempre bom verificar e ter certeza. Porque, como sabemos, uma lista, assim como este material aqui, usa indexação e a indexação começa em 0. Então, quando tivermos dez itens na lista, o último item será acessado pelo nono índice. Então, se isso não faz sentido, temos o índice 0, índice 123456789. Se olharmos aqui, temos dez itens. Então temos 12345678910 itens. Mas é algo que você realmente tem que ter em mente ao trabalhar com listas é que você sempre tem que começar de 0. Isso é apenas algo que você tem que realmente, realmente lembrar. Então isso funciona renderizações aleatórias. Então você escreveu duas cores. Então agora, em vez de apenas pegar o último material que temos aqui, nós podemos apenas ir consultar determinado índice de nossa coleção de materiais. Então vamos obter um porão de nossa coleção de materiais e, em seguida, vamos basicamente apenas consultar um índice aleatório. Então este será um índice aleatório que será usado para procurar um valor na lista de materiais. E isso só retornará um material aleatório. Então, se fôssemos executar isso, você obterá materiais aleatórios que devem ser distribuídos igualmente. Talvez vamos fazer como materiais para torná-lo um pouco mais óbvio. E vejo que só temos que contar dessa maneira. Você pode ter ainda mais controle sobre nossa, nossa randomização. Então não é apenas completamente aleatório.