Python para Maya: programação amigável para o artista | Dhruv Govil | Skillshare

Velocidade de reprodução


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

Python para Maya: programação amigável para o artista

teacher avatar Dhruv Govil

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

67 aulas (7 h 24 min)
    • 1. Introdução!

      1:17
    • 2. Visão geral dos materiais do curso

      1:17
    • 3. Usando o editor de script

      2:05
    • 4. Olá, mundo

      0:55
    • 5. Olá: um Hello World em 3D

      1:07
    • 6. Projeto 1: como criar um cubo

      11:42
    • 7. Variáveis e tipos

      8:43
    • 8. Visão geral das línguas de programação e bibliotecas

      5:44
    • 9. Nós, maia

      1:11
    • 10. Python 2 vs Python 3

      2:15
    • 11. Como salvar seus scripts

      2:00
    • 12. Projeto 2: o Renamer do objeto

      1:30
    • 13. Encontrando ajuda

      2:58
    • 14. O comando de lista

      2:24
    • 15. Se as declarações

      5:54
    • 16. Para loop

      2:58
    • 17. Enquanto loop

      0:57
    • 18. Encontrando tipos de objetos

      4:55
    • 19. Se, Elif e Else

      3:43
    • 20. Configuração do PyCharm

      6:03
    • 21. Funções

      3:27
    • 22. Dicionários: chaves e valores

      17:44
    • 23. Formatação de cadeia

      5:43
    • 24. Scopes em Python

      3:36
    • 25. Projeto 3: o criador de engrenagens

      1:30
    • 26. Como fazer um script Python

      2:24
    • 27. Criando um engrenagem

      13:22
    • 28. Modificando a engrenagem

      12:15
    • 29. Curso e interfaces personalizadas em Python

      10:40
    • 30. Converting nossas funções

      13:51
    • 31. Projeto 4: o Tweener de animação

      1:30
    • 32. Visão geral das bibliotecas de interface de usuário no Maya

      2:32
    • 33. Como obter dados para a função de Tween

      7:01
    • 34. Configurando teclas com a função de interdependência

      15:08
    • 35. Criando uma interface de usuário

      14:21
    • 36. Reusing nossa interface para o Criador de engrenagens

      15:22
    • 37. Adicionando nossos scripts na plataforma Maya

      3:25
    • 38. Projeto 5: a biblioteca de controlador

      1:30
    • 39. Visão geral da biblioteca de interface Qt

      5:57
    • 40. Qt vs Cmds

      1:54
    • 41. Digitação do puck

      2:56
    • 42. Qt.py: usando Qt em Python

      2:47
    • 43. Como importar módulos Qt

      3:29
    • 44. Como criar o diretório da biblioteca

      8:27
    • 45. Como salvar arquivos

      6:25
    • 46. Encontrando arquivos

      7:00
    • 47. Controladores de carregamento

      2:18
    • 48. Nosso primeiro bug

      1:25
    • 49. JSON: leitura e escrita de dados

      11:26
    • 50. Captura de captura de tela

      8:00
    • 51. Documentação Qt

      3:12
    • 52. Exibindo uma janela Qt

      10:55
    • 53. Construindo a interface Qt

      8:53
    • 54. Como fazer uma galeria para nossos controladores

      7:24
    • 55. Sinais e Slots

      1:40
    • 56. Como fazer nosso interface

      19:31
    • 57. Projeto 6: o gerente de luz

      1:17
    • 58. PyMel: uma API alternativa no Maya

      4:38
    • 59. Iniciando a interface e partições

      13:52
    • 60. Widgets personalizados e LambDAS

      13:23
    • 61. Adicionando visibilidade e intensidade ao nosso Widget

      15:32
    • 62. Adicionando cores ao nosso Widget

      15:06
    • 63. Código e registro portátil

      8:58
    • 64. MQtUtil: pincel Qt com controles do Maya

      13:27
    • 65. Try/Except: lidar com erros

      6:07
    • 66. Exportando nossas luzes

      10:40
    • 67. Como importar nossas luzes

      12:35
  • --
  • 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.

404

Estudantes

--

Sobre este curso

Em Python para Maya

Se você é um iniciante ou um intermediário que procura de suas habilidades, este curso vai ensinar muitas técnicas de programação profissionais para ajudar você a fazer suas próprias ferramentas.

Conheça seu professor

Teacher Profile Image

Dhruv Govil

Professor

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%
Arquivo de avaliações

Em outubro de 2018, atualizamos nosso sistema de avaliações para melhorar a forma como coletamos feedback. Abaixo estão as avaliações escritas antes dessa atualização.

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui cursos curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

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

Transcrições

1. Introdução!: Bem-vindos à luta pela Maya. Nesta introdução amigável ao artista à programação, eu vou estar guiando você através de sua primeira linha de mordida em todo o caminho para criar interfaces de usuário de violência. Você aprende habilidades para ajudá-lo a trabalhar, promover e agregar valor para você no mercado de trabalho. Sob Global Elite, Pipeline Developer é um trabalho em filmes como Guardiões da Galáxia, Homem-Aranha e Nublado com a chance de almôndegas, também. Falei comigo mesmo quando era artista, e agora as minhas ferramentas eram usadas por centenas de artistas todos os dias. Eu vou estar ensinando você com a metodologia estadual que eu usei para aprender python criando projetos realmente legais que eu poderia fazer você mesmo imediatamente caminho. Aprenda a programar a criação de geometria, criar ferramentas de animação, maior controle, uma biblioteca e um gerenciador de iluminação, tudo enquanto aprende que os fundamentos dos meus projetos são complexidade dividida para que você possa entrar independentemente do seu nível de experiência. Se você é um iniciante ou um intermediário procurando aprimorar suas habilidades, pontuação deve oferecer valor para todos. Programação, especialmente com python, é uma habilidade cada vez mais valiosa, e acredito que com o meu curso, qualquer um pode aprender 2. Visão de materiais do curso: neste projeto, aprendemos a criar um gerenciador de luz para gerenciar as luzes e são vistos. Aprenderemos como combiná-lo com os meus elementos A você para que possamos acoplar e desencaixá-lo do você Maia. Além disso, seremos capazes de controlar. Além disso, aprenderemos a ativar e desativar nossas luzes do UI. Solte-as, exclua-as e também a conectaremos para controlar a intensidade da luz, bem como a cor das luzes. Neste projeto, aprendemos a usar Pi Mel como uma alternativa orientada a objetos para a biblioteca de Comandos Maya. Aprendemos algumas funcionalidades python um pouco mais avançadas, como funções anônimas, usando Parcial e Lambda, bem como usando a biblioteca logger dentro do Python. Nós também vamos aprender a usar partes do Maya aberto, um p I para interagir entre são bonitos você elementos e nossos Maya comanda você elementos. Isso será um pouco mais avançado do que nossos projetos anteriores, mas vou dividi-lo a cada passo para que ainda seja fácil de seguir. Junto com isso, vamos começar 3. Como usar o editor de scripts: Se você está fazendo este curso, eu suponho que você está um pouco familiarizado com Maya e seu usuário e rosto. Você, no entanto, pode não estar familiarizado com o editor de script. Você pode acessá-lo de três maneiras. Você conhece o editor de script dos Editores Gerais do Windows, que o abrirá em uma janela separada. Você pode fazer o mesmo clicando no botão de atalho aqui. Além disso, se você tiver várias portas, poderá converter uma delas para o editor de scripts indo para o editor de scripts do painel Painéis, que mudará a porta Exibir para um editor de script. O editor de scripts é dividido em duas partes. Será que a janela de saída, que representa tudo o que você faz no Maya? Por exemplo, se eu fosse clicar neste modelo, você pode ver que ele diz Selecionar corpo humano. E se eu fosse clicar nos óculos, faria o mesmo para os óculos abaixo. Essa é a janela de entrada. Duas torres por padrão, há Mel e Python. Estas são as duas línguas. De Maya suporta um script. Você pode criar mais abas e escolher um idioma clicando no ícone de pouco mais. Além disso, você também pode inserir código aqui na entrada na linha de entrada e escolher um idioma clicando na palavra Mellor python para executar qualquer código. Você cozinha a seta dupla aqui, e se você está cansado de ver a saída aqui, você pode clicar no botão apagar aqui, e ele vai limpar a história. No próximo vídeo, vou falar sobre como criar seu primeiro programa Python muito simples dentro do Maya. 4. Olá!: Eu acho que será um vídeo muito, muito curto porque nós vamos criar nosso primeiro programa Python no Editor de scripts Maya , escolher a guia python e digitar print, seguido por aspas de espaço. Olá. Meu nome é e coloque em seu próprio nome. Meu nome é através de alguém abatido finalmente para executá-lo. Vamos clicar nas horas duplas aqui em cima. Ao clicar nisso, você verá os relatórios do Mayer novamente. Olá. Meu nome acabou. Parabéns. Você acabou de escrever seu primeiro programa por Tom continuando a partir daqui. Nós vamos, é claro, fazer muito mais programas de vilões, mas eu pensei em mostrar a vocês o quão simples python pode realmente ser. 5. Olá, cubo: uma Hello World em 3D: Obter uma impressão do meu nome não é tão excitante. Então vamos criar algo com ele em vez disso para um passeio que é se livrar deste texto. Então precisamos deixar Python saber como se contrair. Admire. Então temos que obter a biblioteca de comandos Maya. Fazemos isso digitando a partir de Maya import C M. D. S C. MDs é abreviação de comandos. Em seguida, queremos criar um cubo. Então dizemos comandos ponto Polly Cube e dar-lhe moedas. Eu explico. Diziam da biblioteca de comandos, obter o Comando Poly Cube e executá-lo dando aos pais vê estavam dizendo para executá-lo . Então agora vamos clicar nas setas duplas e ver o que acontece. E eis que Maya cria um espreito-vos para nós. Ainda não é super excitante. Então, em nosso próximo vídeo, vou mostrar a vocês como pegar isso e automaticamente lucrar com a animação. 6. Projeto 1: como criar um raio de cue: maneira ter um cubo. Isso não é tão excitante. O que eu quero fazer com este cubo, é eu quero ser pai debaixo de um controlador de círculo para que eu possa usá-lo como um suporte de animação . Mas temos um problema. Nós criamos este cubo e minha chamada é um peaky. Mas lembre-se se chamarmos este comando novamente, ele criará Peak. Você também. Então não sabemos o nome do objeto do meu vai criar. Isto não é realmente verdade. O que por um faz é quando chamamos este comando, ele nos dá de volta o nome fora do Cuba criado. E podemos armazenar isso em algo que python chama de variável. Vou mostrar-lhe um exemplo agora. Então, se eu disser cubo é igual ao comando. Então Polly Cube, deixe-me me livrar desses cubos velhos rapidinho. E quando eles executam agora eu estou executando as coisas selecionando-as e pressionando o controle. Entrar, By the way, se eu tivesse executado agora eu vou pegar um cubo. E se eu ver impressão Cubo, você pode ver que o cubo é igual a algo. Em nenhum lugar nos diz que o cubo é igual a P Q um e Polly Cube um. Isso é meio estranho. A razão está cheia. Um é o nome do Cubo e Cubo Público. Um é um nome fora do nó Maya que criou o Cubo. Você pode ver que se eu executar isso de novo, o NASCAR P fica com a Polly Cube, também. Isso significa que toda vez que você executá-lo, Cuba será igual ao nome real do objeto. Mas não queremos o construtor. Só queremos o cubo em si. Então, digamos que a forma do cubo é igual a Cubo zero. Deixe-me explicar o que está acontecendo aqui. Cubo é igual a duas strings. Uma string é uma palavra ou frase. Você pode dizer que é uma string porque está entre aspas. Você ouve? Só significa que é uma string Unicode, e é algo que Maya faz que podemos ignorar. Então, para todos os efeitos, ele tem duas cordas dentro de colchetes. Colchetes significa que é uma lista de lista é um objeto que pode conter outros objetos. Neste caso, que contém duas cadeias de caracteres, podemos acessar a lista e obter um item específico usando os colchetes. Então dizemos cubo e nos colchetes e depois damos o número zero. E se executarmos isso, você pode ver que é igual a P Cube, também, que é o primeiro item. Segure em. Eu disse zero. Eu não disse um. E isso acontece porque os computadores começam a contar um zero. Então, quando digo zero, estou dizendo, me dê o primeiro objeto. Se eu fosse dizer que se eu fosse apenas um e eu rodar isso de novo, ele agora me dá o segundo objeto porque em computadores eles começam do zero. Eles não começam a partir de um. Então, quando digo uma, na verdade sou má para isso é meio confuso, mas você tem que se acostumar com isso. Então, o que estou dizendo é, me dê o primeiro objeto e vamos atribuí-lo à forma do cubo. Então agora se eu reimprimir a forma do cubo e isso poderia fazer isso, ele vai dizer P cubo para o qual, se você se lembra, foi o primeiro objeto fora da lista. Ligue para o Cube. Não, podemos fazer o mesmo com um círculo. Então, digamos círculo. É igual ao comando. Iniciar círculo de impressão círculo para que você possa ver que criamos o círculo novamente. Lembre-se do Comando Círculo da biblioteca de comandos e assinamos o que Meyer nos der volta para a variável circular. E então nós imprimimos a variável circular, que nos dá uma lista de duas outras strings. O primeiro é um nó círculo que você pode ver lá. E o segundo é um objeto de construção novamente. Circle é uma lista. Eu posso mostrar-lhe isso dizendo círculo tipo e você pode ver tipo é lista. Se eu quiser obter o primeiro objeto em círculo, eu faço o círculo zero, o que me dá o círculo nervoso um. E se eu fizer esse tipo de coisa, isso me dá Unicode. Unicode é um tipo de string. Então, para todas as intenções e propósitos, vamos chamá-lo de uma corda. Meu amex todas as cordas Unicode porque é assim que ele lida com ele sob o capô. Mas você não precisa se preocupar com isso. Então agora vamos obter forma de círculo é igual ao círculo zero. Então agora temos o cubo em forma de círculo. Bem, nós precisamos fazer é pai um sob o outro, então eu vou usar o comando pai. Mas se eu usar o comando pai, isso nos dá um erro. Quando eu dirigi-lo. Diz que não há objetos de valores suficientes. Então o pai, vamos lá, na verdade espera variáveis. A primeira é a criança. Neste caso, devo dizer em forma de cubo. O segundo são os pais. Vou dizer em forma de círculo. E colocamos isso entre parênteses porque estamos dizendo aos pais como correr. Estavam a dizer para colocar isto debaixo disto. Então, para executá-lo. Oops. Na verdade, nunca atribui forma de círculo. Deixe-me executar isso novamente e então deixe-me executar isso novamente e você pode ver que o cubo está agora sob o círculo. Isso é ótimo porque isso significa que eu posso mover o círculo sobre os movimentos Cubo com ele. Mas há um problema. Se eu mover o cubo, ele ainda pode se mover sem o círculo. E eu não quero isso. Então o que vamos fazer é bloquear os atributos dos cubos, então vamos para a caixa do canal e deixe-me limpar a história aqui clicando nos ícones do piloto solo. Posso te mostrar o que vou te mostrar. Então, vamos clicar com o botão direito em traduzir X e eu vou dizer bloqueio selecionado. Agora, isso nos disse exatamente o que fez, exceto que nos diz em Mel, que não é muito útil, mas ainda podemos usá-lo do ponto de partida. Então sabemos que usou o set sob o comando dela. Então nós dissemos que os comandos apenas disseram para ela Nós sabemos que ele usou P Cube também. O T X, que é abreviação para traduzir X, como você pode ver ali. E sabemos que diz que fechadura é verdade. Então dizemos que fechadura é igual a verdadeiro. Vês? Então Maya nos contou como ele é executado em Mel, e é muito simples convertê-lo em Python. Então, se eu executar este Mas vamos mudar TX para t por que você pode ver que um bloqueado o canal traduzir Por quê ? Mas aguente firme. Passamos por todo esse trabalho para não termos que realmente chamar o Cubo pelo seu nome real. E você está certo. Então vamos nos livrar disso que vamos dizer é que sabemos que o nome dos cubos será armazenado em forma de cubo. Você pode adicionar cadeias de caracteres junto com o sinal de adição. Então estamos dizendo forma cubo mais pato T y e o que isso vai nos dar se eu correr isso Bem, nos dê p cubo para não t y exatamente como aqui em cima Isso é porque cordas podem ser adicionados junto com o símbolo mais. Mas eu não quero apenas fazer isso porque eu queria todos os tradutores. Então, digamos que traduza. E então vamos fazer isso e eu tranquei todos os três tradutores. Não, vamos copiar isso e mudar isso para girar e isso apenas escala e vamos executar essas duas linhas que acabamos de fazer. Agora todos os atributos estão bloqueados para que eu possa mover o cubo. Eu posso escalar um ícone girado, mas eu posso girar, mover e dimensionar círculo. Então agora vamos passar por isso juntos de novo. Deixe-me criar um novo arquivo de cena que você viu, e eu vou usar as setas duplas para executar tudo. E enquanto isso foi muito rápido, então temos o cubo, podemos mover o cubo para girar, e não podemos escalá-lo no contorno. O cubo está sob o círculo, então podemos quem? O cubo está sob o círculo, O círculo gira o círculo e o dimensiona e a fila segue ao longo. Mas você percebe que quando fizemos isso, o Cuba selecionado não seria bom apenas colocar a cereja no topo para que possamos realmente selecionar diretamente o cubo. Oh, desculpe. Quero dizer, selecione diretamente o círculo. Então dissemos que comanda confiança. Selecione porque estamos chamando o comando select, e nós dizemos a ele para selecionar uma forma de círculo. Então, agora, quando o executamos clicando na seta dupla, ele elege uma forma de círculo, e eu poderia movê-lo, girá-lo e dimensioná-lo. Então, em alguns minutos, criamos um roteiro. Eles vão criar um cubo, criar um círculo bem, pai, o cubo sob o círculo, e então nós bloqueamos todos os valores de tradução de cubos para que possamos admitir nele. E, finalmente, selecionar um círculo real. Parabéns. Você acabou de fazer o seu primeiro programa python real no meu ... 7. Variáveis e tipos: Outra luta de cerveja em Python um pouco. Gostaria de apresentar alguns conceitos fundamentais. No primeiro outono, você verá a palavra-chave print. Eles vão imprimir qualquer coisa depois que, neste caso, a string Olá World cordas ar denotado por suas aspas. Qualquer coisa entre aspas simples ou duplas da string. Então, se eu disser tipo de impressão Olá mundo, você pode ver que o tipo de string. Enquanto estou digitando, você verá o charme da torta me dando conclusão automática para me ajudar a digitar Foster. Então, se eu disser tipo de impressão 22 você pode ver que o tipo de 22 inteiros inteiros os números inteiros . Mas se eu disser um 22.1 é agora flutuando porque flutua qualquer coisa com o ponto decimal. Outros tipos são falsos, que é um boule e verdadeiro, que também é boule boule. Um abreviação de barras, eles podem ser verdadeiros ou falsos. Finalmente, o tipo simples lei é nenhum. Nenhum significa que nada está atribuído. É do tipo freira. Fomos apresentados à variável para que eu possa dizer que comida é igual a olá. Se eu disser imprimir, Foo irá imprimir Olá porque Olá está sendo atribuído a Fu e estamos imprimindo Fu, que imprime o valor de Olá seguindo os tipos simples. Nós agora temos tipos complexos para que eu possa dizer que minha lista é igual a hello 22 e listas falsas são denotadas pelos colchetes e eles podem basicamente conter qualquer outro objeto dentro deles , neste caso, uma string, um inter e um ouro. Então, se eu diria imprimir minha lista fora, obter uma lista contendo a string o Inter durante o booleano que eu dei, eu lista e contém outras variáveis que eu posso dizer Fu é igual a true E se eu adicionar isso ao final, se eu puder digite corretamente, você pode ver que ele agora inclui o valor de Fu. Eu posso mudar objetos em uma lista dizendo minha lista ponto anexar e eu posso dizer adeus. E se eu imprimir minha lista, você não pode que agora inclui a palavra adeus. Posso acessar objetos em uma lista dando colchetes para a lista e dando um número. Então, se eu disser que o número dois que conheço é falso. Se eu acho que o número um eu tenho 20 para saber por que este é o número um deve ser. Olá, certo? Porque é o primeiro objeto. Não, em Python e outras linguagens de computador, eles começam a contar a partir do número zero. Então vá 0123 Então, quando dizemos o número um, nós realmente não quis dizer o segundo objeto, que é 22. Da mesma forma, podemos reatribuir coisas dentro de uma lista para que possamos dizer que minha lista número zero é igual a eu não sei. Digamos que spam chegue. Imprime a minha lista. Você pode ver isso em uma espécie de. Olá. É um spam. Vamos limpar isso. Não, existem diferentes tipos de listas. Temos uma lista simples com colchetes. Temos uma lista mais complexa, que é as duas pessoas que fez com colchetes redondos ou parênteses, para que possamos fazer a mesma coisa. Fu bam 22. Falso, Verdadeiro. Assim como um monte de valores. Então dizemos, imprimir meu para puxar e digitar para puxar um meu para puxar. Você pode ver que nós temos o para puxar para trás, e é de fato do tipo para puxar para o que faz um para puxar diferente de uma lista. Bem, eu não posso fazer o meu para puxar ponto upend porque duas piscinas não têm nenhum atributo. Uma caneta e um ícone reatribuíram qualquer coisa insider para puxar porque o para puxar não oferece suporte à atribuição de item. Da mesma forma, temos um objeto chamado conjunto. Também é especial por contatar duplicatas do mesmo vale. Digamos que eu tenha Fu. Vamos mudar o spam muito poucos também. Então, se eu fosse imprimir o meu para puxar, você vai ver que lá, também, para lá para alimentos 22 de False em. Verdadeiro. Se eu converter o conjunto de estresse usando a função set, você pode ver que um cheiro está definido que é falso. Comida verdadeira e 22 conjuntos não têm um pedido, mas eles também são únicos para que você entre em contato com vários alimentos e você não pode de vários 20 pares, por exemplo. Finalmente, temos um outro tipo de coleção chamado dicionário. Um dicionário é como o que você esperaria em inglês. Você tem uma definição fora python, por exemplo, e você diria que é ah, linguagem de programação exceto assim você Basicamente você teria uma chave e um valor. Então vamos definir nossa primeira vitória. Nós dizemos que meu pau é igual a, e você dá chaves para dicionário você diz nome dentro de aspas e este será o dois-pontos chave e seus colchetes. Vamos dizer dirigiu. Vamos dar-lhe uma vírgula e você vai dizer, Rolar e novamente dois pontos e salvar pipeline TD novamente. Você tem a chave, o valor outra chave, outro valor. E como as listas, os dicionários podem conter tipos de variáveis. Então, novamente temos um inteiro em vez de apenas strings. E podemos salvar meu viciado para algo que você sabe, dicionários como conjuntos não são ordenados como conjuntos que eles não podem compartilhar. Eles não podem ter mais do que o mesmo Ah kee Então, como, um conjunto não poderia ter o mesmo valor várias vezes. O vício não pode ter a mesma chave várias vezes. Veja, eu só posso ter um nome, um rolo em uma idade para acessar o dicionário. Eles usam isso como uma lista. Mas em vez de dar um número, dou a chave que quero ter acesso. Então, quando um nome de acesso. Então eu perguntei o nome dela e eu tenho o nome e o valor de através. Se eu quiser mudar isso, posso dizer que meu nome é Cartman. Se eu imprimir meu pau não, meu nome é Cartman. Então dicionários de listas semelhantes. Mas na espécie de ter números como seus índices, eles têm palavras. Isso conclui uma rápida olhada em alguns conceitos básicos de python que precisaremos para continuar na estrada . 8. Visão geral das línguas e bibliotecas de programação e de bibliotecas: desgaste agora vai passar por cima de todas as linguagens de programação e olhos AP dentro de Maya, meu tem a bibliotecas P i. A primeira é uma biblioteca de comandos ou C M. D. S para abreviar. Consiste em comandos de tamanho de mordida que os artistas podem usar para criar aplicações e ferramentas maiores . A outra biblioteca dentro do Maya é chamada de Open Maya um P I. Isso dá aos desenvolvedores técnicos acesso profundo à arquitetura interna de Jeremiah, mas vem ao custo da complexidade, e não é muito adequado para artistas para pegar rapidamente . Mas o resto deste curso será focado principalmente na biblioteca Comandos. O meu tem quatro linguagens de programação. O primeiro é Mel. Mel é uma linguagem Maya específica que se destina a ser simples para os artistas para pegar, e ele só pode usar os comandos melas biblioteca, uma linguagem interativa é que enfraquece. Digite-o e veja os resultados em tempo real. Este é um cartaz outra língua primária de Maya, C plus que foi usado para criar o meu próprio. C plus plus é uma linguagem mais complexa, e ele só pode acessar você abrir meu A p I. Além disso, C++ precisa ser compilado antes do tempo, que significa que ele só pode ser distribuído. É plugins e não pode ser desenvolvido em tempo real. Como C++, Maya tem outra linguagem chamada C Sharp C. suporte Sharp no Maya é limitado ao Windows, e tem as mesmas advertências. A C plus plus tem que ser compilado e só pode acessar o aberto meu A P I. No outro lado, C Sharp é muito mais fácil de usar do que C plus, e é bastante popular na comunidade de jogos. Finalmente, a linguagem de programação perdida e Maya. E o foco deste curso é Python. Python está em uma posição única porque ele pode acessar tanto o Open my A P I e a biblioteca Comandos. É a única linguagem dentro de admirar que é capaz de fazer isso. Ao contrário de Mel, Python é usado por programadores fora do Maya também. Semelhante ao C plus plus e C Sharp Fight em é bastante popular na comunidade de programação. O Google o escolheu por suas tecnologias de aprendizado de máquina. O Dropbox o usa extensivamente e os cientistas o usam para pesquisas científicas. O que isso significa é que Python tem uma comunidade muito Voss com muitas bibliotecas que podemos aproveitar para usar dentro do Maya para ferramentas. Além disso, isso significa que há um monte de recurso é para o tempo de pizza. As razões para a popularidade pythons é porque é uma linguagem intuitiva, enquanto fornece muitos recursos avançados que tanto C plus e C sharp têm. Isso vem ao custo do desempenho. Python está no meio da estrada. É muito mais fácil de usar e C plus e C afiado, mas pode ser muito mais lento. Normalmente, este é um comércio fora vale a pena fazer, porque o código python é bastante fácil de escrever, e muitas vezes você não precisa da velocidade que C mais uma oferta C afiada. Insider Maya. Existem, na verdade, quatro bibliotecas AP I que Python pode fazer uso fora da primeira biblioteca de comandos. Isto foi originalmente projetado para Mel, mas podemos usá-lo de dentro Python também. Os comandos Lavery é bastante desempenho, mas devido à sua herança como sendo criado para Mel, algumas das sintaxe e uso podem torná-lo bastante detalhado para usar em python. Isso não é o ideal, mas também não é uma quebra de negócio. O outro um PR que eu mencionei já é o Maya aberto, um P I. Há na verdade duas versões deste Maya aberto um e abrir meu A para abrir Meu A um foi originalmente projetado para C mais e novamente, como comandos. Não é completamente platônico. Isto significa que muitas vezes você vai estar digitando coisas que não fazem sentido em Python, mas teria feito sentido em um mundo C plus em reação a este Autodesk fez abrir Maya muito aberto Meu A dois é um pouco mais platônico e simples de usar dentro de um tempo de torta. Infelizmente, ele ainda não tem recurso completo, então você ainda terá que usar um Maya aberto. Em alguns casos, o Lost A p I que o Python pode usar. Insider Maya é um AP híbrido que criei pela Loom. Um lançador chamado Time L Primal foi demitido do zero para fornecer uma interface muito python dentro do Python. Ele faz isso envolvendo a biblioteca Comandos e o Open Maya AP I em uma interface que podemos usar. Primal é um prazer de usar porque pode cortar o código que temos que escrever e torna muito mais fácil interagir com objetos dentro do Maya. Esta flexibilidade vem a um custo pi Millikan muitas vezes ser mais lento do que ambos os homens eo aberto meu i p I. Além disso, alguns estúdios não permitem primal por causa das preocupações de velocidade e por causa de algumas preocupações de estabilidade. Geralmente, se você está escrevendo tiras, moinho de torta é muito bom para usar. Mas para este curso eu vou estar focando principalmente na biblioteca de comandos porque é mais importante aprender. Teremos um projeto que usará tanto o FBI Maya aberto brevemente quanto um metal za pi , um p I para todo o projeto. Com isso abordado, vamos continuar para nossos próximos projetos. 9. Noções em Maya: quando precisamos afetar objetos dentro, um Maya estará afetando principalmente atributos nesses objetos. Esses atributos são frequentemente referenciados pelo nome do objeto, seguido por um ponto e, finalmente, seguido pelo próprio nome do atributo. Cada objeto em Maya é na verdade um nó. Você pode ver isso dentro do editor de notas, mas eu vou mostrar um diagrama simplificado. Cada nó tem vários atributos para reconectá-lo. Podemos acessar esses atributos em nossos scripts usando o ponto nome do objeto e o nome dos atributos. Mas no nó, os objetos aparecem chamados plugs. Plugs podem ter valor definido neles, e isso é o que muitas vezes fazemos com script. Também podemos criá-los, mas também podemos criar conexões entre um nós, plugues e outros. É assim que a maioria, se não todos, objetos dentro de Maya interagem uns com os outros. É também como vai interagir principalmente com objetos dentro de um Maia. Ao alterar esses valores, usando nossos scripts 10. Python 2 vs Python 3: neste vídeo, vamos rever as duas versões Python diferentes no Wild. As duas versões atuais do Python, Our Fight on 2.7 e Python 3.5 Python 2.7 é o mais recente no python para Siri e Python 3.5 é a versão mais recente no Python três. O Fight on two da Siri não verá mais desenvolvimento ativo além de simples correções de segurança e receberá um fim de vida nos próximos dois anos. A Fundação Python decidiu que Python três é um caminho a seguir. Não, por que existem versões diferentes do Python? Bem, isso é porque python para e python três quantas mudanças quebrando entre eles. Isso significa que python para código não é garantido para executar sob Python três. Além disso, Python três tem muitos novos recursos que não podem ser usados pelo python para isso significa que, mesmo que a linguagem é muito semelhante entre Python e python três e na maioria dos casos você não pode sequer dizer a diferença, significa que python para e python três não são garantidos para ser compatível um com outro. Meu originalmente lançado com Python no meu 8.5 com Python versão 2.4 ponto três em My A 2000 e nove, a atualização do Python versão 22.5, e Maya 2011. Eles atualizaram novamente para 2.6. Finalmente, no meu 2014 eles atualizaram Python para lutar em 2.7. Esta é a versão mais recente do Patan no python do Siri e provavelmente será o Perdido. A indústria de efeitos visuais decidiu ficar com Python 2.7 enquanto puderem. Isso é devido ao investimento significativo no python para o ecossistema, o que seria difícil de portar para Python três. A plataforma VFX decidiu que morder em 2.7 é uma versão do Python que todo o software deve estar usando. Portanto, sempre que estamos desenvolvendo para Maya, estaremos usando Python 2.7 11. Como salvar seus scripts: vídeo. Vou ver como salvar o script e, em seguida, lento ou sentar para trás para que nós vamos para o script de arquivo seguro . Isso traz o navegador de documentos, os documentos destruídos em diferentes locais em diferentes sistemas operacionais antes do Windows. Está sob documentos. Maya, você, minha aversão e roteiros. Se você estiver usando Mac OS ou Lennix, eu vou ter certeza de tê-los mencionado no vídeo. Eu vou salvar o script como objeto renomear, er exemplo dot pie e pressione Salvar outro. Salve o script. Eu posso me livrar disso. Agora que o script se foi, eu posso dizer arquivo, votação script, encontrá-lo novamente e ele carregado na guia atual. Alternativamente, eu posso dizer script de código-fonte de arquivo, e é uma espécie de carregá-lo. O que eu vou fazer é que eles vão executá-lo imediatamente. Este é um ideal porque, como você pode ver , mudou todos os nomes dos meus objetos. E não queria que em nosso próximo vídeo, eu vou repassar como compor nosso script em funções que não serão executadas imediatamente mas estarão disponíveis para que possamos chamar facilmente. Uma última maneira de chamar um script é porque ele foi salvo em um diretório Scripts, você pode dizer Importar objeto renomear er exemplo, e o que ele fará é importar isso, assim como reimportou a biblioteca de comandos Maya, e agora o script foi importado para o Maya. Mas, infelizmente, a Importação também executa um script, fazendo com que ele seja executado novamente. Em nossos próximos vídeos, vamos ver como compor e funções que só serão executadas quando chamadas. 12. Projeto 2: o Renamer de objeto: através deste projeto estará aprendendo a criar uma biblioteca controladora usando bonito. Nossa biblioteca de controle será flexível e suportará miniaturas. Podemos importar qualquer um dos objetos que salvamos, e também podemos criar quaisquer novos objetos que quisermos. Neste caso, vou dizer isso como o teste, e quando eu apertar salvar, você verá que ele aparece dentro de para nossa janela. Aprendemos como salvar dados como Jason e arquivos, bem como carregá-los de volta no Are You? Eu estaremos usando bonito fornecido pelo lado pi para dentro do meu 2017 e lado da torta. Nas versões anteriores do Maya, vamos rever as diferenças entre quatro e cinco fofos, bem como as diferenças entre torta fofa e lado da torta e torta, Cute five e pie side, também. Eu também vou estar passando por uma biblioteca bonito popular que é usado pela Disney, WETA, Sony Imageworks e muito mais. Lá vai nos ajudar a escrever código que pode ser usado o bonito em ambos Maya 2017 e versões anteriores do Maya. No próximo vídeo, vou fazer uma breve introdução ao bonito sobre. As diferentes versões são bonito uso dentro das diferentes versões do Maya 13. Como encontrar ajuda: Antes de continuarmos, gostaria de mostrar a vocês como podem obter informações sobre cada um dos comandos de Maya. Dentro do Maya, você pode ir para o menu de ajuda, ir para as minhas referências de script e clicar na referência de comando Python. Isso abrirá a documentação do Autodesk e listará todos os comandos que o Maya tem para oferecer. Eu quero olhar para o comando pai, e aqui eu posso ver que o comando pai leva dois objetos o filho e o pai e outra série de parâmetros rolando para baixo. Podemos ver cada um dos parâmetros com este nome longo e um nome curto, bem como um tipo. Está rolando ainda mais. Confinamos exemplos documentados de como usá-lo em Maya. Também podemos encontrar ajuda dentro do editor de scripts. Por exemplo, se eu quiser ajuda sobre o comando pai, eu posso selecioná-lo clique com o botão direito e ir muito rápido. Ajudar. Isto irá listar todas as bandeiras com os nomes curtos e os nomes longos. Tradicionalmente, eu também posso habilitar a conclusão automática. Eu posso ir para este menu e eu posso habilitar vir na conclusão e mostrar ajuda dica ferramenta. Agora, quando eu digitar, vamos tentar e auto completar para mim. E quando eu estiver dentro de um comando, ele irá listar todas as bandeiras que for preciso. Pessoalmente, eu gosto de desativar isso porque ele pode ficar bastante ocupado dentro de Maya, embora eu deixá-lo habilitado dentro de um amuleto de torta. Se você já atingiu a documentação on-line pode ser uma grande ajuda. O meu tem ajudado. Os recursos são limitados apenas às bibliotecas do Maya, mas muitas vezes você precisará procurar informações sobre o próprio python. O site python dot org tem grande documentação sobre tudo dentro do Python, por exemplo, esta é a página e todos os tipos de variáveis. Você também pode acessar a ajuda dentro do meu, por exemplo, se eu executar ajuda e dar-lhe um objeto, ele irá imprimir todas as informações sobre esse tipo de objeto. Neste caso, estou procurando a documentação de ajuda para obter uma lista. Às vezes, você já tem um objeto definido e deseja procurar o que pode fazer com esse objeto. Nesse caso, você pode usar o comando de IR. O que o comando D I R fará é que eles lhe darão uma lista de todos os objetos e atributos que estão associados com o objeto para dar a ele. Nesse caso, quem pode ver que o objeto de lista atribuído à variável A tem todas essas funções dentro ? Se ele e pudermos ver que podemos acrescentar a ele, podemos contá-lo, inserir índice, etc. Ambas as funções são muito úteis, já que você pode procurar informações em tempo real enquanto você está escrevendo um script. 14. O comando de lista: para começar nosso curso, precisaremos obter uma lista dos itens que estarão operando em minha cena. Tenho que me juntar a correntes. Um cubano, um grupo, mas você pode ter o que quiser. Primeiro de tudo, precisamos obter a biblioteca de comandos Maya novamente. Quem dirá, a partir de comunas de importação Maya dentro da biblioteca de comandos é uma função de lista. Se fizermos isso e eu imprimir a roupa, você pode ver que nos devolve uma lista de todos os objetos na cena. No final, você pode ver os objetos de que estamos falando, mas também temos um monte de objetos que eu realmente não me importo. Estes são objetos escondidos dentro de Meyer. Então o que podemos fazer é preencher o objeto ls para usar apenas a seleção que queremos. Então vamos procurar a documentação para o comando L s. Se você clicar duas vezes sobre ele e, em seguida, clique com o botão direito, você pode selecionar. Vamos, Documentação. Isso abrirá o navegador para o comando L S. Aqui, você pode ver o parâmetro de seleção, e se eu clicar, ele nos levará para a documentação do parâmetro de seleção. Você pode ver que o nome longo é seleção e o nome curto é SL. É do tipo booleano, o que significa que pode ser verdadeiro ou falso. E se for verdade, ele irá listar objetos que estão atualmente selecionados. Então, de volta no Maya agora vamos dar ao comando L s o parâmetro de seleção. Então dizemos que a seleção é igual a true. E agora você pode ver que ele apenas lista o objeto que eu selecionei neste caso Joint um. Então vamos armazenar isso dentro de uma variável. Você dirá que a seleção é igual ao comando. Seleção Zarrella é igual a true. Mas e se não tivermos nada selecionado? Se eu agora imprimir seleção sem nada selecionado, você pode ver que nós apenas obter uma lista vazia porque nada está selecionado. E se eu refazer com algo selecionado, recuperaremos esse objeto. Se não tivermos algo selecionado, quero fazer algo diferente. Então, vamos ser apresentados à declaração s no próximo vídeo 15. Se as declarações: neste vídeo, estaremos aprendendo sobre a declaração if, a instrução if. Digamos que se algo é verdade, faça outra coisa e a sintaxe é bem simples. Estamos dizendo que se a declaração é verdadeira, só então vai refazer isso e você pode ver que as coisas que vamos fazer nosso recuado em python isso é chamado de escopo. O escopo dessa lógica é este. If, tudo abaixo da instrução segura que está recuada só será executado. Se esta declaração se for verdadeira e se não estiver recuada, então ele será executado independentemente desligado. isto, se a afirmação for verdadeira, então, de volta a Mayer, vamos escrever a nossa declaração se. Então dizemos que se o emprestado fora da seleção é igual a zero, vamos obter uma nova seleção. Primeiro de tudo, vamos olhar para o símbolo duplo igual que usamos. O único símbolo de igual significa que estamos atribuindo algo. O símbolo duplo de igual significa que estamos comparando algo em valor. Então vamos dizer se o comprimento da seleção é zero, então vamos obter uma nova seleção. Então vamos dizer tipo de comando Ls eu vou usar dois parâmetros que eu vou introduzir em breve. Vou dizer que Dag é igual a verdadeiro e longo igual. Verdadeiro. Se você voltar para a documentação e olhar para longo, você pode ver que ele leva um booleano e você pode ver que, se for verdade, irá retornar nomes de pote completos para objetos Dag. Não. Por que estou fazendo isso? Em Maya, você admite que eu tenho um conjunto e juntei quatro. Mas embaixo do Joint One, eu também tenho outro 4 tipo de trabalho quando você tem que John. E se você disser oi John, nenhum deles garante qual deles deve responder. Maya, se eu dissesse que ele se juntou a quatro, ambos os quatro articulações tentarão responder, e isso causará um erro. O parâmetro long significa que obtemos os potes completos para o objeto, então vamos juntar-nos quatro e saber que é um conjunto de crianças. Onde está este “Junted “? Quatro não tem pai. Agora vamos olhar para o parâmetro Dag de volta na documentação. Podemos rolar até Dag e você pode ver que na verdade é chamado de objetos Dag. Mas eu usei uma mordaça forma curta esta lista objetos Dag, se qualquer tipo o que isso significa é que nós só vamos obter objetos que estão listados no er contorno e nenhum dos objetos escondidos dentro de Maya. Então, se eu agora imprimir a seleção depois disso, se declaração eu notei que minha declaração de impressão está fora da declaração if, isso significa que há se ou não se homens hetero executar esta impressão ainda será executado esta noite. Se eu rodar isso, você pode ver que ele só vai usar a seleção que eu tenho porque eu tenho mais um objeto selecionado adiamento. Esta afirmação é falsa. Se eu selecionar nada e agora eu executar, você pode ver que ele está listado todos os objetos no contorno. Er, isso é porque se a instrução é falsa e não é executada, isso é porque a instrução if é verdadeira. A esquerda da seleção é zero. Portanto, obteremos a nova seleção, que listará tudo no esboço. Er, mas você pode ver que a ordem da lista não é particularmente útil para nós. O problema é que se nós renomeamos juntou quatro, mas ele tem a parte completa que se juntou um uniu quatro. Está tudo bem. Mas se renomearmos o “Joint One”. A postura juntou-se a quatro. Agora muda. Isso significa que não podemos mais encontrar conjunto para. Portanto, precisamos classificá-lo primeiro com as Crianças e os pais no final. Lá em Maya, o que eu vou fazer é classificar a seleção. Então, antes desta declaração de impressão, eu vou dizer seleção não classificar porque a seleção é lista e tem um método de classificação. Se eu agora imprimir seleção, você pode ver que ele é realmente classificada a lista, mas isso é ordenado em ordem alfabética. Esse é o comportamento padrão para classificação. Isto não é útil para nós. Em vez disso, precisamos dizer Ordenar para usar a esquerda dos objetos. Isso ocorre porque as crianças terão um nome completo mais longo do que os pais porque o mais fundo, por exemplo, Joint Quatro incluirá Joint One em sua parte, foi Joint One não terá nada porque é o topo mais objeto, então vamos dizer a seleção não classificar para usar. O comprimento é a chave para a classificação, então diremos que a chave é igual a emprestar. E agora, se você executar isso, você pode ver que objetos variados de mais curto para mais longo novamente. Não era o que queríamos. Queríamos o oposto. Também podemos dizer ao Sort para revertê-lo. Então dizemos que reverso é igual a verdadeiro. E agora, se você executá-lo, você pode ver que os objetos mais longos estão no final e os objetos mais curtos estão na outra extremidade. O que isso significa é que os Filhos serão agidos primeiro e depois os pais, não afetando as partes das Crianças. No próximo vídeo, vamos passar por quatro loops e como podemos percorrer todos os itens da lista e fazer algo com eles. 16. Para loops: neste vídeo será apresentado ao loop de quatro. O loop quatro diz, portanto, item na minha lista. Faça algo com este item novamente. Você pode ver que a lógica está recuada. Isso significa que ele só será executado no escopo do loop quatro. Qualquer coisa fora do loop é un recuado porque eles vão correr fora do loop quatro. A sintaxe do loop quatro diz quatro item onde item é o nome para variável temporária e item pode ser chamado de qualquer coisa que você quiser dentro da minha lista onde minha lista é uma lista que você quer olhar através Nós vamos fazer algo com esse item Não, volta em Maya que vamos fazer é apenas ir através de cada item dentro de nossa seleção e encontrar o nome abreviado para este item. Então você vai dizer que quatro será J abreviação de objeto em seleção, que é a lista que temos fora. Todos são objetos selecionados. Vamos salvar a impressão O B J. Chega. Eu dirijo isto. Você pode ver que imprime nossos nomes. Os nomes são longos no topo. Eles têm este símbolo pipe para mostrar que eles têm este símbolo pipe para mostrar a parte do objeto. O que queremos é dividir a corda. Por que o símbolo do cano? Felizmente, O B J é um objeto string, então podemos dizer imprimir O. B. J não dividir, e a operação de divisão por padrão funciona em espaços. Mas precisamos dizer para trabalhar no símbolo do tubo. Então nós damos a ele o símbolo pipe, aspas internas, e executamos isso. Agora você pode ver que cada objeto está agora listado de cada palavra dividida pelo símbolo pipe. Mas não queremos cada palavra. Só queremos a palavra de perda. Então, já que é uma lista que já sabemos como acessar objetos dentro dela, usamos os colchetes e damos um número. Mas o problema é que cada uma dessas listas tem um comprimento variável. Alguns deles têm apenas um objeto de comprimento e alguns de quatro objetos de comprimento. Felizmente, Python nos permite iterar para trás através de uma lista, uma ondulação, então se você deu menos um, isso significa que vamos levar o objeto muito perdido dentro da lista. Então, agora, se você executar isso, você pode ver que nós só temos uma palavra. E a palavra é a palavra de perda dentro da lista. Vamos pegar isso e vamos atribuí-lo ao nome curto variável no próximo vídeo. Vamos olhar sobre liberar este loop de quatro renomeando esses objetos de acordo com seu tipo. 17. Enquanto de loops: Eu gostaria de fazer uma pausa aqui e falar sobre um tipo diferente de loop com Wild Loop. O loop while é muito semelhante à instrução if e o loop for combinado. O que ele faz é dizer que se esta declaração é verdadeira, continue fazendo essa ação até que a declaração não seja mais verdadeira. Além disso, você pode sair do loop while ou até mesmo um loop de quatro por coisa quebra quebra diz luta para sair do loop que está atualmente em. Por que loops um poderoso para quando não sabemos por quanto tempo em ação deve durar. Mas sabemos que quando queríamos parar, estaremos cobrindo enquanto loops mais tarde no curso. Mas eu pensei que era útil mencionar isso agora para que você esteja ciente deles. Se você vê-los em qualquer uma das documentações 18. Como encontrar tipos de objetos: neste vídeo, vamos tentar obter os tipos de objetos de cada um dos itens em nossa lista. Vamos começar dizendo comandos de impressão tipo de objeto do objeto nesta lista. E quando executarmos isso com este cubo selecionado, ele nos dará de volta transformação. Agora você pode estar perguntando, por que é uma transformação quando é claramente um objeto de malha? Bem, no contorno er, se clicarmos com o botão direito, digamos formas, você pode ver que cada forma é na verdade uma transformação e uma forma. Este é apenas um Maia representar seus objetos. Então, vamos nos livrar das formas por enquanto. E nós temos que realmente encontrar as Crianças fora da transformação e, em seguida, tirar o tipo de objeto das Crianças. Então vamos limpar isso e vamos buscar as crianças. Podemos fazer isso com um comando, parentes mais legais, e vamos armazenar isso dentro da variável chamada Crianças dentro da lista de parentes. Vamos dar o objeto para o qual queremos pegar os parentes. Então vamos dizer que só queremos as Crianças. Digamos também que queremos o pote cheio para cada uma das Crianças. Se eu fizer isso agora e me deixar imprimir Crianças para que possamos ver o que conseguimos. Eu dirijo isto. Agora você pode ver que este grupo de sombreamento, que está selecionado, não tem filhos. Mas se eu selecionar P Q. One, você pode ver que realmente obter o formato P Cubo em vez disso. Se eu escolher este grupo vazio, você pode ver que em vez da lista, nós obtemos o objeto freira. Isso é meio irritante em Maya, porque mesmo que o comando diga lista quando não tem nada para nos devolver, ele não nos dá nada. Isso significa que todo o nosso código precisaria verificar se não é nenhum ou uma lista, mas podemos fazer um truque simples. No final deste comando, você pode apenas digitar ou e para colchetes. O que estamos dizendo é que se os parentes da lista estão vazios ou nenhum, então vamos apenas torná-la uma lista vazia, que é denotada pelos dois colchetes. Portanto, não importa o que façamos, temos sempre certeza de que as Crianças estarão fora da lista de tipos de objeto. Então vamos nos livrar da impressão Crianças e obter o tipo de objeto fora da criança. O problema é que você só deseja obter o tipo de objeto do filho se ele for o único filho abaixo do pai, então usaremos uma instrução if. Veremos se o emprestado da lista de crianças é igual a um novamente. Note que foram usados para igualar símbolos para comparar em vez de um símbolo igual para atribuir, vamos obter a criança da lista de crianças. Eu vou ter o primeiro filho, que espero que também seja a única criança dizendo zero novamente. Lembre-se da lista. Comece a contar de zero em vez de um, e vamos dizer Theo BJ tipo variável é igual a comandos. Tipo de objeto fora do filho. Caso contrário, vamos dizer que tipo LBJ é igual a comandos de um tipo de objeto fora do pai neste caso, O B J. Aqui, você pode ver a instrução else. A instrução else é executada se a instrução if não for verdadeira. Então, se o comprimento dos Filhos for menor ou mais de um, vamos executar esta declaração aqui em vez disso. Mas se o tamanho de Crianças for um, vamos fazer isso. Isso nos permite configurar condições para como o código será executado com base em valores em tempo de execução. Agora que temos o tipo de objeto. Podemos imprimi-lo e ver que se eu selecionar o Cubo, eu vou obter malha. E se eu selecionar a junta, eu vou ficar com a junta. E se eu selecionar, o grupo vazio será transformado porque é isso que é. No próximo vídeo, vamos para onde mais complexo se instruções usando o tipo de objeto para determinar o que os objetos devem ser renomeados para. 19. Se, de Elif e Else: tem o tipo de objeto. Vamos descobrir o que nosso Suffolk deve ser, então podemos usar algumas afirmações para descobrir isso. Então, podemos dizer se OVI J Type é igual a malha novamente, observe o símbolo duplo igual em vez do único. Bem, digamos que o sufixo é igual a geo. Caso contrário, se o tipo de objeto é igual a joint, bem, digamos que o sufixo é igual a joint. Esta é a palavra-chave LF como a palavra-chave else. Ele só será executado se a instrução if for falsa. Mas ao contrário da declaração else, ele fornece outra instrução para verificar. Neste caso, estamos dizendo, se o tipo de objeto for mesh, então o Suffolk será geo. Se o tipo de objeto não for MASH, faremos a próxima verificação para verificar se o tipo de objeto é conjunto. Se não for comum, continuaremos a descer a corrente. Se e l declarações. Então, seguindo isso, teremos outro LF e você vai salvar tipo de objeto é igual a câmera. Eu realmente não quero fazer nada se é uma câmera então eu posso dizer impressão pulando câmera e eu posso vê-lo continuar no que estamos fazendo com continuar é que estamos dizendo o loop quatro para continuar para o próximo item e não executar qualquer uma da outra lógica em Este quatro. Procure o item atual. Em seguida, teremos a declaração else, que só será executado se todas as outras declarações neste se LF e Elstree são quedas, vamos dizer. Se nenhuma dessas outras afirmações for verdadeira, o Suffolk é igual ao grupo. Finalmente, dizemos que o novo nome é igual ao nome curto mais sublinhado mais sufixo porque tanto nome curto e Suffolk é nossas cordas, podemos adicioná-los com o operador plus, e isso irá criar uma string combinando eles. Se eu disser imprimir seu nome e executá-lo, podemos ver o P Cubed One será renomeado para pico um g R P. Porque é um grupo. Mas se eu usar peaky, ganhou o representa um cubano aqui e, em seguida, executar este, podemos ver que ele será renomeado para Geo. Agora vamos fazer o real renomear recon dizer comando são renomear e nós dar-lhe o nome antigo neste caso vai dar-lhe o parque completo, que é representado por O. B. B.J. E vamos dar-lhe o novo nome que é retiro apenas construído. Então, se eu rodar isso agora, você pode ver que o PQ um foi renomeado para pico um sublinhado Geo E se eu d selecionado e deixe-me desfazê-lo E agora se eu executá-lo, você pode ver que o pico tem o sufixo Cada junção também tem o sufixo grupos também têm o Suffolk correto, mas como dissemos, nenhuma das câmeras foi afetada nisso é exatamente o que queríamos. 20. Como configurar o PyCharm: coisa vai ser um pequeno vídeo sobre como instalar charme de torta e configurá-lo corretamente para o seu sistema. No site da Edie Charme. Clique em Baixar e escolha sua plataforma. Estou no Windows e vamos apenas baixar a versão do Windows. Uma vez que seu carrinho de criança está aberto, clique. Em seguida, escolha o diretório no qual você deseja que ele esteja. O padrão deve estar bem. A parte do sexo é a mais importante. Vou pedir-te para escolheres a tua versão python. Certifique-se instalado Fight em 2.7 e não Python 3.5. Meus usos mordem 2.7, por isso é importante que fiquemos em sincronia com ele. Uma vez estan basta clicar em próximo e, em seguida, apenas continuar com o resto do instalador vai demorar um pouco para instalar. E quando terminar, você deve ter o amuleto de torta pronto para ir. Neste vídeo, vou passar por cima de como configurar I encanto et você para Maya. Se você estiver usando um editor diferente, vou rever os editores comuns em outro vídeo e como configurá-los com Maya. Mas, por enquanto, vamos nos concentrar no gráfico de pizza. Primeiro de tudo, precisaremos configurar o intérprete Python. Se você vai para configurar e configurações ou se você já tem algum código aberto, você pode ir para as configurações do arquivo. Vamos abrir a janela de configurações padrão. Se você for para Project Interpreter no lado esquerdo, eles mostrarão este painel com um menu suspenso onde você pode escolher diferentes versões python para usar. Bem, nós queremos fazer é usar a versão do Maya Python em vez disso. Então, vamos clicar neste pequeno ícone de engrenagem e dizer, Adicionar local. Teremos que navegar até onde Maya está instalado no Windows. Isto vai estar na sua unidade C. Tudo o que você instalou suas janelas em arquivos de programa. Autodesk, meu 2017 sido e haverá um objeto chamado Maya Pie no Mac OS e Linux Axis estará em diferentes locais que serão mostrados no vídeo. Se você rolar para baixo, você vai encontrar a torta Maya e você pode selecioná-lo, e isso vai dizer charme torta para usar o meu um piedoso É versão Python. Em vez disso, volte para o ícone de engrenagem e clique em Mawr. Clique no Maya Pie que acabamos de adicionar e aperte o lápis. Vamos chamar isso de Eitan Maya 2017, para que saibamos qual você está usando. Finalmente, precisamos configurar auto completo dentro de um amuleto de torta. Se você estiver usando o meu A 2015 e abaixo do convés ele com os navios completos automaticamente com Meyer. Se estiver usando My 2016 ou Maya 2017 você terá que baixar a biblioteca completa automática na minha página de obtenção . Os kits de desenvolvimento estão listados, então vamos usar o download do Maya 2017. Vamos clicar no link e ele nos levará pela loja de aplicativos da Autodesk na loja de aplicativos da Autodesk . Você pode baixá-lo indo para a direita e clicando em download. Quando terminar o download, você receberá um arquivo ZIP para o seu sistema operacional. Dentro do arquivo ZIP estará a base de crianças surdas. Você deve encontrar seu diretório de instalação do Maya novamente. Isso será no Windows Undersea. Ele estará em seus arquivos de programa sob o Autodesk Maya 2017 e tudo que você precisa fazer é extrair todos esses para esse diretório apenas para a rota para esse diretório, não para qualquer subdiretório. Se você estiver usando Mac OS ou Lennix novamente, o pote será diferente, mas vou mencioná-lo no vídeo, um tão extraído. Abrir suas configurações de charme de pizza novamente clicou em um pequeno ícone no canto inferior direito? Você será presenteado com um monte de potes para python usar. Vamos adicionar uma vez ou clicar em mais novamente, vamos ver e vamos navegar para os diretórios que acabamos de extrair. Então vamos para a Autodesk meu 2017 e vamos para o kit de morte dentro do kit de surdos. Vá para outros extras primários e conclusão, em seguida, clique na torta, o P Y. E, em seguida, basta adicionar este diretório clicando em OK, finalmente, basta clicar em OK, aperte OK novamente e pressione. Aplique agora. charme de torta saberá usar um python Maya em vez do tempo de torta do seu sistema, e seremos capazes de completar automaticamente enquanto você digita. Então vamos fechar essas configurações e eu vou clicar em fundo para que não tome meu tempo e vamos abrir um projeto. Vamos aos seus documentos onde os seus scripts Maya foram restaurados. Isso será diferente no Mac OS ou Lennox, mas novamente vou me certificar de mencioná-lo. Vamos para a Maya. Você é minha aversão. 2017 e abriremos o diretório de scripts. Vou clicar, OK, para abrir. Vou expandir meu termo de torta. E para o resto deste curso, eu vou estar usando charme pi e modo de apresentação para que você não vai ver mais isso você I Mas por enquanto, se eu expandir isso, você pode ver nosso objeto renomear ou exemplo ali. Se eu clicar duas vezes, ele vai abrir e você pode ver todo o nosso código da Maya aqui dentro. 21. Funções: como eu mostrei no exemplo anterior. Sempre que eu fonte um script clicando no script de origem e escolhendo o script ou importando-o, ele é executado imediatamente renomeando ou visto novamente, que não é o que eu quero. Então deixe-me desfazer isso e voltar para encanto de cachimbo na torta. Tom, você pode ver todo o nosso código que escrevemos anteriormente. O que está acontecendo é que sempre que as importações ou fontes do Maya são scripts, cada linha de código será executada de cima para baixo. Isso não é o que queremos porque você não quer que ele seja executado quando importamos. Isso significa que nunca podemos reutilizar nosso script facilmente. Então o que vamos fazer, é colocar tudo para código dentro de uma função para criar um tipo de função morte para definir. E, em seguida, o nome da função neste caso, renomear e vamos dar. Aprendiz E é dizer que é uma função. Finalmente, vamos colocar dois pontos, e como tudo o resto em Python, o escopo é denotado por indentação. Então, vamos selecionar tudo o que escrevemos anteriormente e bater Tab Tabal recuou abaixo da nossa definição fora da função. Isso significa que todas essas coisas só serão executadas quando a função é executada, nossa função é criada pela palavra morte para definir. Este é o nome da função renomear Os parênteses são o que usamos para mostrar quais parâmetros são funcionais tomar Neste caso, nossa função não tem parâmetros. Então vamos ter o príncipe vazio que vê seguido do cólon e depois seguido de todo o nosso código de volta em Maya. Se importarmos isto de novo, nada acontece desta vez. Mas agora sabemos que nosso objeto renomear er exemplo é uma biblioteca com a função renomeada dentro dele. Então, se executá-lo, ele vai dizer objeto modelo não tem nenhum atributo renomear. Isso porque Python está tentando ser eficiente. Ele sabe. Você já importou objeto renomear nosso exemplo para não tentar importá-lo novamente. Em vez disso, o que precisamos fazer é dizer a ele para recarregá-lo. Vamos dizer reload, objeto renomear er exemplo. Eu não, eu não sei quanto a você, mas é um nome bem longo para digitar e nós já digitamos três vezes. Então o que eu vou fazer não é um apelido. Onde está o objeto de importação? Renomeie nosso exemplo como O. R. E objeto de escassez Renomear exemplo er. Em seguida, em vez de dizer Recarregar, objeto, renomear nosso exemplo. Isso é uma boca cheia. Você pode dizer Recarregar Ory. E aqui você pode ver para E nem renomear ninguém. Lembre-se disso. Você pode ver que ele é executado, e ele renomeia todos os nossos objetos novamente. Esta é a sua primeira função, e esta será para este vídeo. No próximo vídeo, vamos ver como tornar nossa função mais robusta. 22. Diário: keys e valores: De volta ao termo tarte. Nosso primeiro passo será certificar-se de que se o sufixo já está no final do objeto que não renomeá-lo novamente e adicionar o sufixo duas vezes. Isso é simples porque o tipo de objeto de uma string que podemos dizer se o b j ponto termina com alguma correção, continuar e você pode ver torta Charm é auto Completando como eu digitar. Charme alto tem auto-conclusão realmente poderoso, que é por isso que eu gosto de ensinar com ele, porque é realmente útil se você é um iniciante, bem como se você está com antecedência TD. De qualquer forma, eu estou dizendo, Se o objeto termina com Suffolk, Sui vai continuar e pular o resto desta lógica, incluindo a etapa onde nós renomear o objeto. Isso significa que se o objeto terminar com ele, ele não terá que tempos de Suffolk toda vez que executamos isso. Então, se você voltar para Maya e executar esta função novamente, você pode ver que ela não afeta nenhum desses objetos. Mas se eu criar um novo cubo, vamos movê-lo para cá, que não tem o Suffolk, e agora eu dirijo isso. Você pode ver que ele foi adicionado apenas a esse cubo porque o Cubo não tinha antes. Mas se eu rodar de novo , não vai. Adicionado novamente, Este é o nosso primeiro avanço no script. Nosso próximo avanço é que eu quero adicionar mais Suffolk Stripes eventualmente. Mas isso se as declarações já estão ficando muito longas, e se tivéssemos um novo para cada tipo de objeto, ele vai ficar meio louco. Então o que vamos fazer é fazer um dicionário onde enfraquecer definir todos os sufixos que queremos para que possamos digitar. Sufixos é igual a e para fazer um dicionário fará chaves. A razão pela qual eu estou fazendo essas letras maiúsculas é porque ele está fora de uma função, e geralmente é bom. Eles não são necessários para fazer variáveis que estão fora da função ou qualquer um do escopo para ser letras maiúsculas. Dentro deste dicionário de coisas X, vamos criar uma nova chave chamada Mesh. Vamos sentar cólon e fazer malha igual a Geo. Em seguida, vamos criar um tipo de conjunto e vamos dizer que a junção terá um sufixo jmt e você faz uma câmera e você vai dizer que as câmeras não têm nenhuma. Vou explicar isso daqui a pouco. Em seguida, eu vou fazer um sufixo padrão e eu vou chamar este grupo de sufixos padrão. Eles estão aqui em baixo. O problema é que, eu tenho que dizer Suffolk é igual a este Suffolk Sequels que várias vezes. E se eu fizer um erro de digitação? Estou digitando a mesma lógica várias vezes com pequenas variações. Idealmente, eu iria apenas digitar isso uma vez e apenas usar isso para que eu não tenha que continuar me repetindo, que ele possa se livrar de todas essas declarações se. Em vez disso, usaremos o dicionário que acabamos de definir para procurar o sufixo. Então, vamos dizer Suffolk é igual a Suffolk é o nosso dicionário e você vai dizer gapped porque estamos tentando obter um valor do dicionário. Agora get leva um valor por padrão. Como você pode ver, Pie Charm está nos dizendo a chave, e nós vamos usar o tipo de objeto. A segunda chave é o padrão. Se o dicionário não tem a chave, o Riaz para ele nos dará um padrão de volta neste caso, nenhum. Mas o que realmente queremos fazer é recuperar o padrão. Suffolk padrão é igual ao grupo. O que estamos dizendo é, se o dicionário não tem o tipo de objeto gira para. Vamos supor que é um grupo e obter o padrão. Suffolk voltou. Mas você vai se lembrar que eu disse, câmera não é nenhuma e isso é porque eu não quero colocar um Suffolk. Se é uma câmera, e daí? Vou fazer isso em algum lugar. Diga, se Lot Suffolk continuar. E o que estamos dizendo é que se o sexo Suffolk não é verdade, isso é uma abreviação bem, digamos para continuar e pular o resto dessa lógica diferem para a câmera. O dicionário nos dará de volta o valor none, e nenhum não é verdadeiro. Então vamos dizer para continuar se você voltar para Maya e se eu executar isso novamente, ele vai dizer sintaxe inválida on-line para fora do meu código. E isso é porque eu Sr. Khama aqui e você pode ver que o charme da torta estava destacando. Começou. Se eu remover isso, você pode ver que ele diz que é vermelho e fad a vírgula. Diz que está tudo bem. Agora vou voltar para a Maya. Se eu rodar isso de novo, desta vez funciona e você pode ver que tudo funciona. Tudo bem aqui. Se eu criar um novo tipo de objeto. Digamos que crie luzes uma luz ambiente. A luz ambiente está desligada tipo pouco. Veja, a luz ambiente é do tipo luz ambiente. Se você voltar para o charme de torta, eu posso adicionar o tipo de luz ambiente aqui vôo ambiente. E eu posso dizer que eu queria ser um GT. Se eu voltar para Maya e eu executar meu roteiro, você pode ver que ele foi renomeado meu ambiente Light com o novo L G T Suffolk que eu forneci. E você pode ver a vantagem de usar este dicionário para mantê-lo, porque eu não tenho que adicionar outra instrução FL para cada sufixo único. Ele reduz duas linhas de código para cada sufixo. Isso é muito quando você adiciona muito mais tipos de objetos, a próxima coisa que queremos fazer é certificar-se de que nossa função pode ser informada se deve usar a seleção ou não. Então vamos adicionar um parâmetro à nossa função. Vamos dizer que o nome dos parâmetros é a seleção é igual a, e vamos dizer que é falso por padrão para que ele não use a seleção por padrão. Isso é um pouco irritante porque a seleção já é usada como um nome de variável aqui, e esse nome de parâmetro será passado para a função. E você pode ver a falta de charme de torta destacando cada uso desta variável agora e isso não é o que queremos. Então eu vou selecionar esta palavra no charme de torta, clique direito re fator. E eu vou renomeá-lo e vamos renomeá-lo para objetos do dedo do pé e você pode ver que a pizza Charm encontrou todas as instâncias dessa variável e renomeou-a. Mas também agarrou este. Então eu só vou renomear isso de volta para seleção. E o que vamos fazer é dizer que objetos são iguais a comandos, certo? Ls seleção é igual a verdadeiro. Isto é o que tínhamos antes. Mas em vez de usar o valor codificado de true, vamos usar a seleção como sua entrada por padrão. É falso. Mas se um usuário forneceu verdadeiro, então a seleção aqui será verdadeira e será verdadeira. Aqui está bem novamente, nós só estamos interessados em objetos dag apenas nos nomes longos. Isso significa que podemos nos livrar disso. Mas e se o usuário disse que a seleção é igual a true e não há nenhuma seleção atualmente. Bem, precisamos fazer o ar cedo para que não executemos o resto para o nosso código porque o resto do nosso código pode levar muito tempo para ser executado se tivermos muitos objetos. Então vamos errar cedo. Vamos dizer, se a seleção e não objetos. E o que estamos dizendo é que se a seleção é verdadeira e os objetos não são verdade, quero dizer que os objetos estão vazios. Não há objetos. Vamos levantar um erro de tempo de execução e dizer que você eu não tenho nada selecionado. Como se atreve? E este é o nosso primeiro erro que vamos lançar. Estamos vendo aumento porque vamos levantar um erro assim como você levantou uma queixa contra alguém. Ou trabalhar para ter pés fedorentos estavam levantando uma coisa de erro de tempo de execução. Que encontramos um erro durante nosso tempo de execução. E então damos mais detalhes sobre isso. Você não tem nada selecionado. Como se atreve? Eu vou salvar isso e voltar para Maya onde se eu agora não tiver nada selecionado. Mas eu digo que a seleção é igual a true e eu executo isso, você pode ver que eu recebo um erro de tempo de execução Do quê? O nosso guião. Ele nos diz qual linha as setas onde o script está. E ajuda-nos a dizer-nos o erro que lhe demos. Você não tem nada selecionado. Como se atreve a me deixar escolher algo e correr de novo? Desta vez não recebo um erro. Alternativamente, se eu disser que a seleção é igual a false, esse é o padrão. Na verdade, nem preciso dizer isso. Deixe-me removê-lo. E ele será executado com seleção, igual a false por padrão e irá correr em tudo de volta no charme de pizza. A próxima coisa que precisamos fazer é mudar como essa formatação acontece. Tudo bem, mas temos dois símbolos mais e várias cordas. Isso é meio ineficiente e python. Uma maneira melhor de fazê-lo e um pouco mais complexo é com um símbolo por cento s. Parece um emoji estranho, mas o que estamos fazendo é uma substituição de cordas. Então eu vou dizer novo nome é igual a porcentagem s sublinhado por cento s e eles vão dar-lhe um símbolo por cento e nós vamos dar-lhe o nome curto e Suffolk de. E a razão pela qual estou mostrando isso é que não faz tanto sentido para uma corda curta. Mas quando você começa a fazer isso muito e sobre muitos objetos, a outra maneira de fazê-lo pode ficar realmente pesada. Mas essa é uma maneira muito leve de fazer isso. Então o que realmente está acontecendo é que este percentual s está sendo substituído por nome curto, e este percentual s está sendo substituído por Suffolk. No final, ele cria a mesma string. Mas isso é um pouco mais eficiente, e eu vou usá-lo para a maioria dos meus exemplos. Então eu acho que é um bom exemplo para mostrar agora. A outra coisa é, se o objeto termina com sufixo, ele pode realmente ser um nome de objeto válido e precisa de um Self X adicionado o que realmente precisamos fazer . É verificar se termina com o sublinhado e o sufixo. E isso significa que ele realmente não tem o sufixo adequado, assim como os comandos Maya nos devolvem uma lista de objetos que eles executaram. Será bom do nosso objeto pode fazer o mesmo na função sob quatro fora de para quatro loop, eu vou dizer objetos de retorno retorno objetos vai dizer a nossa função que quando ele é feito , certeza virou o lista de objetos que ele possui. Mas o problema é que a lista de objetos não representa os novos nomes, então vamos mudar isso. Vamos tirar o índice do item atual da lista de objetos. Vamos fazer isso dizendo índice é igual a objetos índice ponto oferecer objeto atual. O que isso faz é nos devolve o valor do índice fora do objeto da lista são objetos. Então, se for um primeiro objeto, vamos voltar. Zero. Se for o nosso segundo objeto, recuperaremos um e assim por diante. Vamos usar isso para saber qual objeto substituir dentro da lista para objetos reais índice é igual a, e agora vamos substituir o objeto dentro lá. Então, diremos que o objeto substituiria. E agora vamos substituir uma string para que ela tenha um novo nome dentro. Então, vamos dizer objeto para substituir nome curto novo nome. E o que isso fará está na lista de objetos. Nesse ponto de índice, ele irá substituí-lo pelo nome do objeto onde o nome do objeto teve o nome curto antigo substituído por um novo nome. Então isso significa que nossa lista terá todos os objetos que operaram em qualquer momento em que nós renomeamos um objeto. Ele terá sido substituído na lista por este novo nome. Então, se você voltar para Maya, isso é uma impressão digital ou você não renomear. Você pode ver que eu recebo uma lista de todos os objetos de volta com seus novos nomes, bem como os objetos que ele não renomeou com seus nomes antigos. Finalmente, precisamos ter certeza de que nossa função é fácil de usar. As pessoas que usam nossa biblioteca de códigos não querem olhar para o nosso código. Apenas, você sabe, função dura funciona. Se eu disser ajuda de impressão nesta função, não me dá nada de volta porque não há ajuda para esta função. Como fornecemos ajuda para uma função? Isto é simples. Chamamos-lhe “Doc String”. Em primeiro lugar, dentro de um amuleto de torta. Vamos mudar o formato do médico. Vamos para configurações de arquivos, e dentro disso, eu vou ir ferramentas, python,ferramentas python, integradas e inverno alterá-lo de reestruturar texto para Google, Google é muito mais fácil de ler do que reestruturar texto, clique em OK e eu voltarei para a minha função após a nossa função. Eu vou apertar, entrar e digitar três aspas duplas 123 e então eu vou apertar, entrar e você vai ver que os encantos de torta preenchido automaticamente um pouco. Isso é chamado de médico. O primeiro comentário após uma função com aspas triplas será o que é apresentado quando você chamar ajuda em uma função. Então eu vou dizer que esta função irá renomear qualquer objeto para ter o Suffolk correto. Vamos dizer para um argumento de seleção se usamos ou não a seleção atual e para retornos, diremos uma lista de todos os objetos em que operamos. Se eu voltar para Maya e eles executarem o comando de ajuda, você pode ver que agora eu recebo o anel do doutor que escrevemos. Diz que Disfunção irá renomear qualquer objeto para ter o Suffolk correto e nos dá informações sobre como usar a função. Esta é uma forma de documentar o seu código, doc cordas ar realmente útil quando outras pessoas têm que usar a sua função, ou mesmo se você estiver usando uma função na estrada e você esqueceu como você escreveu. Esta é uma forma de comentar. A outra forma de comentar em python é com hashtag isso não é como Instagram ou Twitter . Em vez disso, essas hashtags representam a intenção do código. Então, por tipo de hash tag e então eu posso digitar qualquer coisa. Oferecê-lo, e estes não serão executados com o programa lá, simplesmente há outros programadores para olhar. É uma misericórdia. A disfunção de hashtag não pode ser executada se não houver seleção e nenhum objeto. O ponto de comentários é um mais tarde quando você tem que olhar para o seu código ou alguém tem que olhar para o seu código. Eles não precisam ler todas as linhas de código para entender o que você estava tentando fazer . É muito útil também para si mesmo, porque você é obrigado a esquecer obras de código superior. Eu recomendo adicionar comentários trio código para que seja fácil de acompanhar. Todo o meu código no Repo hub get para este projeto será documentado com comentários sobre como usá-lo. O que eu estou fazendo e corridas altas, você sabe, tem uma função que pode ser reutilizada em outros projetos também. É chamado por conta própria para organizar sua cena e disse, Oh, Maya em nosso próximo projeto estará olhando para como criar árvore de drama processualmente 23. Formatação de cadeias: um idiota comum. Fazer python é criar strings. Por exemplo, deixe-me criar uma string que diz Olá. Meu nome acabou e eu tenho 26 anos, mas eu quero mudar este Seiken. Use nomes de usuário diferentes e uma idade diferente. Então vamos criar uma variável para o usuário e eu vou chamá-lo através e uma variável para a idade. Eu sei que definiu isso para 26. Agora o que posso fazer é dizer olá. Meu nome é mais usuário mais e eu sou mais idade. E se eu sei executar, Isso vai nos dizer se você não pode adicionar uma string em um TOB verificado por isso requer que converta este inteiro em uma string e agora ele vai funcionar. Mas isso pode ficar muito complicado porque nós dois precisamos saber o tipo da variável e precisamos continuar adicionando cordas juntas, que pode ser meio caro de fazer. Outra opção é a substituição de string. Então podemos dizer olá. Meu nome é por cento s e eu sou por cento s. Então nós fechamos a cadeia, nós damos outro sinal de porcentagem e, em seguida, nós em príncipes daremos os valores para usar neste caso, a menos que uma idade de vírgula usuário. E o que isso fará é substituir o primeiro teste de porcentagem com o primeiro valor no 2º 1 com o segundo valor e assim por diante e assim por diante. Se eu rodar isso agora, você pode ver que eu não precisava me importar com o meu tipo de variável, e é muito sucinto de definir. Também podemos fazer isso com pesquisas de nome usando um dicionário em vez de um para puxar. Por exemplo, se eu disser nomear uma idade, posso dar-lhe um dicionário. Agora, com o nome de uma idade Desculpe que deve ser nomeado e usuário e você pode ver que são agora funciona. Esta forma de usar a substituição de cordas é uma que era muito popular no tempo de pizza. Infelizmente, medida que você vai, à medida que você cria strings mais longas, ele pode se tornar bastante ilegível. E é muitas vezes que você terá uma substituição de cordas como esta, onde não é possível descobrir o que vai para onde. Uma maneira final de fazer isso é usar o operador de formato. Então você pode dizer olá. Meu nome é, e então damos a chaves encaracoladas e eu sou e damos à garota aparelhos encaracolados novamente. E então dizemos formato. E dentro de um formato para Givet User e the Age e funciona exatamente da mesma forma. Mas isso não é uma grande melhoria. É o mesmo número de caracteres como por cento s e ainda temos o mesmo problema que não sabemos o que vai para onde sem ter que ler toda a frase. Em vez disso, poderíamos fazer algo assim. Podemos dizer qual valor usar e temos a mesma roupa. Mas o legal é, agora eu posso mudar minha string e me referir a eles fora de ordem. Olá, eu sou e meu nome é e isso é muito legal porque eu não poderia definir exatamente onde meus valores vão e torna muito mais fácil de ler e manter. Isso também significa que eu posso reutilizar qualquer um desses valores. Se eu apenas dizer 00 eu vou apenas usar o primeiro valor várias vezes enquanto que com a substituição de string cresce com o método percentual s, eu teria que redefinir o usuário várias vezes cada uso. Eu também posso fazer isso com um dicionário. Olhe para cima também desde que tipo de dizer olá. Meu nome é algo e eu sou algo que eu posso dizer Olá. Meu nome é Usuário e eu sou idade, e então eu posso apenas dar estes como argumentos para a função de formato. Suficiente. Eu dirijo. Ele funciona exatamente da mesma forma se você estiver fazendo um monte de construção de cordas e pelo tempo, na minha opinião, usar as chaves é a melhor maneira de ir usando o operador de formato. É eficiente, e lhe dá muito mais funcionalidade do que usar o símbolo de porcentagem s. Dito isto, se você estiver usando apenas um único valor por cento s pode ser muito conveniente, também é comum vê-lo usado em muitas bibliotecas python como a biblioteca de registro. Isso ocorre porque ele tem sido em torno de muito mais tempo e essas bibliotecas fazem uso de seu legado. Funcionalidade, para o nosso curso será praticamente usando o formato percentual s. Mas eu quero que você saiba sobre a opção de formato de ponto, bem como, porque é mais útil 24. Scopes em Python: neste vídeo, vamos passar sobre a lógica e o escopo da função do python siga regras simples para procurar variáveis. Ele primeiro olha em variáveis locais. Estas são variáveis que são atribuídas dentro da função ou do escopo atual. Por exemplo, este é o escopo fora da função interna, qualquer coisa que é recuada abaixo da declaração de escopo. Neste caso, a declaração de função é a declaração de escopo. Então estamos dizendo que qualquer coisa por baixo disso que também é recuado estará dentro do escopo e portanto, quando você procurar variáveis, ele vai primeiro olhar para dentro deste escopo e então ele vai olhar para cima no escopo acima dele, que é este escopo da função externa. E então, finalmente, olhamos acima disso e eles só olham dentro de uma python em si para que você possa ver isso descrito aqui. Isso é chamado de regra L E G B. Então l é para nomes locais de lado e de qualquer forma dentro de uma função. Variável interna é uma função local dentro de inter função na função de fechamento. Isso significa que as funções que estão fora deste escopo podem ser acessadas. Então inter variável é uma variável fora deste escopo. Mas é o escopo de fechamento indiano G para global são variáveis de nível de módulo. Um arquivo python. Ele é chamado de módulo Python, e isso está fora de qualquer função. Portanto, é uma variável de nível de módulo. Finalmente, você pode usar tipos python embutidos, que são apenas variáveis Patan que vêm com python. Então vamos nos livrar da documentação aqui e abaixo disso, vamos nos certificar de chamar nossa função externa. E agora se eu rodar isso, você pode ver que a função inter pode acessar variável mais interna, inter variável, a variável externa e o python global. Se eu nos moveu para fora do escopo, você pode ver que eu não posso mais acessar a variável mais interna por charme é inteligente o suficiente para me dizer isso. Se eu tentar executar isso, ele irá errar. Ele diz que não pode encontrar a variável mais interna em qualquer nível maior do que este. Então, se eu tirar isso, ele vai correr. Da mesma forma, Se eu agora tirar isso do escopo da função externa, você pode ver que é agora un recuado em relação à função externa. Eu não podia mais acessar a variável interna. Se eu executar isso, ele vai errar, Então deixe-me me livrar disso e NAFTA sobre isso, você pode ver que ele funciona perfeitamente novamente. Isso é porque nós vamos de dois locais fechados para Global dois embutidos. Isto é o que chamamos de L E g b principal off lookups. 25. Projeto 3: o criador de engrenagens: através deste projeto estará aprendendo a criar uma biblioteca controladora usando bonito. Nossa biblioteca de controle será flexível e suportará miniaturas. Podemos importar qualquer um dos objetos que salvamos, e também podemos criar quaisquer novos objetos que quisermos. Neste caso, vou dizer isso como o teste, e quando eu apertar salvar, você verá que ele aparece dentro de para nossa janela. Aprendemos como salvar dados como Jason e arquivos, bem como carregá-los de volta no Are You? Eu estaremos usando bonito fornecido pelo lado pi para dentro do meu 2017 e lado da torta. Nas versões anteriores do Maya, vamos rever as diferenças entre quatro e cinco fofos, bem como as diferenças entre torta fofa e lado da torta e torta, Cute five e pie side, também. Eu também vou estar passando por uma biblioteca bonito popular que é usado pela Disney, WETA, Sony Imageworks e muito mais. Lá vai nos ajudar a escrever código que pode ser usado o bonito em ambos Maya 2017 e versões anteriores do Maya. No próximo vídeo, vou fazer uma breve introdução ao bonito sobre. As diferentes versões são bonito uso dentro das diferentes versões do Maya 26. Como fazer um script de Python: neste vídeo. Em vez de criar o script insider Mayas próprio editor de script, estaremos usando Pi Charm para criar o script. Em um pré em um vídeo anterior, configuramos o botão I para apontar para o nosso diretório Maya Scripts. Se não te lembras onde isto é, podes dizer “abrir o arquivo e ir para o pé do pé”. Veja a pasta de documentos Maya 2017 no diretório Scripts abaixo de Lá. Se você estiver nos Jogos Olímpicos do Mac, vou me certificar de mencionar onde seu diretório Zara está bem, em uma sobreposição No vídeo, você pode ver nosso script anterior que escrevemos aqui, o objeto renomear er, mas vamos criar um novo script. Bem, diga arquivo novo e vamos dizer, arquivo Python. Vamos chamar este criador de engrenagem e vamos dizer OK, e você vai ver porque dissemos que é um arquivo python que termos pie já adicionaram o sufixo dot p y . Em seguida, precisamos carregar o centro Maya. Então vamos escrever uma pequena declaração do Prince que podemos usar para testar Maya carregando nosso roteiro. Então vamos apenas dizer imprimir e entre aspas em Olá, Maya e salvá-lo agora voltar para Maya e dizer, importar criador de engrenagens e executá-lo e você pode ver o Maya disse Olá, Maya. Aqui em baixo. Se você executá-lo novamente, você pode ver que ele não é impresso. Olá, minha outra vez. Isso ocorre porque Maya vai descontar a importação para que ele não tem que re importá-lo. Isso significa que, à medida que estamos nos desenvolvendo, Maya não vai pegar nossas mudanças. Então o que precisamos fazer é na declaração de recarga. Então, agora, se você executar isso, você pode ver que ele foi importado novamente e executado. Olá, Maya. Se eu voltar para o charme da torta e mudar isso para dizer pelos meus olhos e agora sobre ele, você pode ver que eu vou dizer pelo Meyer agora. 27. Como criar um equipamento: Vamos ver como realmente criamos uma engrenagem. Então primeiro eu vou criar, e então eu vou escolher um tubo de polígono. Podemos definir quantos eixos de subdivisão que ele tem alterando-o na caixa de canal. Agora tem 20. Selecionamos cada rosto alternado para criar os dentes. Então nós os extraímos e isso cria nosso equipamento. O problema é que não podemos mudar quantos dentes a engrenagem tem. Se eu mudar as subdivisões, você pode ver que a extrusão agora está ficando confusa porque ela está apontando para polígonos e não existe mais onde eles deveriam estar. Então, quando você criar nosso roteiro, teremos que ter certeza de que podemos controlar quantos dentes o crocodilo tem, bem como quanto tempo o czar de extrusão e nós temos que dar a ele a capacidade de mudar o número de dentes mais tarde. Então vamos voltar ao charme da torta. Vou expandir um pouco o meu editor de guiões. Vou derrubar minha caixa de canal. Vamos nos livrar do roteiro que já temos. Nós vamos importar a biblioteca de comandos do Maya, então vamos dizer a partir de comandos de importação do Maya e novamente, você pode ver o botão de pizza me dando auto completo enquanto eu digito. Nós vamos criar nossa função temporária bem, morte adequada para definir função. Vamos dar-lhe o nome, criar equipamento. Vamos dar-lhe que o príncipe vê dentro do qual lhe dará os parâmetros são o primeiro parâmetro . Se os dentes e vamos dar-lhe um valor padrão de 10 nosso próximo parâmetro é emprestado e vamos dar a este um valor padrão de 0.3 thes padrões de ar que eu acho que são bons para um caso de uso dentro deste vai dizer impressão, criando engrenagem. E então eu vou apenas dar os dois parâmetros que já temos logo depois que eu executar o script, insider. Maya, você pode ver que nada acontece. Isto é porque nós não estamos realmente chamando esta função assim como nós chamamos funções dentro da biblioteca C. M. M. D. Precisamos chamar a função dentro de uma biblioteca de criadores de engrenagens. Então vai dizer, criador de engrenagens que criam engrenagens. E vamos dizer que os dentes são iguais a 20. E agora para isso você pode ver o que acontece com os valores padrão. Estamos sobrepondo o valor dos dentes porque você disse 20 em vez de 10. Mas mantemos o comprimento do valor padrão em 0.3 porque não o especificamos dentro do Maya , e você pode ver que a função está claramente em execução porque imprime a instrução criando engrenagem nos dois parâmetros. O número de dentes é uma subdivisão multiplicada por dois. Então vamos ligar para os vãos. Bem, digamos que vãos é igual a dentes. Vezes dois. Lembre-se, este é um inteiro, e podemos multiplicar inteiros sem os inteiros. Então, agora, se dissermos Prince banir e executar isso dentro de Maya, você pode ver que avaliar 40 porque estamos dando o valor de 20. Vou me livrar desse padrão. E se você executar isso novamente, nos dará um valor de 20 porque o padrão é 10. Vamos deixar um comentário para que alguém editando nosso script mais tarde possa lembrar o que pretendemos . Quando você usar o símbolo hashtag e eu vou dizer dentes, cada rosto alternativo que se estende vezes dois, então nós vamos criar o objeto pipe. Fazemos isso, mas usando os comandos, o objeto poly pipe e damos a ele um parâmetro chamado acesso subdivisões e dizemos o número de vãos se você quiser. Se eu rodar isso agora e apagar meu equipamento antigo, você pode ver que criamos um cano. Deixe-me apagar isso e você vai dar um novo valor para os dentes e eu vou dizer 30. Então eu dirijo isso. Você pode ver que temos muitos vãos sobre ele. Se eu abrir a caixa do canal, você pode ver que o tubo Poly tem 60 porque nós temos duas vezes o número de dentes para nós bandas. Deixa-me apagar isto. Em seguida, precisamos ter certeza de que nos apegamos à transformação e ao construtor disso. Em seguida, obtemos uma seleção dos rostos que queremos no lado do tubo. Então dizemos faces laterais. Este será o nome de uma variável, e usamos a função de intervalo. A função de intervalo nos dá números entre o primeiro número no segundo número. Neste caso, vamos dizer que se estende vezes dois e se estende vezes três. Deixe-me explicar por que estamos fazendo isso. Se eu criar outro tubo, deixe-me criar um, e eu seleciono cada rosto que queremos para o nosso chá e novamente. Isso é criado com o valor padrão de 20 divisões. Então, se eu selecionar esses rostos, se eu digitar “É Russia Cell “e correr, ele vai me dar os rostos de volta. Posso copiar isto para o amuleto de torta, isso é mais fácil para nós vermos. E quando uma copiá-los em termo pie, você pode ver que eles começaram face 40. Vá para 42 44 assim por diante e assim por diante. Deixa-me livrar-me desta linha. Isso significa que se começarmos com 20 vãos, nossos rostos começam que se estende por tempo guisado, que será igual a 40 e o final que abrange os fãs três, que será igual a 60 Se eu voltar para o meu e agora executar isso, você pode ver que Comecei 40, mas vou subir em incrementos de um. Mas eu termino corretamente em 59, que é pouco antes de vãos. Três vezes, que é o que queremos. O valor do intervalo também leva 1/3 argumento, que é os passos que devem tomar, que significa que eu vou dar-nos cada segundo número. Se eu executar isso agora, deixe-me salvá-lo. Se eu agora sobre este, você pode ver que ele nos dá 40 42 44 46 assim por diante e assim por diante, quais serão os valores corretos que esperamos? Não, vamos eleger estas caras. Então, primeiro, vamos limpar qualquer seleção que temos alguns comandos básicos ou selecione clear é igual a True. E dizemos que para o rosto dentro de rostos ele comanda dot select e nós vamos dar-lhe uma string . E o que estamos fazendo com a string é que vamos dizer percentual s ponto f e entre colchetes dentro dos colchetes vai economizar percentual s, e vamos usar a substituição de string para criar a string que Meyer precisa selecionar os rostos. Então vamos dá-lo para transformar e a fé. E aqui você pode ver que isso será substituído por aquilo e que isso será substituído pelo segundo valor. E também vamos dizer a ele que Maya faça é adicionar a seleção em vez de substituí-la. Se você fosse simplesmente executá-lo sem o parâmetro de anúncio, quando meu oh do é cada vez que ele vai para o loop, ele iria apenas selecionar esse rosto específico. Mas estamos dizendo a você para fazer é adicioná-lo cada vez Então, se eu agora executar isso, você pode ver que eu criei um pipe e selecionei todas as outras faces do lado, exatamente como esperávamos. A seguir, vamos extrudir estes rostos. Deixe-me deletar este polígono aqui e de volta na extrusão de charme de torta que será um nome variável extrusão toehold senão ele comanda ponto Polly extrude rosto. Este é um comando para extrudir objetos de polígono. Eu vou dar-lhe um parâmetro fora de tradução local Z e nós estamos dizê-lo para usar comprimento como o valor deste parâmetro e mais dizer extrusão de impressão para ver o que este comando realmente nos dá de volta. Então, se eu agora executar isso e temos um erro porque eu não estou digitando isso corretamente porque não é poli extrude face. Mas o que é isso? Então, na minha, uh, se eu realmente extrudir o rosto, você pode ver que a corrida comandada foi Polly extrude faceta não rosto. Então deixe-me copiar isso de volta e substituí-lo dentro de um amuleto de torta. Deixe-me apagar este objeto. E agora, se você executá-lo, criamos uma engrenagem e recebemos uma lista de volta que diz que Polly extrude a cara um. Uma vez que a nossa lista conterá apenas um objeto. Vamos apenas recuperar o primeiro objeto dentro dele. Vamos fazer isso colocando os colchetes depois de chamá-lo e dará o valor zero novamente. O que estamos fazendo é que sabemos que isso nos dá de volta uma lista e podemos acessar isso usando o mesmo acesso para revisão de método visto Phyllis, que está usando os colchetes e usando o zero para acessar o primeiro elemento. Nós não atribuímos tudo isso à variável de extrusão. Se eu apagar isso novamente e executar o script, você pode ver que agora temos a face de extrusão de poli um, que foi o primeiro elemento da lista. Finalmente, para uma função, vamos retornar três objetos importantes que precisarão fazer uso mais tarde. Vamos salvar o retorno e vamos pegar o construtor de transformação e o nó de extrusão. Então, se eu apagar esta engrenagem na cena e rodar de novo, mas desta vez vou dizer imprimir o que quer que esta função nos dê. Se eu executá-lo, você pode ver que nossa função devolve um para retirar o nó de transformação, o construtor e a face de extrusão poli. E lá vai você. Temos uma função que pode criar uma engrenagem e nos dá de volta dados úteis que podemos usar para manipular a engrenagem no próximo vídeo Antes de eu terminar o vídeo, vamos ter alguma documentação para nossa função para que as pessoas possam usá-lo facilmente, oferecer a definição da função, colocar para baixo três aspas duplas e pressione enter e pie Charm deve completá-lo automaticamente para você. Se não, apenas copie. O que quer que o meu vídeo diga, diremos que esta função criará uma engrenagem com os parâmetros fornecidos. Vamos dizer que os arcos ou os parâmetros são dentes, o número de dentes a criar e o comprimento dos dentes. E vamos dizer que ele retorna um para retirar o construtor de transformação e nó de extrusão. Então agora qualquer um chamando nossa função pode simplesmente chamar ajuda em nossa função e ver o que ela vai nos dar de volta. E, finalmente, é importante notar que ele não deve usar. O príncipe vê dentro da ajuda porque o que isso faz é que ele executa isso e então você administra a ajuda. Ele realmente te dá para ajudar para as duas pessoas que é devolvido por isso sem que o príncipe veja. Não estás a executá-lo, e estás apenas a ajudar. Em vez disso, a função real 28. Como modificar o equipamento: para recapitular nosso vídeo de perda, criamos uma função que pode gerar uma engrenagem baseada nos parâmetros que lhe damos. Se eu for fazer isso, você terá uma engrenagem com um número variável de dentes. Neste vídeo, mostraremos como modificar o equipamento que ele acabou de criar. A função que criamos retorna para transformar o construtor e o nó de extrusão . Estes serão úteis porque precisamos modificá-los na próxima função. Então vamos colocar estas dentro de variáveis dentro de Meyer, vamos dizer transformar, construtor e extrusão são iguais à nossa função. E se eu agora executar isso e eu digo imprimir, transformar, imprimir construtor e devo dizer transformar construtor de impressão extrusão. Se eu agora executar este, você pode ver que ele diz que a transformação é tubo P para o construtor é Polly Pipe para e extrusão é provavelmente extrusão face a. Então vamos apagar essas engrenagens. Vamos criar um novo equipamento. Vou expandir a Maya. Se você for para a caixa de canal, você pode ver que o tubo de política um tem o acesso de subdivisões que podemos alterar para alterar o número de Pete que a engrenagem terá. Mas se você mudá-lo, você pode ver que o você pode ver que o nó de extrusão poli não sabe mais quais faces editar , e você obtém formas realmente funky. Então, quando você mudar isso, nós também precisamos mudar o nó de extrusão poli de volta. Pike Charm criará uma nova função para fazer isso. Então vamos criar uma engrenagem novamente. E agora os restaurados esses valores. Vamos colocar uma hashtag para comentar para que possamos executar novamente este comando acidentalmente na próxima linha. Vamos chamar uma função que estamos prestes a fazer. Vamos dizer o criador de engrenagem Duck mudança e então vamos dar-lhe o construtor e a extrusão que também estavam indo para dar-lhe, é o número de dentes. Então, quando é que vamos dizer que queremos fazer 40 deles? Então temos a cena. Vamos criar uma nova função. Bem, digamos que a morte mudou de calor porque esse é o nome da função que criamos. Levará dois parâmetros, levará o construtor e a extrusão. Vai levar o número de dentes para criar e o comprimento que vamos imprimir o construtor e vamos imprimir a extrusão para que possamos ver que ele está recebendo os valores certos. E este é um bom momento para introduzir os dois tipos de parâmetros dentro de um python se você não der um valor padrão, mas dando o símbolo igual e um valor Python os torna argumentos posicionais, que torna obrigatório se você chamar o método mudar a função dos dentes. Você tem que dar esses valores porque eles não têm padrões. Mas Python precisa saber o que é igual a. No entanto, você não precisa obter esses dois porque eles já têm um valor padrão, que significa que o Python sabe exatamente o que eles são iguais. Então, se você executar isso agora, você pode ver que nós temos o Poly Pipe um e o Poly Extrude rosto um. Se eu remover a extrusão e depois executá-la, ela vai nos dar uma era, diz Mudança. Heat leva pelo menos dois argumentos, e não temos dado o número necessário de argumentos. O que vamos fazer agora é mudar o número de rostos no tubo de polietileno. Então, novamente, diremos que se estende igual Pete vezes dois. Não recebemos os comandos. Tubo de azevinho. Eu vou dar o construtor quando você disser que editar é igual a verdadeiro e nós vamos dizer que subdivisões acessam extensões iguais. Então o que estamos vendo agora é que eu vou usar o Poly Pipe Command novamente com o pipe que temos desta vez nós damos a ele a bandeira de edição para que ele saiba e tipo de criação de um novo para editar o existente. Então, se nós agora sobre isso, você pode ver que ele mudou o número de vãos sobre isso. Mas a cara da extrusão Poli está toda confusa porque não sabe quais caras extrudem com precisão. Como você vê o que realmente está usando? Destruir esses valores? Bem, se você diz Polly extrude rosto e nós vamos usar a lista em seu comando dentro de uma python então em uma nova linha, eu vou dizer comandos. Primeiro de tudo, deixe-me importar os comandos, Lavery. Então vamos dizer de Maya Import Ramone e notar que comanda o somador lista. E então eu dou a cara de extrusão de poli. Nós agora executamos isso. Não nos devolve nada. Isso é porque precisamos imprimi-lo também. Se selecionarmos isso e, em seguida, executar, ele nos dará de volta uma lista de todos os atributos que eles são muitos para percorrer. Então eu vou te dizer, aquele que se interessa por isso chama-se Componente. É chamado de componentes de entrada, que você confinou aqui, podemos usar para chegar à comunidade dela para ver o que é igual. Nós dizemos para chegar em sua poliidade extrude rosto um ponto componentes de entrada. E se eu rodar isso agora, você pode ver que é igual aos valores faciais que temos para que possamos usar exatamente como costumávamos chegar ao seu comando. Podemos usar o conjunto no nosso compromisso para defini-lo novamente, então vamos criar uma lista, destruir todos os rostos. E assim como antes, vamos dizer faces laterais é igual a intervalo vãos vezes para você se estende vezes três e novamente. Isso significa que vamos passar pela primeira face, que será o número de vãos para você. Então vamos aumentar a cada dois valores como dado por este. Desculpe, isso deve ser vaga vezes três. Estes serão os rostos que queremos e vamos mudar esta lista para chamar nomes de rostos para não ficarmos confusos. Então agora o que vamos fazer é dizer quatro faces internas face, nome é igual a e novamente Será que você substituição corda vai dizer f e colchetes. E dentro disso, vamos dizer por cento s porque eu por cento s será substituído por este próximo valor dentro dessas impressões vê que será rosto se eu disser impressão cara e agora eu rodar isso, deixe-me me livrar disso. Primeiro de tudo, deixe-me apenas copiar isso para que possamos ver os valores que são esperados. Posso colocá-la nisto? Você pode ver que ele está nos devolvendo os nomes, os números dos rostos, o que realmente queria com o nome do rosto. Basta imprimir isso. Agora você pode ver que ele diz f e, em seguida, entre colchetes o nome do rosto que queremos. Então o que vamos fazer é adicionar isto à lista de nomes de rostos. Então dizemos nomes de rosto ponto upend e novamente, você pode ver o charme da torta nos dando conclusão útil, e vamos salvar o nome do rosto. Então, agora, se eu disser nomes de rosto e eu rodar isso, você pode ver que é muito semelhante à lista que temos aqui agora O que vamos fazer é como fizemos antes. Vamos agora definir os atributos que iam dizer, vamos lá. Então, coloque nela de novo, você vai substituir as cordas? Porque não sabemos qual é o nome da nota de extrusão. Enquanto eles estavam executando a função, eu vou colocar dar-lhe o nó de extrusão e, em seguida, o próximo argumento que ele precisa é quantos itens existem na lista de dar. Então vamos dizer Len, e eu vou dar a lista de nomes de rosto. E o que isso vai fazer é que eles vão obter o comprimento da lista de nomes de rosto e dá-lo para o conjunto fora de função. Em seguida, ele precisa de uma lista de rostos antigos que estarão usando tão enfraquecido fazer é expandir a lista de nomes de rosto . Fazemos isso, mas dando o asterisco e dizemos nomes de rosto. E o que isso faz é, em vez de dar a ele a lista de nomes de rosto, ele expande para que cada um deles seja um parâmetro. Isto é o mesmo que dizer f 1 60 aqui e depois dar outro parâmetro dizendo f 1 62 e assim por diante. E assim por diante. O que estamos fazendo é e começamos a dar-lhes cada um individualmente. Estamos a expandi-lo da lista para que não tenhamos de o fazer manualmente. E, finalmente, a variável de perda é tipo porque temos que dizer que tipo de tipo o atributo é. E nós vamos dizer lista de componentes. Devo dizer isto. E se eu limpar o histórico aqui e depois executar o script, você pode ver que nosso equipamento foi editado para ter o número correto de dentes. Nós também queremos ser capazes de mudar o comprimento, e isso é novamente muito semelhante. Então dizemos comandos Nepali extrude faceta porque é um comando que usamos para criar o extremo que lhe damos nó de extrusão. E assim como fizemos anteriormente com o Poly Pipe, dizemos que a edição é verdadeira porque você quer editá-la e precisamos saber, e precisamos deixar meu eu saber que queremos editá-la. E, em seguida, vamos usar um formulário curto para a variável de usado anteriormente. Vamos dizer que Z é igual a emprestar. Este é um formulário curto fora do parâmetro de tradução Z local que você concede os nomes curtos dentro da documentação do Maya. Só vou usá-lo aqui para ser preguiçoso. Então, se eu nunca rodar isso de novo, funciona como esperávamos. Posso mudar o número de dentes 10 novamente e executá-lo. E as mudanças que e isso pode mudar o comprimento para 0,5. Se eu executá-lo agora, você pode ver que ele está estendido o comprimento e pode mudá-lo para baixo muito pequeno. E assim, temos uma função. Criamos uma engrenagem e agora podemos modificar a mesma engrenagem que criamos. 29. Cursos de tipos e interfaces de a Python: Não vou aprender sobre cláusulas. Cláusulas estão fora dentro de um python para gerar tipos personalizados neste caso será gerar um tipo chamado Animal. Nós criamos as garras de animais usando a palavra-chave cláusula dando-lhe o nome dele chamado dando-lhe o nome animal. E então dizemos do que herdar. Neste caso, estamos herdando do objeto python, que é o tipo de nível mais baixo dentro de um python. Isso significa que animal vai tomar todas as características que o objeto tem que aprender mais sobre isso em um pouco dentro de uma cláusula? Enfraquecer definir métodos. Estes são semelhantes a funções, mas eles têm que viver dentro de uma cláusula. E todos eles se tomam como o primeiro argumento. Fora isso, todos eles se comportam exatamente como funções. Criamos uma instância fora do objeto animal da mesma forma que criamos instâncias fora de qualquer outro tipo dentro de uma python. Então, se eu quisesse criar uma lista, eu diria que minha lista é igual a lista. Eu dou a ele o tipo que eu quero criar e, em seguida, parênteses e, em seguida, eu armazená-lo em uma variável chamada minha lista. Então, se eu quiser criar um novo animal. Eu posso dizer algo como Tiger é igual a animal e dar-lhe moedas da mesma forma que lista criador. Estamos criando uma nova instância animal, informando o tipo dando parênteses para indicar que estamos criando uma nova instância e, em seguida, armazenando-a em uma variável chamada tigre. Se eu disser imprimir o tipo de tigre, você pode ver que é uma cláusula de animal armazenado dentro de um principal. Isso é relevante agora, mas aprendemos sobre isso mais tarde. Aprendemos a chamar funções com objetos tão cedo. Se você quisesse dizer algo para falar, nós diríamos falar e dar-lhe o objeto que queremos e dar-lhe o objeto que queremos para executar esta ação. Por exemplo, temos feito coisas como pensar, comanda esse pai e, em seguida, dar-lhe um objeto como tigre em vez de fazer isso. Onde estamos passando onde estavam passando são variáveis em uma função. Python tem alguma programação orientada a objetos tilintar. Programação orientada a objetos nos permite executar ações com o objeto tigre em vez de executar ações sobre o objeto tigre. Então, em vez de dizer falar e dar a variável tigre, podemos dizer tigre dot falar. E se eu executar isso agora, ele vai dizer que eu não sei como falar. Isso é porque nós definimos esse comportamento bem aqui. Outro aspecto das classes é o fato de que você pode criar várias instâncias de uma. Então, em vez de falar, digamos, eu não sei como falar, digamos que meu nome é e então vamos. E então vamos fazer isso se referir a um nome muito bíblico e vamos dizer que o nome é igual a nenhum porque ainda não definimos o nome. Esta é a nossa introdução à palavra-chave self. O que isso nos permite fazer é referir-se a uma instância fora do Kloss. Então agora, se eu disser que Tiger não fala, ele vai dizer que meu nome não é nenhum, porque o nome auto-ensinado não é nenhum. Se eu criar para os animais e eu digo e digo para ambos falarem até de novo, ambos dizem que o nome não é nenhum. Mas agora posso fazer algo especial. Vejo que o nome do ponto do tigre é igual a Tiger e Buffalo. Feito. Nome é igual a búfalo, e se eu rodar isso agora, você pode ver que esta instância do objeto animal será impressa. Meu nome é Tiger porque o método de falar está se referindo ao nome auto-ensinado, que está sendo definido aqui nesta instância específica. Isso significa que podemos reutilizar o comportamento de uma classe enquanto apenas mudar certos aspectos fora dela como nós entendermos melhor. Isso nos dá a capacidade de definir lotes de comportamento reutilizável que vimos seu animal herda de objeto, mas podemos criar outros tipos que herdam de animal. Por exemplo, vamos criar um cão e em vez de objeto, vou dizer-lhe para herdar do animal. E eu não vou definir nada aqui. Então vamos criar um novo cão. Eu vou chamá-lo. Fido é igual a cão novamente. Estamos criando uma nova instância de cão e armazenando-a na variável de caça. Se eu disser Fido dot speak, ele vai dizer meu nome não é nenhum porque ele está usando porque ele está usando o método definido aqui em cima. Em vez disso, eu queria dizer Wolf, alguém dizer então eu vou agora redefinir, falar e eu vou dizer impressão vale a pena. E agora sobre isso vai dizer lobo, e isso é porque nós redefinimos apenas o método de falar desta classe aqui em cima. Mas se eu agora disser lutador ponto respire, mesmo que não tenhamos definido o método de raça para cão, ele vai herdar essas características do animal. Neste caso, definimos Respire aqui e você pode ver que ele diz que eu não sei como respirar aqui em baixo apenas o mesmo A diz que eu não sei como respirar Aparecem. Isso ocorre porque o cão herda cada característica do objeto animal, e isso é porque nós definimos animal como a base para o cão. Podemos explorar isso ainda mais, dizendo tipo de impressão um lutador, e eu vou dizer que ele está fora do cão garras. Mas dizemos que a impressão é uma instância Fido fora do animal. Ele vai dizer verdade, porque Fido é um exemplo de cão, bem como de animal, porque lutador herda tanto o cão e os traços de animais. Se definirmos mais métodos sobre isso para substituir, podemos dizer andar e eu digo imprimir. Eu ando sobre quatro pernas e agora se eu correr lutador não andar. Eles dirão que eu ando em quatro patas, mas novamente, se eu disser lutador , não respire, ele vai pegar o método do animal Kloss em vez da aula de cães. Finalmente, também podemos sempre adicionar nossos próprios métodos. Qualquer submarino perto. Neste caso, vamos dizer o que é raça e vamos dizer impressão auto-estrela raça. E vamos definir uma raça aqui em cima e vamos dizer, raça como nenhuma. Então, se eu disser Fido, então o que é raça? Você pode ver que não nos devolve nada, mas se eu tivesse feito agora. Mas se eu agora definir esse valor e emergência, e eu vou dizer que ele é um Doberman, se eu agora correr, ele vai me dizer que é um Doberman. Mas se eu mudar lutador de um cão para apenas um animal normal e depois executá-lo, você pode ver que ele diz que o objeto animal não tem atributos. O que é raça? Isso ocorre porque o que é raça é definido apenas no objeto cão e não no animal. O Kloss. Então só funcionará se Fido for para cachorro e não apenas para um animal. O que isso nos permite fazer é definir o comportamento comum em uma base. Kloss, neste caso, animal que todos os animais podem compartilhar, e podemos definir um comportamento mais especializado dentro de uma subclasse como cão. Agora, se você criar uma nova cláusula, por exemplo, peixe e nós diremos a ela para ser um animal, e nós poderíamos apenas redefinir o método de respiração, e eu vou dizer a ele que eu respiro debaixo de água. Se eu criar um peixe novo e eu disser para respirar, ele vai dizer que eu respiro debaixo d'água porque ele está herdando do animal. E se eu disser para falar, direi que meu nome não é nenhum porque é herdeiro de um animal. O que isso nos permitiu fazer é encontrar dois tipos diferentes de sub animais cão e peixe que o barco herdar de animal. Mas eles definem seu próprio comportamento quando adequado, mas ambos herdam comportamento comum como uma recapitulação para mostrar várias razões. Minhas aulas são muito úteis. Ele nos permite definir o comportamento reutilizável que podemos personalizar usando instâncias. Uma instância variáveis para ele nos permite agrupar comportamento comum. Juntos Há refere-se a um único tipo de objeto neste caso, fora de tipos de animais e três. Ele nos permite herdar e estender qualquer uma dessas classes. Nós podemos substituir qualquer um dos métodos que foram definidos, ou podemos adicionar nossos próprios novos métodos para adicionar mais funcionalidade a uma cláusula sem ter afetar todos os outros tipos de subclasse que existe 30. Como converter nossas funções em aulas: nós não vamos converter nossas funções de criação de engrenagens e modificação de engrenagens em um pano com o qual podemos interagir mais facilmente em termos de pizza, criar um novo arquivo. Eles vão arquivar novo e dizer arquivo python. Bem, diga panos de engrenagem, criador. Em vez disso, estamos certos. Clique na guia e diga, Dividir verticalmente. Isso dividirá nosso código verticalmente entre o criador de engrenagem e o Criador da Cláusula de Engrenagem que agora será criado para a maioria deste vídeo ficará dentro de um amuleto de pizza. Ainda assim, temos que voltar para Maya porque a funcionalidade é bastante simples. Primeiro, digamos da Maya Import. Consulte MDS. Vamos criar uma classe e nomear uma engrenagem e herdaremos do objeto python. Dentro disso, vamos criar uma nova função ou método, e vamos chamá-lo de Criar equipamento. Como você pode ver, charme de pizza adiciona automaticamente uma palavra-chave auto para que saibamos como se referir a nós mesmos dentro da classe. Vamos usar os mesmos parâmetros que fizemos antes, e você pode ver o código antigo à esquerda. Direi que os vãos são iguais aos dentes. Vezes dois. Vou escrever exatamente o mesmo código novamente transformar e construtor é igual a comandos. Duck, Polly Pipe e deixe-me ver as bandeiras que usavam. Só vou copiar isso através e nós vamos dizer faces laterais é igual a alcance vãos vezes dois vãos dedo do pé três e dizer de novo Bem, diga a ele para limpar a seleção e vamos dizer quatro faces internas. E deixe-me apenas copiar isso o resto do código desta função e certifique-se de que ele está recuado para que ele esteja em linha com a função de criação de engrenagem ou, neste caso, é um método. Em seguida, vamos criar o método de mudança de dentes irá copiá-lo através, e eu vou apenas certificar-se de que tudo está recuado corretamente, selecionando-o e pressionando Tab. Eu sei adicionar manualmente a palavra-chave auto no início, então isso não é muito útil. Pegamos o mesmo código e colocamos dentro de um objeto de engrenagem. Se você voltar para o meu, uh, nós podemos importar isso dizendo criador de panos de engrenagem como criador de engrenagens, o que estamos fazendo é importar o novo módulo, mas como este nome de módulos para que não tenhamos que mudar o resto do nosso código. E se eu tentar executar isso agora, deixe-me apenas comentar. Rebocei esta linha. Se eu tentar executar isso agora, ele vai dizer que não há nenhum método create gear if, isso é porque ele está agora dentro de uma cláusula. Então vamos criar o Kloss. Bem, digamos que engrenagem é igual a marcha. E se fizermos isso agora Oh, desculpe. Temos que dizer que a engrenagem está dentro da engrenagem Criador e se eu agora executar isso, você pode ver que funciona. Nós ainda temos que gerenciar tudo isso fora de para panos. Isso não é muito útil para nós. Então, de volta ao charme da torta, vamos mudar isso. Primeiro de tudo, temos o “eu”. O que isso significa? Isso significa que quando estamos dentro daqui, engrenagem refere-se a esta instância de engrenagem e nossos métodos sabem como acessá-la. Outra coisa que perto é deixar-nos fazer isso armazenar valores dentro de nós mesmos. Então vamos tentar isso agora. Então nós vamos fazer é que eles vão dizer, auto pato transformado e auto-construtor ponto e aqui em baixo você vai mudá-lo para auto-ponto transformar, e nós não retornaremos nada desta vez. Além disso, vamos mudá-lo para auto-ponto de extrusão, e o que estamos fazendo aqui é que estamos dizendo que é uma espécie de ter essa variável armazenada dentro da função de justiça. Vamos portar esta variável ele mesmo. Esta é uma maneira destruída variáveis fora desta função, e é um bom exemplo de python. O escopo é um exemplo de uma variável que existe somente dentro desta função. Não podemos acessá-lo fora desta função. A segunda disfunção termina faces laterais não existe mais. Em vez disso, nós interpretamos, ou esta variável na própria instância panos usando self. Isso significa restaurar esta variável em si mesmo. Então, agora, se você voltar para Maya e eu executar isso, deixe-me deletar isso. Primeiro, você vai dizer que nenhum tipo não está em terrível porque estamos tentando expandir para retornar valores. E, como você pode ver, removemos o valor de retorno. Originalmente, tínhamos isto. Não devolvemos mais nada, então deixe-me me livrar desse doente. Eu simplesmente digo engrenagem ou criar equipamento. Mas agora aqui está a parte legal. Posso dizer que transformaram o ponto da engrenagem. E se eu rodar isso, você pode ver que diz tubo P um. Isso é porque eu defini esses atributos nesta instância fora da engrenagem, e agora eu posso acessar este atributo nesta instância de engrenagem a inchar. Da mesma forma, eu posso dizer imprimir a extrusão e novamente ele cepto na engrenagem. Eu, no entanto, não posso acessar a variável faces laterais. Veja se eu tento isso. Diz que Gear não tem atributos. Rostos laterais. Isso porque a variável faces laterais é limitada à função da justiça, e é assim que queremos por enquanto. Então agora que não estamos recuperando a transformação do construtor e extrusão como éramos antes, não faz sentido ter isso aqui. Então vamos nos livrar dessas variáveis. E agora, se você voltar ao gráfico de pizza, vamos também nos livrar desses parâmetros, e podemos simplesmente referir-nos a eles usando self novamente. Então está dizendo, construtor auto-ensinado, que recebe esse valor e novamente aqui podemos dizer auto dúvida, extrusão e auto-dúvida extrusão novamente, dizendo Olhe para cima o valor de si mesmo em nós mesmos. Isso significa que olhamos para fora da função e, em vez disso, olhamos para a classe. Então, se você voltar para aqui e agora executar isso, deixe-me primeiro deletar isso e se eu agora executar tudo isso, você pode ver que temos uma engrenagem aqui. Com essas mudanças aplicadas, agora posso alterar o número de dentes e o comprimento. Se eu rodar esta linha de novo, você pode ver que estamos apenas modificando a mesma marcha. E se eu fosse dizer tipo de impressão de engrenagem, você pode ver que é fora do tipo de engrenagem do criador de panos de engrenagem. Portanto, você pode sentir pano de um realmente boas maneiras de conter a lógica dentro de si mesmo. Em vez de ter que chamar sua função como em nosso exemplo anterior e armazenar os valores que obtiveram a partir dele e, em seguida, usar esses valores para alimentá-lo de volta em outra função. Podemos apenas segurar o objeto de uma engrenagem, e ele sabe como interagir consigo mesmo. Se você voltar para o charme de torta, você pode ver que esses valores só são definidos quando um ano criativo. Mas eles não estão lá por padrão antes de executarmos esse método. Então, se eu entrar em Maya e criar uma nova engrenagem e eu disse que a engrenagem tem extrusão, isso era algo que poderíamos ter obtido antes. Mas se eu nunca nele, você pode ver que o objeto de engrenagem não tem extrusão de atributo. Isso ocorre porque, por padrão, estamos criando os atributos até que essa função seja executada. Então, se você diz engrenagem, criar engrenagem e agora executá-lo bem, obter o valor de volta em vez disso, vamos definir esses valores por padrão. Dentro de um encanto de tubo criará uma função chamada nele. Então, para criar esta morte recente, assim como criamos todas as funções dos métodos. Mas desta vez nós digitar o dobro nas pontuações e nele e encanto tubo irá sugerir para você , seguido por mais dois sublinhados. Então, sublinhado duplo i n I t. Seguido por mais dois sublinhados. Damos a ele o valor de si mesmo. E aqui dizemos apenas doutrinas próprias. A forma é igual a nenhum. Extrude auto-ponto é igual a nenhum, e auto, esse construtor é igual a nenhum. Não, eu estava dizendo, é quando inicializamos uma nova engrenagem e então podemos consultar a extrusão voltada para fora. Oh, desculpe. Depois de recarregar isso primeiro, deixe-me recarregá-lo. E se eu criei uma nova instância de engrenagem e, em seguida, eu correr voltada para fora extrude, você pode ver que nada é impresso para fora. Na verdade, eu posso dizer impressão de engrenagem ponto extrusão e eles vão dizer nenhuma. Isso é porque de volta ao charme da torta. Estamos colocando a dúvida de si mesmo. Extrude é igual a nenhum. Mas se eu fosse dizer Geared, Eu criar engrenagem e executar esta linha agora voltada para fora extrude tem valor. Mas o que isso significa é que, se não corrermos, criarmos equipamentos, ainda podemos obter o valor da extrusão de pontos de engrenagem e voltar em termos de pizza. Finalmente posso explicar o que a função da unidade faz. Thean it método é executado sempre que uma nova instância do objeto é criada. Então, sempre que fazemos isso, estamos realmente executando o método innit. Posso mostrar-lhe isto de forma muito simples. Se eu disser imprimir executando o método innit, Sempre que eu criar um novo objeto de engrenagem, você pode ver que ele diz, executando o método da unidade. Então deixe-me criar um novo objeto de engrenagem. Eu posso tentar imprimir voltada para fora extremo, e eu vou dizer nenhum porque ele ainda está definido para nenhum. Mas quando eu disse engrenagem ou criar engrenagem e agora fazer impressão voltada para fora extrusão, ele tem valor porque eu método criar engrenagem mudou o valor da engrenagem ponto extremo. Portanto, você pode ver o valor de thean it método em deixar-nos definir de valores padrão e comportamento . Quando um fechamento é criado e antes de qualquer um de seus métodos ou executar finalmente para documentar a classe de engrenagem , criamos a documentação abaixo da palavra Kloss, assim como fazemos para uma função. Então vamos adicionar três aspas duplas, e podemos dizer que este é um objeto de engrenagem que nos permite criar e modificar uma engrenagem aqui. Vamos deixar um comentário para dizer o método innit. Vamos um conjunto de valores padrão, e, em seguida, se você sentir como adicionar documentação para estes, você pode fazê-lo da mesma maneira. E lá vai você. Criamos um primeiro pano convertendo as funções que aprendemos em nosso primeiro vídeo e usando-as para compor essa cláusula chamada Gear. Nós aprendemos sobre auto e sobre o método de unidade e sobre o quão perto é os valores de consentimento em si mesmos e, em seguida, acessar valores em si mesmos para que não tenhamos que postular próprias variáveis fora das funções 31. Projeto 4: o Tweener de animação: através deste projeto estará aprendendo a criar uma biblioteca controladora usando bonito. Nossa biblioteca de controle será flexível e suportará miniaturas. Podemos importar qualquer um dos objetos que salvamos, e também podemos criar quaisquer novos objetos que quisermos. Neste caso, vou dizer isso como o teste, e quando eu apertar salvar, você verá que ele aparece dentro de para nossa janela. Aprendemos como salvar dados como Jason e arquivos, bem como carregá-los de volta no Are You? Eu estaremos usando bonito fornecido pelo lado pi para dentro do meu 2017 e lado torta. Nas versões anteriores do Maya, vamos rever as diferenças entre quatro e cinco fofos, bem como as diferenças entre torta fofa e lado da torta e torta, Cute five e pie side, também. Eu também vou estar passando por uma biblioteca bonito popular que é usado pela Disney, WETA, Sony Imageworks e muito mais. Lá vai nos ajudar a escrever código que pode ser usado o bonito em ambos Maya 2017 e versões anteriores do Maya. No próximo vídeo, vou fazer uma breve introdução ao bonito sobre. As diferentes versões são bonito uso dentro das diferentes versões do Maya 32. Visão de bibliotecas de interface de usuário em Maya: antes de começarmos a desenhar. Você é olhos? Eu gosto de passar por cima dos vários Você I bibliotecas dentro admirar meu tem para você I bibliotecas. unidade, parte da biblioteca de comandos que já estavam familiarizados com a outra é baseada em algo chamado Bonito. É soletrar Q T. Mas a pronúncia oficial é bonito, então ter comigo como eu vou usar que toda a minha interface de usuário é construído em Cute. Cute é uma biblioteca C Plus plus que permite que desenvolvedores de aplicativos desenvolver para um sistema operacional e ter um você I que pode olhar nativo em qualquer outro sistema operacional. Se eu desenvolvi algo no Windows, eu posso reutilizar o mesmo código no Mac OS ou Lennox, e meu aplicativo vai parecer que ele pertence a esse sistema operacional. Além disso, ele fornece muitas outras funções para nos ajudar a desenvolver aplicativos entre plataformas. Antes do meu 2011, quando o meu A mudar para bonito Maya tinha diferentes você I bibliotecas para cada sistema operacional. Isso significa que, como um desenvolvedor U I, você é forçado a usar a biblioteca de Comandos Maya, onde os comandos usariam a respectiva biblioteca em cada sistema operacional, para que você não precise saber o que ele estava usando. Isso causou muitas discrepâncias visuais e discrepâncias comportamentais. Além disso, a biblioteca de Comandos Maya oferece apenas um pequeno subconjunto do que ofertas fofas. Então você perde o controle à custa de não ter que entender os detalhes subjacentes. Quando o meu A 2011 veio em torno do meu eu tinha um novo escuro você eu usando a biblioteca bonito, este Maya mental derramou o mesmo que eu código em todos os sistemas operacionais, e isso significava que poderíamos finalmente usar algo chamado Pike UT ou torta. Cute Pi bonito é uma ligação python em torno da biblioteca bonito. Isso significa que podemos usar tudo o que os testes Q ou oferecer dentro Python. De repente, isso te deu. Eu designers trancam mais controle e flexibilidade lá, vocês porque eles não precisavam mais usar a biblioteca Comandos, que era um invólucro. Bonitinho. De qualquer forma, isso significava que você tem muito mais controle sobre cada coisinha que você criou neste primeiro projeto. Eu vou estar mostrando a vocês como criar vocês com a biblioteca de Comandos Maya e nos próximos dois projetos oferecem que vamos mudar para usar a torta fofa concorrentes er, os navios com Maya chamado lado da pizza, também 33. Como obter dados para a função Twen: começaremos criando nosso script que podemos importar para o Maya. Então eu clique em seu diretório de scripts, vendo Novo e Python arquivo, e vamos nomear este tweener que eu doc pie. Vamos começar criando entre a função que podemos usar dentro. Admire. Então, digamos de Maya Importar C. M. D. S. Então vamos criar a função Interpolação. Então dizemos morte entre outra vez. Morte é curto para definir entre é o nome da nossa função e no príncipe vê Vamos dar os parâmetros que precisamos. Em primeiro lugar, entre ng, precisamos saber qual porcentagem entre dois. Então precisamos saber qual o objeto entre. Mas vamos fazer disso um padrão de nenhum. Queremos saber quais atributos entre, mas bem mais uma vez dizer que isso não é nenhum. Finalmente, podemos dizer que a seleção é igual a true, porque, por padrão, queremos que a função Interpolação funcione na seleção atual. Mas antes de continuarmos, acho que é importante mostrar que podemos ter argumentos conflitantes aqui. Se eu disser que a seleção é igual a false e não especificar objeto, não terei nada para ser executado. Então vamos colocar um erro no início do for code, para que não gastemos tempo executando tudo apenas para descobrir que não poderíamos executar em primeiro lugar. Então eu vou dizer se não sobre J e não seleção, então vamos dizer erro de valor de pastagem e vamos dizer nenhum objeto dado a Tween. Então, se eu rodar isso agora, você pode ver que há pelo menos um argumento, então vamos dar uma porcentagem. E a única razão pela qual eu sou capaz de executar isso dentro do charme de pizza agora é porque eu não estou usando nenhuma biblioteca de comandos. Então, digamos que entre o que dizemos, seleção é igual a falso. E agora, quando você executa isso, você pode ver que ele diz que nenhum objeto foi dado a Tween. Agora, como é que este cheque funciona? Bem, nós estamos dizendo, se não objeto, que significa que se objeto é igual a falso agora, objeto não é igual a quedas, mas nenhum é falso ish, que significa que se eu converti para um seria falso e da mesma forma a seleção é falsa. Então estamos dizendo se não objeto é verdadeiro, que significa que o objeto é falso e não a seleção é verdadeira, que significa que a seleção é falsa. Então vamos levantar, avaliar erro avaliar erro avaliar erro é um erro que será imediatamente apresentado a qualquer pessoa chamando nossa função e nos dará detalhes sobre o que deu errado. Vamos dizer que nenhum objeto dado entre e levantar meios para levantar esse erro imediatamente e parar execução de seu código. Próximo. Você quer dizer que se nenhum objeto é dado, então se não o b j, vamos dizer O b J é igual a comandos tem LS e seleção é igual a um. Desculpe, seleção é igual a verdadeiro. E então vamos obter o primeiro objeto na seleção. Não, vamos comentar isso tão bem quanto vamos. Então é dizer, se objeto Se LBJ não é dado e seleção, ele é definido como falso erro cedo. Se não houver nenhum O. B. J for especificado, obtê-lo a partir da primeira seleção. Em seguida, precisamos fazer a mesma coisa para atributos para que possamos descobrir quais ADDERs usar. Então vamos dizer se não AdDERs. AdDERs é igual a comandos. Obteve somador lista porque queremos listar os atributos que estão disponíveis neste objeto. Então vamos dizer objeto e Keeble é igual a verdadeiro. Então nós vamos Então nós vamos consultar o objeto que temos a partir da seleção e nós pegamos o primeiro item na seleção porque esta é uma lista. Então vamos listar todos os atributos que são capazes. Então agora vou imprimir o O.B. O.B J e os ADDers só para ter certeza de que estamos pegando as coisas certas. Então, de volta a Meyer, vou fazer um tweener de importação para você. Ouvi dizer que é um nome para o módulo. Vou dizer Recarregar, limpador. Você eu e eu devo dizer, tweener você eu doc Tween e eu vou dar-lhe alguma porcentagem imaginária de 50. Então, se eu nunca nele, vamos ter todos esses atributos que podem ser animados em P Cube um. Neste caso, é tudo na caixa do canal. Então agora temos que descobrir exatamente o que precisamos fazer para criar uma interpolação. E isso pode ser uma lógica ligeiramente avançada. Então, primeiro de tudo, precisamos encontrar nossa hora atual. A hora atual depende do controle deslizante aqui. Se estivermos aqui, bem, entre esta chave e esta chave. Mas se por aqui, bem, entre as outras duas chaves, deixe-me apenas me livrar das chaves em outros canais para que possamos apenas focar no Canal X de volta no charme de pizza. Vamos pegar a hora atual da Maya, Hui disse. A hora atual é igual a comandos dot carton time e você verá uma consulta é igual a true porque não queremos alterá-la. Nós não vamos fazer uma consulta. Então, agora vamos nos certificar de que estamos chegando no tempo correto. Então dizemos Imprimir cartão no tempo e de volta em Maya. Se rodarmos isso, você pode ver a hora atual é 28 porque o quadro direito 28. Se eu for para o quadro 80 e executá-lo, ele diz “Frame 80”. Em seguida, precisamos fazer é passar por cada atributo em Procurar a chave anterior e seguinte. 34. Como configurar chaves com a função Twen: primeiro, vamos criar um loop de quatro exatamente como nós criamos quatro Luke antes vamos dizer quatro no ER em AdDERs, onde AdDERs é uma lista. Agora, antes de fazermos isso, é importante mencionar que se List Adder não recuperar nenhum atributo do Keeble, ele não retornará sua lista. Maya irritantemente retorna um tipo de freira, o que significa que podemos usar um loop for e nosso código irá errar por enquanto. Tudo bem porque um erro é esperado, mas voltaremos a isso mais tarde. Então, primeiro, vamos criar o completo em seu nome. Então vamos dizer Adder completo e novamente eu vou substituir cordas e eu vou dar-lhe sobre J um somador. Então nós vamos substituir este percentual s por O.B. O.B J e este percentual s com o somador em nosso loop atual. No símbolo percentual é simplesmente dizê-lo para substituir as coisas à esquerda com as coisas à direita. E a razão pela qual estou criando o completo em seu nome é porque muitos dos comandos do Maya exigem esse formato, e em vez de criá-lo em cada chamada de comando, é melhor apenas criar aqui. Então podemos reutilizá-lo mais tarde. Por enquanto, vamos obter uma lista de todos os quadros-chave nos atributos. Então dizemos quadros-chave é igual a comandos. Ducky quadros sombreador. consulta completa é igual a true, e o que isso vai fazer é nos dar de volta uma lista de todos os quadros-chave na foto para os atributos específicos. Então, se salvarmos quadros de chave de impressão e voltarmos para Maya e executarmos isso, ele diz, Modelo tem os atributos, quadros-chave. Então fizemos um erro de digitação em algum lugar. Molduras históricas muito simples. Chama-se Key Frame novamente. Limitei isto a procurar a documentação do lamaçal. Então vamos voltar para Maya e executar isso novamente, e você pode ver que todos os outros atributos de cabo nos dão de volta nenhum em vez de uma lista, enquanto que o único atributo que pode ser chaveado nos dá de volta os números de quadros para as chaves. Então não faz sentido continuar o resto da nossa lógica se não tivermos quaisquer quadros-chave no meio. Então o que eu vou dizer é, se não os quadros-chave, em outras palavras, se os quadros-chave não forem verdadeiros, então vamos continuar para o próximo objeto. E o que isso diz ao loop é que se essa afirmação não for verdadeira, então continue para o próximo objeto e pule tudo abaixo de mim. Isso pode nos ajudar a economizar tempo porque não fazemos. Não estaremos executando a lógica em algo que não precisa dela. Então agora precisamos obter o nosso quadro chave anterior. Então vamos coletar todos os quadros-chave anteriores. Então agora vamos olhar através de todas as chaves na lista de quadros de chaves, então vamos dizer quatro K em quadros-chave. Se K é menor que o tempo atual, que significa que é um quadro-chave anterior, vamos dizer quadros chave anteriores ponto upend que. Agora, antes de continuarmos, vamos apenas comentar isto eu vou dizer, construir o nome completo fora dos atributos com seu objeto. Eu vou dizer, obter os quadros-chave fora dos atributos neste objeto. Se não houver quadros-chave, continue e assim por diante e assim por diante. É importante fazer isso para que você possa voltar e referenciar seu código e entender o que está acontecendo. Normalmente, eu não vou comentar cada linha, mas eu vou comentar um grande pedaço de código e você pode ver isso em meus exemplos de hub get para este vídeo. Eu estou ficando um pouco zeloso com meus comentários para que eu possa demonstrar o que está acontecendo. Muito bem, agora vou apresentar-te um conceito de compreensão Kalis. Aqui, você pode ver que criamos uma lista na lista vazia, e então nós passamos por todos os quadros-chave em quadros-chave para cada chave. Se for menor do que a hora atual, então vamos adicioná-lo à lista de quadros de chaves anteriores. Mas isso é 1234 linhas de código apenas para descobrir quais quadros-chave estão antes da hora atual . Então Python tem um conceito, a compreensão da lista. Simplesmente podemos usá-lo assim mais tarde. Quadros principais é igual ao quadro quatro quadros em quadros-chave. Efraim é maior do que o tempo atual, e isso é exatamente o mesmo que fizemos aqui apenas em uma linha de código. Então estamos dizendo para enquadrar quadros-chave da mesma forma que fizemos quatro quadros K e chave. Na verdade, deixe-me renomear este K dois quadros para que você possa enquadrar e você pode ver que é um texto semelhante . Então estamos dizendo para enquadrar quadros-chave, Efraim é maior do que o tempo atual. Adicionar quadro a esta lista vazia. É um pouco de uma sintaxe confusa, mas pode ser muito útil se você quiser apenas fazer declarações simples se dentro de um loop de quatro e, em seguida, construir uma lista a partir dele. Além disso, compreensão da lista é como este são muitas vezes fomentados do que executar uma lista completa como esta. Agora precisamos verificar se não há amigos chave antes ou depois. Isso é muito raro, mas ainda vale a pena verificar. Então dizemos, se não os quadros anteriores e não os quadros-chave continuam. Então, estamos dizendo, se não houver quadros-chave anteriores e não houver quadros-chave posteriores, então continue. A palavra-chave e aqui significa que tanto isso quanto isso devem ser verdade. Então ambos os amigos chave anteriores devem estar vazios e amigos chave mais tarde devem estar vazios antes de continuarmos para o próximo item na lista e continuar apenas significa que estamos pulando toda a lógica que irá seguir isso para que possamos começar novamente com o próximo objeto na lista. Por exemplo, isso continua se for acionado, vamos pular tudo isso e vamos começar de novo a partir daqui com o próximo item na lista AdDERs. Em seguida, precisamos descobrir qual é o nosso quadro anterior mais próximo. Então, dizemos se quadro de chave anterior o modo que é, se houver quadros de chave anteriores do quadro anterior é igual a Max off os quadros anteriores . Outro tipo de aqui. Então, eu só vou consertar isso. E o que isso vai fazer é passar por todos os objetos na lista de quadros chave anterior, e vamos obter o valor máximo uma queda deles. Se precisamos encontrar o mais próximo dos quadros anteriores, precisamos encontrar o que é mais alto, que é, portanto, o mais próximo da saúde dos EUA. Se não houver quadros-chave anteriores, diremos que o quadro anterior é igual a nenhum, o que significa que ele não foi definido novamente. São quatro linhas para uma avaliação tão simples. Podemos nos condensar em uma linha, então dizemos que o próximo quadro é igual aos homens depois. quadros-chave, se houver quadros de chave posteriores, não serão nenhum. E esta é a mesma lógica. Estamos vendo que, se houver quadros-chave posteriores, assim como dissemos, Se houver quadros-chave anteriores, o próximo quadro será igual ao mínimo fora dos quadros-chave posteriores que nos darão o quadro mais próximo do nosso hora atual. Caso contrário, novamente, como a declaração mais aqui, diremos que o próximo quadro será nenhum. E este é um bom recurso dentro do Python, onde podemos condenar simples se else declarações até uma única linha. Então vamos imprimir o anterior livre e o próximo quadro e voltar para Maya para ter certeza de que tudo está funcionando. Então, se eu rodar isso agora, você pode ver lá nos dá 47 113. Na verdade, se eu selecionar este quadro, ele era Frame 113. E se eu selecionar este quadro, é livre e 47. Mas o que acontece quando estamos num quadro específico e depois o executamos? Isso nos dá um, e ela e 13 que é perfeito, está nos dando dois quadros anteriores e o próximo quadro. E se não houver mais quadros anteriores? Vamos para o primeiro quadro e executá-lo. Agora temos nenhum e 47 e isso é porque estávamos dizendo que se não há mais quadros anteriores , então disse para nenhum E novamente, se dissermos que não há mais quadros depois disso e depois executá-lo, estamos novamente dizendo que os próximos quadros-chave não são nenhum. Queremos dizer que se não houver mais valores após ou valores normais antes do real simplesmente ignorar entre ng operação eu não mudar a chave porque é um extremo. Então, digamos que se não anterior, mantenha quadro anterior ou não. Próximo quadro. Continue de novo. Isso é semelhante a aqui em cima, onde estamos vendo se não há quadros-chave anteriores e não há quadros de chave posteriores continuam. Mas agora estamos usando a palavra-chave ou ou significa que, se não houver quadros anteriores ou não há próximo quadro, então continue. Qualquer um deles pode ser verdadeiro para satisfazer isso se declaração causando isso continuar a disparar seguida, precisamos obter o valor em ambos o quadro anterior no próximo quadro. Bem, digamos que o valor anterior é igual a comandos. Obter Adder porque nós estamos indo para obter os atributos e vai dizer em sua plenitude. E então vamos dizer que o tempo é igual ao quadro anterior sobre o que isso vai fazer é que eles vão consultar os atributos no momento determinado. próximo valor é ouro para comandos. Mas chegar às Urgências e, em seguida, vamos dizer ful exterior novamente porque queremos uma consulta que e desta vez você vai dizer que o tempo é uma cultura próximo quadro. Então, agora vamos apenas verificar se estamos recebendo os valores corretos em cada um desses quadros. Então vamos voltar para a Maya e vamos fazer isso aqui. Se eu executar isso, ele nos dá menos 29 algo o outro, que, como você pode ver, é o valor aqui em cima como também dizendo que o próximo valor é 1.344 que é. Então podemos dizer com confiança que estamos recebendo os valores corretos. Então, o que precisamos fazer em seguida é descobrir a diferença entre o próximo valor e o valor anterior. Então dizemos que a diferença é igual ao próximo valor Linus valor anterior, e vamos dizer que a diferença ponderada é igual a tempos de diferença. A porcentagem que nos foi dada dividida por 100 quando zero, e isso nos dará a quantidade que precisamos adicionar ao valor anterior para obter o nosso valor atual. Então, vamos dizer que o valor atual é igual ao valor anterior mais a diferença esperada. E, finalmente, dissemos que Comandos define quadro-chave porque você deseja definir um quadro-chave. Obviamente, com esse novo valor, vamos dizer em sua plenitude porque esses são os atributos que queremos mudar. Vamos dizer que o tempo é igual ao tempo atual. Vou dizer que o valor é igual ao valor atual. E agora, se você voltar para Maya, vamos ver se tudo o que escrevemos funciona. Então nós temos este ano, vamos colocar em 20, o que significa que eles serão 20% dessa maneira, onde zero significará que é igual a isso em 100 espaço igual a isso. Então vamos fazer isso e lá vai você. É tendencioso 20% do caminho, e nós o executamos de novo, como era. Zero agora é tendencioso zero, e se dissermos que 100 é viés 100. Mas um preconceito mais agradável provavelmente bateria 90 o que nos daria uma pequena queda em direção a ele. E aqui nós podemos dizer 30 e se você executá-lo, é por um 30% do caminho menos seus 10% em vez disso e nos dá uma boa queda. E você já pode ver como isso pode nos ajudar com nossas curvas. Então, neste vídeo, passamos por cima de como simplificar nosso código usando a compreensão de lista e em linha. Se as declarações e nós criamos nossa função Interpolação no próximo vídeo, vamos passar sobre como criar o “eu”. 35. Como criar uma interface do usuário: Acho que este vídeo vai criar o nosso tweener. Você eu primeiro vamos olhar para a documentação para o comando da janela. Iremos ajudar. Vamos para o meu rabo de referência de script Python Common Reference. Agora vamos para as janelas e por aqui você pode ver o comando janela Se nós percorrer todo o caminho para baixo e há muitos parâmetros, você pode ver este exemplo daqui. Vamos copiar isto e voltar para a Maya. Vou acelerar isto aqui e aumentamos o tamanho do meu guião e depois vou fazer isto. E o que você vê aqui é uma pequena janela que ela criou. Agora deixe-me guiá-lo através do código para esta janela. Dizemos que criamos uma janela usando os comandos, o comando janela. Damos-lhe um título, que é nome longo, Como você pode ver aqui, podemos dar-lhe uma Nikon e algumas dimensões. Finalmente, damos a ele um layout de coluna, que é apenas um layout vertical que diz, ao adicionar objetos através da janela, colocá-los verticalmente para baixo. Criamos um botão que diz “Não faça nada”. Outro botão que diz fechado com um comando para excluir o você eu finalmente disse seu pai para a janela Maya, que é denotado por ponto ponto Isso não é importante. E então vamos dizer-lhe para mostrar a janela que criamos aqui. Isto parece bem simples. Vamos começar a criar nossa própria janela agora. Vamos fechar isso. Vou limpar isso e diria entre a janela. Então, obviamente, se eu executar isso, ele vai dizer que a janela Interpolação não existe. Então, vamos voltar ao charme de pizza e criar janela de interpolação. Criaremos uma cláusula chamada Janela de interpolação e herdaremos do objeto e, por enquanto, não faremos nada. E quando você não faz nada, você simplesmente escreve a palavra pausa. Pausar significa que você vai fazer uma pausa e não fazer nada. Eu quero voltar para o meu, uh, eles estão nisso. Não vai reclamar mais, mas também não faria nada. Então vamos mostrar a janela primeiro. Vamos criar o método show, e novamente criamos uma cláusula. Mas usando a palavra panos, nomeamos janela Tween e herdamos do objeto. Então nós, em Dent em você pode criar métodos que são funções dentro do pano sobre o semelhante a todas as funções aceitas. Pegue a auto-guarda, exceto que eles tomam o auto-argumento primeiro, que lhe diz como se referir a si mesmo. Então, quando você diz show, eu vou dizer, Vamos, janela de neve, janela de neve, assim como fizemos é igual a janela de tweener e, em seguida, eu vou dizer comandos a janela de show por padrão. Isso mostrará a janela anterior que criamos. Então, se eu voltar para Maya e eu digo criatura, você está entre janela ponto show e se eu rodar isso ele abre em um monitor mais suave esta grande janela em branco com a palavra Tween uma janela lá. Se eu rodar isso de novo, ele abre outra janela. Eu não quero isso. Quero ter certeza de que apenas uma janela pode existir de cada vez. Então o que fazemos é voltar ao charme da torta. Vou criar uma variável no nível do armário. Isso significa que é uma variável que não será alterada conforme as cláusulas em execução. Então eu vou dizer entre a sua janela porque esta é uma variável que uma estática Isso significa que não vai mudar, não importa o que eu possa me referir. Voa só dizendo o nome da janela. Mas agora vou fazer algo diferente. Vou dizer que se essa janela já existir, vamos excluí-la. Então dizemos, se comanda a janela novamente, Se você criou algo com um comando, muitas vezes você pode consultá-lo novamente com o mesmo comando para revender. Consulta de nome de janela FTA é igual a true e existe igual. Verdadeiro. Então o que estamos dizendo é que se uma janela com esse nome de janela existe, então vamos fazer algo com ela. E nós vamos pedir desculpas. Vamos dizer que os comandos não te apagam. Eu próprio o nome da janela, e também você não pode ter um espaço no nome da janela. Então vamos nos livrar desse espaço. E quando você voltar para Maya e nós executamos isso, você pode ver que ele cria minha interpolação uma janela. E se eu pudesse e se eu rodar isso de novo, ele o exclui e recria novamente para mim. Então vamos voltar ao Pie Charm. Então agora eu quero realmente colocar as coisas dentro da minha janela antes de mostrar a janela. Vamos chamar um método que vamos apenas criar ouro construir você I Este é um método que realmente desafiando a nós mesmos, e novamente ele toma auto como seu primeiro argumento, então seu nariz para se referir a si mesmo primeiro, assim como no exemplo, Vamos criar um Colum Lee fora novamente. Um layout de coluna significa apenas que todos os objetos que você adicionar a esta janela serão adicionados verticalmente , um abaixo do outro. Não, vamos criar um rótulo de texto. Vai dizer ao nosso usuário como usar, não é? Eu vou dizer Use um controle deslizante para definir entre a quantidade e você voltar para Maya e, em seguida, executar este. Você pode ver que agora temos pouco texto. Isto é usar um controle deslizante para definir entre a quantidade. Agora o que eu quero fazer é que eu quero adicionar a Crianças, também, não é? Eu quero anúncio o controle deslizante e verdade certo? Não adicionarei o botão de reinicialização. Isso significa que o layout da coluna não funcionaria muito bem porque iria adicioná-los um abaixo do outro. Então precisamos fazer é criar o rolando para fora a rolagem, Ao contrário do layout da coluna, vai colocá-los horizontalmente. Então nós dizemos Ro igual comandos estão rolando para fora, e nós dizemos número de colunas é igual a dois porque precisamos ter duas colunas dentro dele. Caso contrário, ele não vai saber o quão largo para fazer-se, e então nós criamos um pouco, e eu vou armazenar o controle deslizante em nós mesmos para que possamos acessá-lo mais tarde. Somerset comanda o floats mais leve porque este é um controle deslizante com valores flutuantes novamente, números flutuantes com pontos decimais. E devo dizer que os homens são iguais a zero porque esse é o valor mínimo. Max é igual a 100 e nosso valor padrão. Vamos colocar um quadrado no meio aos 50. E para o passo, digamos um. Isso significa que ele pode subir e descer por um passo de cada vez e mudou de comando. Vamos dizer a ele para chamar entre a função. O que isso significa é que criamos um controle deslizante flutuante e fomos designados para auto-dúvida. Slider. O controle deslizante flutuante terá um valor mínimo zero um máximo 400 um valor de 50. Por padrão, ele vai subir e descer por um de cada vez, e sempre que mudou, ele vai chamar entre comando em vez. Em seguida, vamos adicionar um botão de reset muito doente. Amman não abotoar e veremos. Rótulo é igual a entre aspas. Reinicie e você vai se sentar. Comando é igual a auto reset, e este é um método que ainda não desenvolvemos. Então vamos fazer essa morte e vamos dizer “Reset”. E depois vamos dizer Pausa porque não queremos fazer nada. No entanto, antes de continuar, gostaria de mencionar por que, quando estou dando essas funções para entrar e mudar de comando, eu não estou dando parênteses. Se eu fosse dar parênteses, ele realmente executaria disfunção em vez de dar a função sem que o príncipe vê estavam realmente dizendo a ele para executar esta função em vez de executado imediatamente. Vamos tirar essa pausa e dizer, Imprimir redefinindo você. Vamos voltar para a Maya. Feche meu velho você eu e executar o novo e você pode ver que temos o botão de reset e vamos clicar nele para ver se ele funciona. Então, quando eu clicar nele, ele diz, leva exatamente um argumento, mas dois foram dados. Isso ocorre porque os botões do Maya também enviam um valor extra para qualquer função que eles estão chamando . Nós realmente não nos importamos com isso, então vamos capturar isso dentro de uma variável ARDS. O que isso significa é que quaisquer argumentos extras que são dados para a nossa função serão armazenados dentro de nossos ovos, ea estrela apenas significa tudo o que não é especificado nesta função bem apenas restaurado nos ovos de arte. Então, se eu fosse assim, se eu dissesse agora, imprimir nossos ovos quando voltarmos é realmente uma lista do que é preciso. Então, quando eu agora clicar em Redefinir, ele funciona em. O que você pode ver é que o botão está enviando uma chamada de valor false, e nós não nos importamos com esse valor. Por isso vou pô-lo nos nossos ovos. Com o asterisco ligado. Eles dirão para despejá-lo nesta variável, que nunca precisamos usar. Finalmente, vamos dizer a um botão de reset para realmente fazer alguma coisa. Então, queremos redefinir o controle deslizante então vamos dizer, comanda o flutuador mais leve porque usamos controle deslizante à tona para criá-lo e vamos dizer auto melhor controle deslizante, porque isso é um controle deslizante que queremos editar. Como você pode ver na exibição, você dirá que a edição é igual a true e salvaremos o valor igual a 50. Então, se você voltar para Maya e executar este, que irá novamente fechar, você é que eu e recarregá-lo. Quando eu mudo meu controle deslizante, você pode ver que ele está criando uma chave aqui porque ele está chamando nossa função de interpolação todas as vezes. Então, se eu fosse para limpar todas essas chaves, você já criou e eu arrastar o controle deslizante que funciona. Os controles deslizantes conectados à nossa função Interpolação, e isso ocorre porque usamos o comando change quando as alterações de valor serão chamadas entre . E se tivéssemos redefinido, mudaremos o controle deslizante para o valor 50, mas ele não acionará o comando change. Isso é realmente útil porque isso significa que eu posso colocar o controle deslizante de volta de 50 sem realmente definir uma tecla. Em seguida, precisamos adicionar o botão Fechar. Agora. O problema com o botão Fechar é que ele precisa estar abaixo do controle deslizante e do botão de reinicialização . Mas tudo o que somos agora será adicionado ao lançamento que criamos aqui em cima. E isso porque a maneira como os comandos do Maya funcionam é que as lojas, o layout perdido que ele criou e qualquer coisa que você faz fora é adicionado a isso. Da mesma forma, quando você criou o layout da coluna, tudo o que nós criamos depois que ele foi adicionado ao layout da coluna, incluindo estão rolando para fora. Então o que precisamos fazer é dizer a Maya para definir o pai atual para a coluna, e então podemos criar nosso botão exatamente como fizemos acima. Podemos sentar comandos em um botão e você verá um rótulo igual a fechar. E então diremos que o Comando é igual a auto ponto próximo novamente. É um método que não criamos, então vamos criá-lo. Então dizemos que a morte se aproxima novamente. Self é o primeiro argumento, e eles dirão Comandos que excluem você. Eu apenas como fizemos acima e vamos usar o nome da janela que usamos. Então, se você está caindo de perto, você saberá que isso não vai funcionar. Quando voltarmos e você executar isso e apertar o botão de fechar de novo, eu ficarei por perto. Leva exatamente um argumento para dado se você está pinging. E se você estiver caindo de perto, lembre-se que eu coloquei isso aqui de novo. Eu preciso colocar este ano porque o botão fechar está enviando os mesmos argumentos que queremos ignorar. Então, agora, se eu voltar para Maya e eu executar isso, nós temos uma janela com ele. Texto sobre como usá-lo. Quando arrastamos o controle deslizante, ele muda a tecla ou define uma nova chave. Se tivéssemos redefinido, ele reiniciará o controle deslizante. E se tivéssemos um doente próximo, feche a janela. E se nós executá-lo novamente e nós criamos duas instâncias se ele só vai acabar com uma janela novamente. Era importante para nós criar a função Tween primeiro, porque é mais fácil testar o código sem um u I. E isso também significa que se você quiser chamar apenas eu função dentro de outra biblioteca você não precisa do U I junto com ele é sempre importante para separar seu eu e seu código lógico. No próximo vídeo, vamos ver como reutilizar essa janela para criar e configurar nossas engrenagens. 36. Como utilizar nossa interface para o criador de engrenar: Theo thin Este próximo vídeo nós vamos estar indo sobre como criar uma base. Você I que podemos reutilizar tanto para o nosso tweener e para a nossa criação de engrenagens. Você, por quê? Primeiro, vamos criar um novo script que vai chamar reutilizável você I nesta importação real entre função de nosso tweener você eu também vou dizer de tweener você eu importar Tween e o que isso significa é que a partir do tweener você por que nós construímos aqui? Podemos importar apenas entre a função e nada mais. Este é o lado positivo que estamos importando, exatamente o que precisamos. Mas tem uma desvantagem que já não temos o espaço de nome agradável antes de organizar nossas funções. Em seguida, vamos importar a cláusula de engrenagem Então vamos dizer da classe de engrenagem Creator importação engrenagem. E agora vamos criar nossa janela base para que pudéssemos realmente copiar um monte de para um código de janela de seu tweener Você. Por quê? Então vamos nos abrir entre você eu e copiei a aula? Eu vou nos acompanhar e um espelho renomear isso para janela base. Fui renomeado o nome da janela para a janela base novamente. Você não pode usar bases aqui está nos dizendo que não temos a biblioteca de comandos. Então, vamos importar isso. Então, a partir de comandos de importação do Maya e agora está feliz novamente. Vou manter toda essa funcionalidade com verificações da janela existente. E se isso não acontecer, então ele se exclui. Eu vou manter o método da roupa, mas o reset e a construção você eu vou ser diferente entre os dois. Então, vou dizer pausa para os dois. E o que isso vai fazer é que se voltarmos para a Maya e você vai dizer importação reutilizável você eu recarrego. Reutilizável você eu reutilizável você. I ponto baseado janela não mostra em uma corrida que ele irá criar a nossa base onde nenhum melhor realmente fazer muito mais. Então agora vamos voltar e recriar nossa janela de animação. É o que podemos fazer é voltar para o nosso tweener você I e apenas copiar a compilação você e o reset e a função de reset. Então nós vamos dizer, mais, mais, Screener, você eu e nós vamos herdar da janela base novamente. O que isso está fazendo é dizer que vamos reutilizar toda a estrutura que a janela base tem e apenas redefinir as partes que precisamos. Teoh, as partes que precisamos fazer nosso redefiniu o nome da janela entre a janela dela e, em seguida, vamos apenas copiar o build você I e o código de reset de um exemplo anterior. Então, agora, se você voltar para Maya uma janela baseada em respostas, eu vou importar uma janela de interpolação e executá-la. Ops, acho que esqueci um tweener. Você eu sinto muito. E se eu rodar isso, ele cria a janela. Se eu arrastar o controle deslizante, você pode ver os valores mudando aqui. Se eu reiniciar um pescoço e fechar Perfeito. Agora, se eu voltar aqui, eu sei que quer criar um para uma engrenagem. Então o que eu vou fazer é eu vou criar um novo panos. Quero dizer, ligue e nós vamos chamar esta janela de engrenagem ou vamos chamar o equipamento você I e nós vamos novamente herdar da janela base. Você vai dizer que o nome da janela é igual a, e vamos chamá-lo de janela de engrenagem novamente. Não é permitido espaço, assim como fizemos para a classe A. Queremos manter alguns valores. Então eu vou criar o meu nele novamente. Mais uma vez, Este é sublinhado duplo nele. Sublinhado duplo, e eu vou apenas criar uma variável de espaço reservado chamada engrenagem Self Dot que tudo definido para nenhum. Então eu quero redefinir a compilação você I. Então primeiro, vamos criar outro layout de coluna, assim como fizemos antes, e vamos armazenar isso e invariável de coluna de cores. Então precisamos criar um rótulo para dizer ao nosso usuário como usar isso. Então, vamos dizer componentes ou texto, e vamos dizer rótulo é igual para usar o controle deslizante para modificar a engrenagem. E agora vamos criar o lançamento, porque o que eu quero fazer é ter quatro objetos aqui rolando para fora. Quero um botão que diz “Faça o outro diz “Reset”. Finalmente, eu quero o controle deslizante e, em seguida, eu quero um pequeno objeto de texto. Lá vai nos dizer o valor fora do controle deslizante, então vamos primeiro criar o objeto de texto de volta em volta de pizza. Digamos que eu mesmo. O rótulo, porque eu vou editar este comando bateu rótulo de texto é igual a 10 e eu estou mantendo-o como uma variável auto porque eu quero acessá-lo mais tarde em seu dizer auto para. Um controle deslizante é igual à classificação de comando menor porque eu não quero valores flutuantes. Quero valores inteiros. Desta vez eu vou dizer um valor mínimo de cinco para que o nosso concreto deslizante menos de cinco dentes e um máximo de 30 Vamos dizer que o valor é igual a 10 e passo é igual a um. Então valores padrão 10 e eu vou subir e descer por um. Mas desta vez, em vez do comando change, eu quero usar o comando drag. Isso significa que o controle deslizante vai no trato da atualização como arrastamos, o que é meio legal. E agora vamos criar essa função. Então, vamos dizer engrenagem modificada e o que o isolador faz é que ele realmente nos envia o valor do controle deslizante, que irá armazenar em um valor chamado dentes. E simplesmente por agora, vamos apenas imprimir esse valor e voltaremos mais tarde a essa função. Em seguida, vamos criar um botão que diz Fazer engrenagem. Então dizemos rótulo é igual a fazer ano, e damos o comando a si mesmo. Não faça o seu vamos criar esta função aqui e novamente. O botão nos enviará valores inúteis para a variável são ovos. Então, vamos armazenar lá e vamos imprimir engrenagens de fabricação. Finalmente, vamos criar outro botão chamado Reset, e ainda vamos rotular é igual a reset. E para o comum. Vamos dizer self go reset, e precisamos redefinir este ano também, porque ele não está definido porque ele não faz nada em nosso pai. Mais e mais uma vez, usamos estrelas nossos ovos para garantir que qualquer uma das variáveis que o bucking nos dê Ari jogado fora na variável artes e você dirá, redefinição de impressão. Próximo. Precisamos redefinir nossos pais para a coluna. Então dissemos, comanda um conjunto pai chamá-lo e comanda um rótulo de botão é igual a fechar comando igual roupas escuras auto . E não precisamos redefinir isso porque o salário definido na janela base aqui em cima. Se você tem prestado muita atenção ao gráfico de pizza, você vai notar que ele dá esses pequenos símbolos em torno de certos métodos, porque ele está nos dizendo que estes ar sobrepostos a partir da janela base. Se você voltar para Maya e lançar o equipamento, você I dizendo reutilizável você. Eu comecei aqui você. Eu parênteses não mostrar e se correr, L aguda vai criar a janela de engrenagem, mas você pode ver que algo está errado. Os campos ainda estão aparecendo verticalmente. Vamos voltar e ver o que aconteceu. Isso é porque eu nunca criei o layout da estrada. E novamente, ele é apenas adicionado uma e outra vez por baixo da coluna. Então o que eu preciso fazer é antes deste rótulo que diz 10 Vamos criar o lançamento Então nós dizemos , comandos completamente para fora. Neste momento. Temos quatro objetos que queremos abaixo. Era um número de colunas igual a quatro, e agora se você voltar para Baia e executá-lo, você pode ver que eles estão agora dispostos horizontalmente em vez de verticalmente. Se eu clicar em fazer engrenagem, é um ano de criação clique reset, ele diz redefinir. E enquanto eu deslizo isso, você pode ver que ele está imprimindo os valores do controle deslizante. Então vamos fechar isso e voltar aqui e podemos começar a implementar isso. Então primeiro precisamos criar a engrenagem para dizer real primeiro precisamos obter o valor do controle deslizante, então vamos dizer comandos em controle deslizante porque criamos o controle deslizante com um controle deslizante int, e precisamos consultá-lo. Então dizemos “eu”. Uma consulta deslizante é igual a true porque nós vamos consultá-la. Eu vou dizer valor é igual a True, porque nós vamos consultar o valor. Isso nos dará um valor inteiro para usar para nossos dentes. Em seguida, vamos criar uma instância de engrenagem. Então, dizemos que a engrenagem auto-cavada é igual a engrenagem, e esta é uma engrenagem que importamos aparecer de nossa engrenagem anterior. Exemplo. Agora que fizemos isso, poderíamos dizer equipamento de auto-drogas, Doc, criar engrenagem e você vai dizer dentes oops é igual a e vamos dar-lhe o valor que temos do controle deslizante. Então, agora, se você voltar para Maya e executar isso e me deixar colocar puxar meu ah, deixe-me apenas puxar minha perspectiva. Você aqui, Nuffer, dirija isso e eu digo fazer ano. Você pode ver que ele é feito de equipamento bem ali para nós. Mas se eu mudar, o controle deslizante não faz nada ainda. E se eu clicar em redefinir, ele também não faz nada, então vamos voltar a seguir. Temos de lhe dizer como modificar as engrenagens. Nós diremos que se houver uma engrenagem auto cavada aqui, bem, bem, digamos auto engrenagem que muda os dentes e diremos que os dentes são iguais ao valor que temos outro. O que estamos fazendo é que estamos dizendo que se a engrenagem existe por padrão, não há nenhuma engrenagem porque nós dissemos a nenhuma. Então, se ainda não temos um equipamento, ele não vai fazer nada. Mas se tivermos uma engrenagem que foi designada aqui em cima, ela usará o método de troca de dentes na engrenagem que criamos. Você pode ver esse método aqui no criador da classe Gear e então, se você voltar para Maya e vamos fechar isso você e correr novamente, se eu arrastar o controle deslizante, nada acontece. Deixe-me apagar esta engrenagem. Se eu criar uma nova engrenagem e então eu arrastei um controle deslizante, você pode ver que é tempo real atualizando nossa engrenagem com um número de dentes. Isso é muito legal, mas ainda não está atualizando o campo ainda um texto aqui. Vamos voltar para Pie charme e corrigir isso assim fora deste, se declaração queremos sempre assim que queremos sempre mudar o campo de texto, independentemente se houver uma engrenagem ou não. Então, colocamos fora da declaração S e dizemos comandos doc texto e damos a ele o rótulo que criamos anteriormente rótulo Self Bell aparecer e dizemos editar é igual a true e dizemos rótulo é igual a dentes. Bem, vamos voltar e tentar isto. Então, se eu voltar para Maya e agora eu arrastar o controle deslizante, você pode ver os valores mudando. Se eu disser para fazer engrenagens, criaremos mais um ano. Deixe-me apagar os dois. Eu vou dizer fazer aqui e você pode ver que ambas as engrenagens Peter mudando eo U I. Finalmente, precisamos fazer o botão de reset funcionar. Então vamos voltar para Petra. E tudo o que temos a dizer é engrenagens de auto-cuidado. Nenhum, porque não queremos mais segurar a engrenagem para que o botão Make Gear crie uma nova engrenagem. Queremos redefinir Thean Slider para que nos demos um controle deslizante. Editar é igual a verdadeiro, e nós devolvemos o valor de 10 e nós doentes quantidades ou texto auto. O rótulo é igual ao rótulo verdadeiro igual a 10 porque o que estamos fazendo aqui é que estamos vendo Estamos redefinindo-o para que não estejamos segurando uma engrenagem, diz que o controle deslizante não está mais ligado a uma engrenagem. Estamos alterando o valor padrão do controle deslizante de volta, e estamos alterando o texto padrão fora do rótulo para que ele corresponda ao controle deslizante. Não, quando você voltar para a Ah, Maya e executar, deixe-me deletar isso. E agora eu dirijo. Se eu fizer uma engrenagem e eles usarem um controle deslizante, o chumbo interativo muda essa engrenagem. Se eu tivesse reiniciado o controle deslizante não funciona mais até que eu faça outra engrenagem. Deixe-me tirar isso do caminho. Este é o nosso Ano Novo. E se eu disse que este é o nosso Ano Novo e se eu arrastar o controle deslizante vai operar na nova engrenagem, e se eu criar uma nova engrenagem, ele só vai operar na engrenagem em si. 37. Como adicionar nossos scripts à prateleira de Maya: em vez de sempre ter que executar sua faixa a partir do editor de scripts, você também pode adicioná-los à sua prateleira. Há duas maneiras de adicionar seu script à prateleira daqui. Vou adicioná-lo à prateleira personalizada, e se eu selecionar meu script e clicar com o meio do mouse, arraste-o para minha prateleira e solte-o. Vamos adicionar um botão ali, e eu posso clicar com o botão direito neste botão e apertar Editar. Isso traz o editor de prateleira. Concedemos a ordem que salvamos. Você pode ver que os idiomas python, e se você vai para a guia shells, você pode ver à esquerda. Aqui ele tem nossa prateleira personalizada selecionada, e nosso comando aqui aparece é uma opção. Podemos alterar o nome deste comando clicando no renomear e chamá-lo tweener você. Eu e criamos enter vamos renomeá-lo para algo mais sensato. Isto não altera o nosso comando aqui, apenas o que é referido dentro da prateleira aqui em baixo, podemos escolher o ícone que queremos. Eu posso escolher minha própria imagem clicando na pasta aqui ou usar uma das imagens padrão do Maya clicando neste ícone. A psique sobre pode não existir em versões anteriores do Maya, mas deve estar lá a partir do meu 2016 e acima. Ele abre este outro. Você, eu acho, selecionar quando o ícone disse que eu quero que você também pode procurar por ele. Então, se eu procurar a curva de palavras e apertar Enter, deixe-me encontrar uma que eu gosto. Eu gosto do ciclone, então eu só vou apertar Select. Eu também posso adicionar um rótulo de ícone. Neste caso, eu vou dizer tweener, e você pode ver que ele o adiciona como um rótulo para o nosso ícone aqui em cima e altera o ícone também . Então deixe-me dizer, Salve todas as prateleiras e fecha o você I. A outra maneira de adicioná-lo é se você clicar no pequeno ícone de engrenagem em sua prateleira e clique no editor prateleira, selecione a prateleira que você deseja adicionar ou em um novo prateleira. Mas clicando no ícone de adição aqui eu vou apenas adicioná-lo à prateleira personalizada e quando eu clicar, plus, plus, ele adiciona um novo script de usuário para alterar o que o script faz. Eu vou clicar na guia de comando e eu vou mudá-lo para Python, e eu vou simplesmente dizer, Imprimir Olá Mundo. Eu também posso definir o que ele faz quando eu clicar duas vezes neste caso fora de um clique duplo impressão, Eu vou mudar, languish mordida em, e você também pode adicionar opções que aparecem quando você clicar com o botão direito sobre ele. Então eu só vou dizer, Salve todas as prateleiras e você pode ver que ele é adicionado e você ícone lá para mim. E quando eu clicar neste novo ícone, você pode ver que ele é executado impressão Olá Mundo, que imprime Olá Mundo. E se eu clicar duas vezes sobre ele, ele diz duplo clique em vez disso. Eu geralmente não uso a prateleira enquanto estou desenvolvendo, mas se você vai estar executando o mesmo código uma e outra vez, muitas vezes é útil apenas adicioná-lo à sua prateleira aqui em cima. 38. Projeto 5: a biblioteca de controle: através deste projeto estará aprendendo a criar uma biblioteca controladora usando bonito. Nossa biblioteca de controle será flexível e suportará miniaturas. Podemos importar qualquer um dos objetos que salvamos, e também podemos criar quaisquer novos objetos que quisermos. Neste caso, vou dizer isso como o teste, e quando eu apertar salvar, você verá que ele aparece dentro de para nossa janela. Aprendemos como salvar dados como Jason e arquivos, bem como carregá-los de volta no Are You? Eu estaremos usando bonito fornecido pelo lado pi para dentro do meu 2017 e lado da torta. Nas versões anteriores do Maya, vamos rever as diferenças entre quatro e cinco fofos, bem como as diferenças entre torta fofa e lado da torta e torta, Cute five e pie side, também. Eu também vou estar passando por uma biblioteca bonito popular que é usado pela Disney, WETA, Sony Imageworks e muito mais. Lá vai nos ajudar a escrever código que pode ser usado o bonito em ambos Maya 2017 e versões anteriores do Maya. No próximo vídeo, vou fazer uma breve introdução ao bonito sobre. As diferentes versões são bonito uso dentro das diferentes versões do Maya 39. Visão geral da biblioteca de interface: este vídeo servirá como uma breve visão geral de bonito, bem como as diferentes versões agudas nas diferentes versões do Maya. O que é bonito, bonito escrito Q t mas pronunciar bonito foi criado como uma resposta para um problema comum no início dos anos noventa. Se você quisesse escrever um aplicativo que fosse executado em, vários sistemas operacionais poderiam ter um tempo muito difícil porque cada sistema operacional tinha seu próprio. Você I bibliotecas, bem como diferentes maneiras de interagir com o sistema operacional. Bonito, originalmente desenvolvido pela Troll Tech, em seguida, comprado pela Nokia e finalmente vendido para de Gea, é a biblioteca que permite aos desenvolvedores criar um aplicativo e o você eu vou olhar nativo não importa qual sistema operacional é executado on e bonito vai lidar com. Abstrair todas as funções que precisam interagir com o sistema operacional facilita muito o desenvolvimento para desenvolvedores de várias plataformas. Até o meu 2011 meus deveres usando diferentes você I bibliotecas e código do sistema operacional para cada sistema operacional, isso significava que Autodesk tinha mais código para gerenciar, bem como muitos bugs que seriam específicos do sistema operacional , começando com o meu A 2011 Autodesk comutado meios bonitos agudos que Autodesk não precisa manter diferente você gosta de código para cada sistema operacional, e isso significa que eles podem se concentrar no meu próprio. Isso é muito reduzido. O número de bugs específicos OS em Meyer Maya, 2011 usado quatro bonito, e este tem sido o padrão até o meu 2016. Meu 2017 usará Cute five. Bonito cinco vem em muitos avanços. É melhor desempenho. Ele tem uma nova biblioteca chamada Cute Quick, que ajuda você a escrever muito bom você sábio muito rapidamente que você pode implantar para mais sistemas operacionais do que quatro bonito fez. Você pode finalmente implantar no aplicativo para Android e IOS, e inclui novo você I estilizado para imitar o design material do Google e Microsoft. Universal projetado bonito é predominantemente um C mais um P I. Felizmente, uma empresa chamada Riverbank fez um software chamado Pie Cute. Isso nos permite usar bonito dentro de python de uma maneira muito agradável e simples. Ele age e se comporta como uma biblioteca python completamente nativa. Infelizmente, Pike, você testa alguns problemas de licenciamento. É aqui que entra o lado da torta. Pi Side é um projeto oficialmente apoiado pela fundação bonito, e ele vem sem problemas de licenciamento, e novamente é semelhante à torta bonito no permite que você use bonito dentro python. Na verdade, para todas as intenções e fins, exceto o nome e o licenciamento sua inteiramente o mesmo. Eu gosto de mudar entre quatro bonito do meu A 2011 para 2016 e o novo bonito cinco no meu 2017 há mudanças que acompanham a torta bonito e lado da torta. Se você estiver usando bonito no meu 2016 e abaixo, meu oh vai enviar com o lado da torta. Mas você também pode usar pi bonito para com o meu A 2017 e acima. O Meyer também vem com o local da torta . Ou você também pode usar pi Cute cinco. Desde suas mudanças significativas entre bonito quatro e bonito cinco, é difícil escrever código python que é executado com barco. Aqui é onde podemos usar uma biblioteca de abstração muito popular chamada torta de pato fofa. Cute Top I é usado por muitos estúdios grandes, incluindo Sony Pictures, Imageworks, WETA e Disney. O que ele faz é fornecer uma camada simples acima de ambos bonito quatro olhos AP e bonito cinco olhos AP que você possa apenas usar manter dot pie e ele irá redirecionar qualquer uma de suas chamadas para o relevante um p I. Eu estarei usando ponto bonito por para o resto de nossos vídeos e eu recomendo que você faça bem porque é bastante útil saber e é o que você provavelmente estará usando dentro de um estúdio. Se você não quiser usar ponto bonito por favor, anote. Importar a instrução muda aqui porque essa é a maioria das alterações com as quais precisamos nos preocupar. Se você estiver usando pi Cute four ou pi side, você precisará importar as bibliotecas Q T gooey e Q T core. Se você estiver usando pi site para ou pike você para cinco, você precisará importar os widgets Q T o núcleo Q T na biblioteca Q t gooey. Esta é uma alteração significativa de importação entre os dois. Qualquer vez que há uma mudança maior, eu vou cobri-lo e você pode ver mais documentação tanto sobre o doc pie get hub, que será ligado a partir do meu get up, bem como todo o código no meu hub get para este projeto. Finalmente, eu quero cobrir um aspecto de bonito que não estaremos cobrindo neste curso, mas é bastante comum correr para isso é chamado Designer agudo. Designer bonito é uma interface de gota de dragão para projetar você Olhos dentro Cute. É muito fácil de usar e rápido para ficar muito bom. Eu teria lhe mostrado designer bonito, mas eu sinto que seria introduzindo apenas mais uma ferramenta para um vídeo já longo. Da Siri. Estaremos focando em python e projetando vocês usando o Python AP I em vez do designer. Mesmo assim, eu queria ter certeza que você sabia sobre o designer para que se você quiser usá-lo, você sabe que ele existe. Se você decidir usar um designer manter no futuro. Eu também sei que cada uma das bibliotecas bonito para Python vem com o aplicativo de conversão. Lá irá converter o código bonito que você I em código python. Isso nem sempre é necessário porque você pode carregar o arquivo você I diretamente e conectá-lo a um fechamento dentro. Um python, adicionalmente, não será cobrindo fofo rápido porque bonito rápido não é uma biblioteca python e, em vez disso, usa javascript, que não é o foco deste curso. 40. Qt vs Cmds: Eu recomendo usar a biblioteca Q two I sempre que possível em vez do comando Maya para minha biblioteca. Tenho várias razões para isso. Primeiro, a biblioteca de Comandos Maya foi originalmente projetada para Mel, e é você que funciona. Enrole um subconjunto fora de toda a funcionalidade fofa. Bem, isso pode ser mais fácil para os iniciantes aprenderem. Isso significa que você perde o acesso a todos os recursos poderosos e personalização que Q test oferecem. Em segundo lugar, a biblioteca Maya ordena que você I é limitada a apenas Meyer. Se você quisesse escrever um U. Y fora do Maya, você teria que usar bonito de qualquer maneira, então faz mais sentido focar seu tempo aprendendo bonito em vez da biblioteca de comandos Maya . Por último, bonito usa um paradigma de design chamado de digitação de pato. Nós já experimentamos a digitação de pato antes, mas será muito útil para nós quando estamos desenvolvendo seus olhos. No nosso exemplo U anterior, você viu que tínhamos que usar as mesmas funções para editar o elemento você I que usamos para criá-lo. Isso significa que se tivéssemos um controle deslizante inteiro ou um controle deslizante à tona, tivemos que usar o respeito para a função para modificá-lo. Isto significa que se alguma vez decidimos mudar o nosso elemento você, potencialmente temos que mudar todas as funções de edição em muitos lugares diferentes dentro do nosso código. Isso se torna realmente problemático ao desenvolver usuários maiores e rostos. Em contraste, porque usos bonitos no design orientado a objetos, cada elemento você tem métodos sobre ele que podemos chamar. Então, independentemente do tipo de controle deslizante ou você elemento que criamos, o muitas vezes terá exatamente os mesmos métodos. Então, poderíamos simplesmente usar o método de valor definido em qualquer um dos primeiros controles deslizantes em bonito, sem ter que se preocupar com o tipo de controle deslizante que eles são. 41. Digitação com pincel: Não vou passar por cima de um conceito em Python chamado de digitação de pato. digitação de pato não é exclusiva do Python. Na verdade, é bastante comum em muitas linguagens de programação orientadas a objetos. Duck digitação é um kilter calo que vem da frase se soa como um pato e anda como um pato, que deve ser um pato. Isso se refere a uma escolha de design onde muitos tipos diferentes têm as mesmas interfaces que é , tipos diferentes que têm os mesmos métodos em suas classes. Por exemplo, se eu criar uma nova string e eu vou chamá-la de nome e eu vou dizer, Dave, se eu disser nome vai imprimir Oh, Dave e eu posso dizer que o tipo de nome é igual a string, mas eu posso usar isso assim como eu usaria uma lista. Então, se eu disser nome e tentar obter o índice de zero, eu recebo D. Da mesma forma, se eu usar, também, eu vou obter V. Isto é o mesmo que se eu apenas criasse uma lista de caracteres. Então, se eu disse lista, nome é igual a D. Ok, o e e eu disse, Vamos nomear novamente, eu recebo V o que isso nos permite fazer é criar funções que realmente não se importam com o tipo de Quatro parâmetros são. A minha função pode aguentar uma corda. Poderia ter uma lista, A para puxar um conjunto ou um dicionário. Não importa, desde que seja qual for o objeto que estou recebendo tenha a mesma interface. Então, por exemplo, se a minha função toma uma variável e precisa obter o índice, não importa se eu lhe der o nome da lista, porque eu poderia fazer lista, nomear um ou se eu dar-lhe uma string porque enquanto minha função está acessando essas variáveis da mesma maneira, ele realmente não se importa que tipo eles são, e isso será útil quando estamos definindo seus olhos bonitos em vez dos comandos Maya fora, editando você elementos onde temos que saber que tipo o elemento U é antes de recordar uma função para editá-lo em bonito. A maioria dos elementos têm os mesmos métodos neles. Isso significa que se tivéssemos um controle deslizante e bonito porque, digamos valor ativo slider 22 não importa realmente que tipo o controle deslizante é, poderíamos ter muitos tipos diferentes de controles deslizantes, e todos eles interagem da mesma forma Da mesma maneira. Se eu tivesse uma caixa de texto ou um rótulo, não importa, porque eu posso usar o método de texto para obter seu valor. Isso nos permite realmente simplificar nosso código e ser um pouco mais livre na forma como desenvolvemos . 42. Qt.py: como usar o Qt no Python: Antes de começarmos a desenhar, não é? I Vamos baixar mercados diz Cute pie abstraction Layer Se você vai para obter hub dot com lema Tão bonito pie você pode encontrar o código para isso. Você pode ver que é um encadernação bonito. A torta de embrulho lado a lado para pique, você teria torta estrangeira fofa cinco. Isso significa que, em vez de importar qualquer uma dessas ligações python diretamente, podemos usar uma torta fofa e importaremos a melhor ligação para nós. Vou usar a pilha fofa. Concordo para que qualquer alguns assistindo este vídeo que, usando o meu A 2016 ou anterior ainda pode seguir junto com o código. E se usar o meu A 2017 ou superior , deve ser bastante simples. Se você decidir pular usando esta camada, vou passar sobre como importar seus módulos corretamente no próximo vídeo. Mas, por enquanto, deixe-me ver como baixar este módulo. Se você subir até o topo, você pode clicar no botão clone ou download e clicar em baixar zip. Eu digo para salvar e então eu vou abrir meu zíper lá dentro. Meu arquivo é “monstro agudo da torta “Vá lá dentro e eles vão ser um arquivo agudo de ponto de torta. Vou abrir minha pasta Documentos do Maya no Windows. Isso estará dentro de sua pasta de documentos sob Mayer, mas nosso Mac Olynyk Isso estará em um diretório diferente, e eu vou ter certeza de ter uma sobreposição dizendo onde encontrá-los dentro. Diretório Amaya. Vá para a minha aversão que você está usando. Estou usando 2017 e, em seguida, ir para o diretório de scripts. Basta arrastar o arquivo de pizza bonito para dentro aqui. Uma vez lá dentro, você pode fechar isso. Agora você pode ir para Maya e abrir o editor de scripts Dentro do editor de scripts, você pode dizer importar fofo, e se você executar isso, não deve haver erros e ele vai importar a biblioteca fofa. Você pode fazer isso por impressão coisa. Bonitinho. Deixe-me ampliar quando você pode ver que ele já importou o lado da pizza para o módulo para mim. Isso ocorre porque bonito escolherá automaticamente a melhor biblioteca python Cute para você. Agora, se você quiser criar uma nova janela, vamos dizer que vitória é igual a bonito. Widgets bonitos Que diálogo e L. A é um show de pontos vitória. E se eu rodar isso, você verá que ele cria uma janela de diálogo vazia Em nosso próximo vídeo, vou ver como importar os módulos que precisaremos se você não quiser usar uma camada bonita. 43. Como importar módulos Qt: vai agora passar por cima. Tem que importar módulos específicos, e vamos usar a partir das bibliotecas fofas. Se você não estiver usando, vou passar sobre como importar a partir das várias ligações python para bonito diretamente. Em vez disso, o primeiro vamos começar com uma torta fofa. Então, para começar, vamos dizer de importação bonito. Bonitinho. widgets bonitos de Brigid são onde todos os elementos U que você vê viverão. Há também núcleo bonito, que inclui um monte de funcionalidade do núcleo para bonito. Finalmente, isso é fofo. Gooey, agudo, gooey inclui muitas classes e funções úteis. O real usado para construir são você sábio, mas ele não inclui quaisquer widgets reais ou você elementos em si. Se você planeja usar bonito por, esta será a nossa declaração de importação comum. Se você não está usando bonito por e um usando o meu 2017 e acima, você tem duas outras opções bonitos. Em vez disso, você pode dizer visão frump, também, e o resto do módulo permanece o mesmo. Você está definindo uma biblioteca diferente em vez de fofa. Você não está dizendo oi site para comprar vista vem empacotado com Maya, então você está garantido que ele sempre existirá. Seu estúdio você mesmo pode, no entanto, decidir usar pi bonito cinco em vez disso, Pie bonito é uma alternativa, encadernação para bonito como muitas vezes um pouco mais maduro, mas não vem enviado com Maya. Faça problemas de licenciamento. Isso significa que muitas pessoas preferem usar por bonito, mas nem sempre é garantido para existir em outro sistema de usuário. Mas se você quiser, você espia, você tem cinco. Simplesmente alteramos esta instrução de importação para escolher cinco. Portanto, independentemente do uso do observador, você ainda importa os mesmos sub-módulos e você está apenas mudando o módulo pai. Se, no entanto, você usando o meu 2016 e abaixo, que usa bonito para você, pode fazer qualquer uma das três coisas que você pode dizer de bonito e manter seu módulo é o mesmo porque estamos usando a camada de abstração bonito. Se, em vez disso, você quer usar o lado pi, que vem com Maya, por isso é sempre garantido para existir para o meu 2016 e abaixo. Você pode usar a mesma instrução de importação, mas apenas remover widgets bonitos. Isso ocorre porque em bonito quatro widgets bonitos foi combinado dentro, aguda, gooey e aguda cinco já se separaram. Então, qualquer momento no código que você vê widgets bonitos, você pode substituir uma aguda pegajosa. Se você estiver usando o meu treinamento A 16 e abaixo e você está decidindo não usar a camada de abstração bonito da mesma forma em vez de lado da pizza, você também pode usar pi bonito para e você importar as mesmas bibliotecas novamente. Semelhante ao Pike, você tinha cinco pi Cute quatro pode ser mais maduro do que o lado da torta, mas não vem enviado com Maya, então você ou seu estúdio pode preferir usar pi bonito. Basta estar avisado que, se você distribuir seu código, não é garantido para estar em todos os sistemas de usuário. Para todos os meus vídeos, eu vou estar usando a biblioteca fofa, e eu vou usá-lo como um fem usando cinco fofos. Eu recomendo que você faça o mesmo porque eles vão tornar mais fácil de acompanhar. Melhor também significa que seu código é portátil entre diferentes versões do Maya. Agora que terminamos com uma introdução bastante longa para fofos e fofos dentro de um Maya, vamos começar realmente a criar a lógica para uma biblioteca de controladores 44. Como criar o diretório da biblioteca: agora criará a lógica para a nossa biblioteca de controladores. Assim como vimos com nosso tweener de animação e nossa ferramenta de criação de engrenagens. É sempre do nosso melhor interesse para criar a lógica separada de, Você é I O simplifica o nosso desenvolvimento, e isso também significa que podemos reutilizar ou código sem ter que chamar. Você está com charme de torta? Vamos criar o pacote para o nosso controlador viver dentro do botão direito do mouse no projeto scripts e dizer New and Python Package e Real Man Este con library pacotes estão longe em python para conter código juntos como uma biblioteca empacotada. Você pode ver que o pacote contém um diretório com o nome que lhe demos, bem como um innit dot pie thean. Tem tortas vazias. Simplesmente existe para dizer ao Python que este diretório é realmente um pacote e não apenas o diretório. Vamos clicar com o botão direito na biblioteca con, e agora vamos criar um arquivo python. Vamos chamar este controlador Lavery e dentro disto, digamos imprimir. Eu sou a biblioteca do controlador. Eu estou fazendo isso para que quando importamos no Maya, você pode ver que ele está importando do pacote con library e importando o módulo de biblioteca controlador de volta no Maya, digamos da Con Library, que é o nome de sua biblioteca do controlador de importação de pacotes. E se eu comandar isso, você pode ver que uma princesa eu sou o controle da biblioteca. Mas se eu rodar de novo, não imprimirá nada de novo. Isso é porque não colocamos a recarga. Então, se eu disser isso, se eu disser recarregar o controle da biblioteca e agora eu rodar isso, você pode ver que ele imprime novamente. E este eu e isso significa que ele sempre estará pegando as últimas mudanças em nosso código . Então, de volta ao charme da torta, vamos nos livrar dessa declaração de impressão. Primeiro, vamos importar alguns do módulo disse que vai estar usando primeiro outono. Nós vamos, é claro, estar usando o módulo Maya, então vamos dizer a partir de comandos de importação Maya. Usaremos o módulo do sistema operacional para interagir com nosso sistema operacional, e usaremos o módulo Jason para gravar nossos dados. Também usaremos um módulo chamado P Print. Isso nos permitirá imprimir muito de nossos dados para que seja mais fácil para nós ler . Então, agora que temos as importações fora do caminho, qual é a nossa primeira chamada afeição? Bem, primeiro, precisamos criar um diretório onde possamos salvar todos os nossos controladores e seus dados relacionados . Então vamos descobrir primeiro onde está o diretório mire agora. Isso será diferente na máquina de cada usuário, e definitivamente será diferente em cada sistema operacional, então não podemos adivinhar onde ele estará. Felizmente, meu, claro, sabe onde isso é, e podemos consultá-lo para Maya. Então eu vou fazer o usuário depois e este será o nome de uma variável e então ele comanda. Tem var interno. Eu estou indo para consultar o usuário após variável do Maya. Então, se eu disser usuário de impressão depois e eu voltar para Maya e eu agora executar isso, você pode ver que ele é impresso para fora o diretório de aplicativo do usuário, que está sob meu nome de usuário, documento e Maya. E isso funcionará, é claro, é claro,independentemente do sistema operacional que você estiver usando. Em seguida, precisamos construir o nome do diretório antes de criar o diretório real. Então vamos porta um diretório variável e vamos dizer é igual a, e agora precisamos juntar este usuário depois com o nome de Far Directory. Então, vamos dizer que o pote direito oeste se juntou, e vamos dar-lhe as variáveis usuário depois e o nome da nossa biblioteca controlador de diretório . Sabe o que a Wstra Parts faz? É usará seu separador específico do sistema operacional, que é diferente entre Windows, Lennox e Mac. No Windows, é uma barra invertida e nosso Mac e Linux. É uma barra, e isso vai dizer Python. Use o separador específico do sistema operacional para unir esses dois nomes de diretório juntos. Então, se eu agora disser diretório de impressão, quando eu voltar para Maya e eu executar isso, você pode ver que ele agora criou o diretório como apropriado para o nosso sistema operacional. Pode ser confuso porque está usando a barra aqui, mas isso é porque o diretório que eu contra nós está usando barras para frente. Se não estivesse usando aquele Hi Tom faria o comportamento correto e daria a barra invertida. Podemos criar uma função chamada Criar Diretório então vamos dizer morte para definir uma função e vamos chamá-la de criar diretório, e eu vou dar-lhe uma variável chamada diretório e eu vou Kestel para usar Este é o valor padrão. Isto significa que se ninguém dá a minha função qualquer valor, ele só vai usar esta próxima vez que você diz se não Oh, esta pot dot existe diretório, então você vai dizer, Oh s dot m. Kader, nós pensar se este diretório não existe, em seguida, faça este diretório. Mas aqui você pode ver um problema. Estamos usando diretório várias vezes e poderia ser confuso se este diretório significa o argumento de que nossa função está recebendo ou esta variável aqui em cima algum python. É bastante comum ter variáveis que estão no topo como este ser todas as maiúsculas. Então agora eu vou clicar com o botão direito sobre ele. Eu vou para re fator e renomear e no inverno preciso e eu vou renomear todos os Capitals e eu vou ela e eu vou bater três fatores e você pode ver que o charme de torta é inteligente o suficiente para renomear tanto aqui quanto aqui. Mas ele sabe que eu não queria usar isso aqui, então ele não mudou estes da mesma forma, eu vou fazer o mesmo para o usuário depois que eu vou usar um atalho. Shift F seis, e eu vou chamá-lo de você usuário AP dir e você pode ver que ele foi renomeado tanto aqui como aqui. Finalmente, antes de continuarmos, vamos sair, Doc Strings para a nossa função. Vou colocar três aspas e apertar Enter e você pode ver que o termo pie preenche automaticamente nossos argumentos. Vou remover a documentação deles para devoluções porque não devolve nada. Eu vou dizer que o diretório é uma mola e é o diretório a ser criado. E devemos dizer que a função cria o diretório dado se ele não existir já . Então vamos voltar para o Meyer. Devo dizer, Controlador, biblioteca, escuro, criar diretório. E se eu executar isso e eu abri meu arquivo Explorer, você pode ver que criou o controle de diretório de biblioteca Para mim que não existia antes. Se eu chamá-lo novamente, ele não vai criá-lo novamente porque ele está verificando, mas ele existe primeiro. Se eu excluir isso e, em seguida, executá-lo novamente, você pode ver que ele foi criado o diretório novamente. 45. Como salvar arquivos: agora estará criando uma classe para gerenciar nossos controladores. Isso inclui tanto encontrar controladores seguros existentes, bem como um salvando novos. Vamos começar criando nosso pano e nós somos biblioteca controlador de perda de doença porque nossas garras serão chamadas Biblioteca Controller. E eu queria herdar do Dicta Dicta curto para dicionário. E a razão pela qual estou fazendo isso é porque o dicionário é realmente uma boa maneira de armazenar relacionamentos entre o nome de algo e qualquer informação relacionada a ele, incluindo este pote de arquivos e quaisquer capturas de tela para outras informações que criamos. Agora, vamos criar o mesmo método. Então dizemos morte salvar e você pode ver que o gráfico de pizza adiciona automaticamente uma palavra-chave auto porque ele sabe que é necessário. Agora precisamos considerar os dois parâmetros que serão necessários para salvar nosso arquivo o primeiro nome dele, porque sempre precisamos do nome dela para saber o que salvá-lo. No segundo será diretório para que saibamos onde salvá-lo. Eu não quero sempre especificar isso. Então vamos fazer diretório padrão para o diretório que definimos aparecer agora dentro desta função, nós não sabemos se este diretório já existe, nós já fizemos a função create directory. Então vamos chamá-lo novamente e vamos dizer-lhe para usar este diretório. Observe que eu não estou dando o nome da palavra-chave real aqui. Se você não der o nome da palavra-chave, Python irá fazê-lo em ordem. Assim, desde diretório é a primeira palavra-chave, dando o valor de diretório aqui ele está sendo automaticamente dado para a palavra-chave diretório. Em seguida, precisamos criar a parte que salvará isso. Fazemos isso, dizemos que o caminho é igual a e novamente, usamos estrogênio. Peças são unidas para fazer isso, então dizemos, oh, Esther caminho para se juntar e vamos dizer o diretório. Estou fazendo uma substituição de cordas de novo. Então é um ponto por cento e eu vou dizer nome por cento e em seguida eu vou tentar salvá-lo. Mas primeiro, vamos rever alguns dos parâmetros do comando seguro. Vamos abrir a documentação fora do comando file e role para baixo até a parte inferior onde obtemos ajuda para isso. Você pode ver o que temos que fazer para salvá-lo. Primeiro precisamos renomeá-lo para o local que queremos salvá-lo e, em seguida, precisamos dizer-lhe para salvar, e precisamos dar-lhe o tipo. A minha pergunta, vamos copiar isto e voltar ao Pie Charm. Vamos pagar o sistema para o charme da torta. Então estamos vendo o arquivo Command Start e estamos dizendo a ele para renomeá-lo para fred dot m A. Isso não é o que queremos. Então vamos dizer a ele para renomeá-lo para este caminho que construímos e então nós vamos dizer-lhe para salvar. E estávamos dizendo para salvar um Zumaya, perguntar para você digitar. Também precisamos dizer que força é igual a verdade. Isso ocorre porque o arquivo já existe. Queremos forçar que economizemos por cima dele. Então construímos este caminho. Esse é o diretório e o nome do arquivo Maya. Renomeamos para esse caminho, e depois salvamos. Então, de volta à Maya, eu vou criar uma nova instância fora da nossa biblioteca. É um pouco longo, então, por favor, tenha paciência comigo. Então dizemos lib é igual a Controller Library, que é um controle de ponto de nome de módulo da biblioteca, que é nossas garras. Nome e re Esperance vê para criar uma nova instância fora dele para financiar um salvamento vivido fora e executá-lo. Vai dizer que Safe leva pelo menos dois argumentos, dos quais apenas um foi dado. Está à espera do nome. Então vamos dizer teste, vamos executar isso. E se eu olhar para trás no meu diretório Meyer, você pode ver que há um controle do diretório de biblioteca que nós criamos dentro. É uma autonomia de teste, e eu posso importá-la. Mas está vazio. Vamos tentar isso com alguns dados fictícios. Então vamos fazer isso de novo. E se eu abrir esse arquivo, você pode ver que ele abriu o Cubo exatamente como esperávamos. Mas digamos que tenho vários objetos, mas só quero salvar um deles. Então, se eu criar uma esfera, por exemplo, e eu só quero salvar esse medo, se eu executar isso e vamos criar um novo arquivo e, em seguida, abrir este teste existente Emmy, você pode ver que ele salvou tanto a esfera quanto o Cubo. Mas eu só queria salvar esse medo. Então vamos adicionar algumas funcionalidades para economizar em Lee. Apenas a nossa selecção. Ver de volta no charme de pizza, digamos, em vez de apenas salvar nós dizemos, Se comandos não é a seleção é igual a verdadeiro. E se você se lembrar anteriormente, o que estamos fazendo é que estamos vendo se há uma seleção, vamos obter a lista das seleções e em vez disso vamos sentar comandos dot file e você terá argumentos muito semelhantes. Vamos dizer que força é igual a verdadeiro tipo igual a Maya perguntando porque você quer salvá-lo como um pedido meu . Mas em vez de salvar, digamos que a exportação selecionada é igual a true. E se nada for selecionado , , diga-lhe para salvá-lo na minha vida. Agora executamos isso, e se eu abrir o arquivo de teste que salvamos, você pode ver lá salvar apenas um cubo. Mas se eu criar um cubo também, limpar minha seleção e, em seguida, executar isso e, em seguida, vamos abrir o arquivo novamente, você pode ver que ele salvou ambos 46. Como encontrar arquivos: agora vai ver como encontrar qualquer um dos arquivos que salvamos. Então, de volta à Maya, vamos salvar alguns arquivos. Então vamos selecionar esse medo e vamos salvá-lo usando a esfera de salvamento. E então vamos fazer o mesmo para o Cubo e chamá-lo de Cubo desta forma dentro de sua biblioteca de controle . Temos o Cubo, este medo e o teste começam Emmy que já criamos o Amuleto de Torta de Vácuo. Vamos adicionar um bom método para dizermos que a morte encontra. Dê parênteses novamente. Pie charme automaticamente como uma palavra-chave auto, vamos dizer Diretório para olhar e real fazendo usar o diretório padrão que criamos e dentro aqui. Primeiro, vamos verificar se o diretório existe, porque se ele não existir, isso significa que não há controladores salvos. Então diremos se não for você. Ester Park que existe diretório. Eles eram coisa. Se o puss do diretório não existir, basta retornar dessa maneira. Não precisamos continuar agora. Vamos listar todos os arquivos neste diretório então vamos dizer que os arquivos são iguais a Oeste. A dura lista, e vamos dar-lhe o diretório. Vamos listar o diretório. Então eu vou dizer arquivos impressos. Eu vou voltar para Maya e em vez de lib dot save, eu vou dizer lib dot encontrar e executar isso e você pode ver que o meu de irá imprimir uma lista de três objetos. Há um cubo, a esfera e o teste. Estes são exatamente os mesmos arquivos que temos nesse diretório. Mas aqui está o problema. Digamos que eu crie um novo arquivo de texto. Vou chamar a isto o texto fictício. Se eu executar isso agora, você pode ver que eu tenho o Cubo, o manequim Texas Fear e o teste qualquer que eu não quero simular revés de texto em charme de torta. Vamos filtrar qualquer coisa que não seja um arquivo Maya. Então vamos dizer que os arquivos do Meyer são iguais e, como fizemos anteriormente, vamos usar a compreensão da lista. Então nós vamos dizer f para F em arquivos se f ponto termina com DOT Emmy. E isso é o mesmo que se eu dissesse que arquivos Maya é igual a uma lista vazia. Eu vou dizer para F e arquivos e é importante que não chamemos este arquivo variável porque arquivo é realmente uma palavra-chave importante dentro de um python. Ele vai dizer quatro f em arquivos se f que termina com ponto m a. Meus arquivos ponto upend F. Agora isso é 1234 linhas de código. Onde está esta é uma única linha e é sobre um simples de ler. Então vamos nos livrar disso porque isso foi apenas um exemplo para explicar o que está acontecendo aqui. Então, agora, se eu imprimir arquivos Maya e eu voltar para Maya e eu executar isso, você pode ver que eles não estão mais inclui o txt de ponto fictício. Agora que encontramos esses arquivos do Myer, vamos passá-los e adicioná-los ao nosso dicionário. Quem dirá quatro milhões em meus arquivos. Agora precisamos pegar o nome sem a extensão do arquivo Maya. Então vamos dizer o nome. Extensão de vírgula é igual a OS Start pop que divide E X D, e vamos dar-lhes um e o que isso faz. Ele irá dividir a extensão do arquivo e nos devolverá o nome e a extensão . Então, se eu imprimir o nome e eles voltarem para Maya e executarem isso, você pode ver que ele é impresso apenas os nomes dos arquivos sem a extensão deles. Então, agora que sabemos o nome do arquivo, precisamos armazenar isso em nosso dicionário, vinculando ao caminho para o arquivo. Mas o problema é que se imprimirmos M A e voltarmos aqui e rodarmos isto, só nos dará os nomes do ficheiro real e não o directório completo. Então precisamos dizer que o caminho é igual a nós. Esse caminho não se junta, e vamos dar-lhe o diretório no m A. Então, quando estamos reconstruindo o nome completo do caminho usando a junção US Pasta e o diretório pesquisado N no arquivo Maya para que possamos dizer self no interior, colchetes dirão nome é igual ao caminho. Isso pode ser um pouco confuso, mas lembre-se que havia realmente um dicionário que significa que podemos acessar a nós mesmos como se fôssemos um dicionário. Então estava dizendo nos colchetes que atribuiu o nome da chave para este pote. Então, agora, se eu voltar para Maya e eu executar isso, não vai imprimir mais nada, mas se eu disser letras. Você pode ver que ele imprime como um dicionário. Você tem a chave e o valor onde a chave é o nome do controlador e o valor é um caminho completo para o controlador. Enquanto estamos desenvolvendo, não quero ter que imprimir toda vez em Maya. Então vamos fazer o método fino imprimir. Tudo é encontrado no final. Outro problema é que apenas imprimir o dicionário impresso como este, que torna um pouco difícil de ler assim de volta no charme de torta fora do loop quatro. Mas dentro do método fino USPI impressão P impressão e dizer auto. O que isso vai nos deixar fazer é usar o módulo de impressão bonita para imprimir muito o conteúdo do nosso dicionário, que é auto. Então, se eu rodar isso agora, você pode ver que ele é impresso para fora em cada linha separada de maneira fácil de ler. Então nós temos a chave, e o valor em nosso próximo vídeo será repassar como carregar os arquivos de volta no 47. Controladores de carregamento: Este será um vídeo rápido sobre como carregar o arquivo de volta dentro do Maya. Então, agora vamos criar um método de carregamento dentro da biblioteca do controlador. Vamos criar um novo método chamado Load Again por charme como a palavra-chave auto, e vamos dar-lhe o nome para carregar e vamos dizer parte escola auto. E como somos um dicionário, podemos procurar nosso conteúdo usando os mesmos métodos de dicionário neste caso, os colchetes. Então vamos olhar para cima para ver se temos o mesmo nome, instância de arquivo insider. E quando você diz que os comandos não arquivam, vamos dar as peças para importar. Vamos dizer a ele para importar. Mas o problema é que o Python permite que você use a palavra-chave import, então nós temos que usar uma curta diversão, que é I. Então nós dizemos que eu é igual a true, e eu não quero usar o espaço de nomes. Ele também está usando nomes base false. Isso significa que ele não importará nosso controlador para um espaço de nomes secundário, que pode ser meio confuso e saber o que queremos. Então, de volta a Mayer, vamos recarregar tudo. Vamos criar a instância. Se uma biblioteca vamos encontrar todos os controladores e você pode ver que ele é encontrado estes e então eu posso apenas dizer lib, não carregar teste. Vamos apagar estes. E quando eu executar isso, você pode ver que ele importou o arquivo de teste. Se eu excluir chaves novamente e dizer sphere em vez disso, você pode ver que ele é importado este arquivo medo, e então nós temos nosso código salvando, carregando e encontrando nossos controladores. Não vamos salvar dados extras junto com nossos controladores. Isso pode ser útil no final da estrada. No próximo vídeo, aprendemos como usar o módulo Jason para fazer exatamente isso. 48. Nosso primeiro bug: volta no controle do método de salvamento da biblioteca. Primeiro, quero chamar a nossa atenção para um problema. Quando salvamos algo, nossa biblioteca realmente não atualiza. Com isso, eu posso mostrar isso fazendo live dot save e eu vou dizer isso como erro. Se eu fizer isso e imprimir ao vivo, você pode ver que tem. Ele tem o controlador de teste, o controlador de esfera e o controlador Cubo. Mas ele não tem o controlador de erro que acabamos de salvar. E posso procurar isto especificamente. E eu vou dizer que há um erro de chave porque a chave não existe. Mas se eu fizer lib dot encontrar antes disso e depois correr, vai funcionar muito bem. Eu não quero sempre ter que executar lib dot find cada vez que eu salvar um controlador. Então vamos apenas atualizar a nós mesmos cada vez que salvar real, digamos auto e em colchetes, nome é igual a pat a maneira que estamos sempre atualizando cada vez que economizamos 49. JSON: como ler e escrever dados: Agora que resolvemos nosso primeiro bug, vamos criar um dicionário para salvar dados para o nosso controlador. Primeiro, precisamos saber onde salvar esses dados. Então vou criar outra parte. Desta vez eu vou ligar. Arquivo completo é igual a Eu fui criado da mesma maneira que eu criei o caminho para salvar. Originalmente, vou usar-nos o caminho estelar para uma espelunca. Vou dar-lhe o directório. Eu vou você substituição corda novamente, assim como um fez acima. Mas desta vez vou usar a Extensão Jason. Agora, precisamos saber quais dados salvar para isso. Mas eu não quero ter que especificar todos os dados possíveis que podemos querer salvar. Quero dar aos usuários a capacidade de salvar os dados que quiserem. Podemos fazer isso permitindo que nosso método de salvamento tire informações arbitrárias. Assim como usamos estrela ARDS para armazenar quaisquer variáveis em excesso dentro da variável arg. Podemos fazer informações de estrela dupla, destruir quaisquer argumentos extras dentro da variável info. Vamos tentar isso logo após o comando seguro. Estou aqui Digam informações impressas. Voltarei imediatamente para que o resto do comando não corra. Vamos voltar para Maya para experimentar isso. Então, se eu executar lib, salvar novamente, você pode ver que apenas imprime um dicionário vazio. Isto é o que a informação é igual. Se eu agora adicionar quaisquer parâmetros arbitrários, digamos que spam é igual a true eggs igual a green, e agora eu executo isso. Você pode ver que o dicionário é igual a ovos é igual a verde, e spam é igual a true. Isso ocorre porque quaisquer argumentos que não são definidos como parte do nosso método serão automaticamente armazenados dentro do trabalho da chave info dentro da variável info. Oh, e como vimos, informação será um dicionário por padrão para que possamos salvar este dicionário com nosso arquivo sempre que quisermos. Então vamos tentar fazer isso no final de quatro método Salvar antes de dizer antes de adicionar o caminho para nós mesmos, digamos , com arquivo de informações aberto e, em seguida, bater vírgula e entre aspas, colocar W como f e, em seguida, na próxima linha Jason Dodd despejar. Lembre-se que isso tem que ser recuado e nós vamos dizer-lhe para despejar a informação porque este é um dicionário vai dizer-lhe para despejá-lo em F com um recuo desligado. Quatro. Vamos rever isso que estamos vendo com arquivo fechado e este é um nome de parte para esse arquivo. Vamos abri-lo no modo de escrita. E nós vamos armazenar este arquivo aberto em uma variável temporária chamada F. E com esta variável ical f, vamos usar Jason para despejar o em quatro dicionário que temos daqui em F, que é o fluxo de arquivos que E nós vamos armazenar este arquivo aberto em uma variável temporária chamada F. E com esta variável ical f, vamos usar Jason para despejar o em quatro dicionário que temos daqui em F, Acabamos de abrir. E vamos recuar tudo por quatro espaços. O que você vê aqui com aberto é chamado de contexto python. Não vamos usá-los muito em nosso curso além de abrir um arquivo, mas essencialmente o que eles fazem é executar código dentro dele, e antes e depois que este código é executado, eles farão algo. Nesse caso, eles abrirão o arquivo antes que o código seja executado e fecharão a oferta de arquivo. O código é feito em execução. Isso é independente se o código falhar ou não, e é uma maneira muito conveniente e segura de abrir arquivos. Então agora vamos voltar para Maya e tentar isso de novo. Tenho meus argumentos arbitrários para minha função segura. Então estou dizendo que vivia em segurança. Vou chamar isso de teste de informação e até mesmo dar a valores arbitrários. Produtos químicos verdadeiros e ovos iguais a verde. Então vamos fazer isso. Se eu abrir meu diretório de novo, você pode ver que há um novo arquivo aqui. Teste de informações sobre Jason. Eu posso abrir isso no meu sublime editor de texto, que é outro editor que eu gosto, e você pode ver que ele salvou como um dicionário. Ovos é igual a verde, e spam é igual a verdadeiro. Isso significa que podemos salvar todos os dados que quisermos juntamente com o nosso controlador. Veja, de volta ao charme da torta. Vamos adicionar mais informações a este arquivo de informações para que sempre tenhamos que depender porque sabemos que a informação é um dicionário que vamos dizer em folk, e vamos adicionar uma nova chave a ele. Chamar o nome. Dizemos que o nome é o nome. Nós também vamos ter que conhecer a chave chamada caminho, e nós vamos dar a ela o caminho que criamos aparecer de volta em Maya. Vamos tentar executar isso de novo. Então eu vou executar isso e eu vou abrir meu texto sublime e você pode ver que agora ele salva o nome como um valor, bem como o caminho com o caminho completo para o arquivo que eu acabei de salvar volta no charme de pizza. Vamos fazer outro ajuste ou salvar método. Atualmente, estamos salvando apenas o nome do caminho em nossa biblioteca do controlador. Em vez disso, eu quero salvar todas as informações que também estão sendo armazenadas em nosso Jason. Então, em vez de dizer self e entre colchetes, nome é igual ao caminho, vamos torná-lo igual ao dicionário info em vez disso. Da mesma forma, no método fino, Realtor agora precisa encontrar o Jason Dictionary que criamos. Então, no método fino, volte para o loop quatro que tínhamos dentro do loop quatro. Vamos criar uma nova variável, e vamos chamá-la. Arquivo completo é igual e realmente você substituição string novamente, e ele será chamado o mesmo nome que seu arquivo Maya. Apenas com uma extensão Jason, nós vamos verificar se este arquivo info foi encontrado para real dizer se arquivo info em arquivos porque nós já listamos arquivos antigos no diretório aqui, então não faz sentido verificar esse arquivo novamente. Para dizer de verdade, se este arquivo de informações está nos arquivos relistados, então vamos construir uma parte completa. Então vamos dizer arquivo de informações novamente porque você vai para os caminho de soltar, certo? Junte-se. E assim como fizemos aqui, bem, vamos criar a parte novamente com o diretório e o arquivo de informações, e agora precisamos ler o arquivo de volta. Assim como fizemos no método salvar com o arquivo aberto aqui, podemos copiar isso. Mas em vez de usar W, eu quero dizer o nosso Então nós estamos abrindo este arquivo com a bandeira de leitura e começamos a bandeira direita , e nós não queremos despejar os dados. Então dizemos, Jason a carga. Eu quero carregá-lo de F onde f é o fluxo de arquivos que acabamos de abrir. Então isso só está sendo executado nessa instrução if. E uma vez que carregamos esse Jason Data que queremos armazenar, queremos armazená-lo em uma variável chamada info. Caso contrário, digamos que não imprima nenhuma informação encontrada. E também, vamos imprimir nossas informações para que possamos ver o que carregamos em Meyer. É meio que sobreviveu. Salvar. Digamos que Lib foi multado e vamos executar isso novamente e você pode ver que ele está dizendo saber, completo, encontrado, sabendo, completo encontrado. E, de repente, está vermelho neste dicionário que salvamos e continua. E então, finalmente, ele imprime todos os objetos que foram encontrados, para que possamos, portanto, ver que ele está encontrando e lendo em nosso dicionário Jason. Isso é bem sucedido, então sabemos que a informação é um dicionário e Jason está carregando o dicionário nele. Então vamos nos livrar dessa impressão p. E na declaração else dizer, info é igual a um dicionário vazio. Novamente. O dicionário vazio é significado por chaves, e o que somos coisa é, se não encontrarmos o Jase no arquivo, vamos apenas dizer que a variável Info é um dicionário vazio. Dessa forma, sabemos que a informação está sempre no dicionário vazio. Em seguida, vamos preencher este dicionário, caso a informação não esteja lá. Então vamos dizer “Info”. Nome é igual ao nome, e vamos dizer info hat é igual a caminho da maneira que sabemos que o nome e o caminho são sempre dados, e assim como fizemos no mesmo método. Vamos armazenar o dicionário de informações real em vez de apenas o caminho. Então, em vez de dizer auto-nome é igual a caminho, bem, dizer auto-nome é igual a informação. E agora, se voltares para a Maya, deixa-me limpar a minha história e comandar isto. Você pode ver que nossa biblioteca consiste nos nomes dos controladores como as chaves e, em seguida, cada uma das chaves tem um dicionário como seu valor, com mais informações, e por padrão, cada um terá pelo menos o no valor do caminho. Mas se especificarmos mawr e se for encontrado o Jase no arquivo, vamos carregar de volta esses valores também. Finalmente, porque nós mudamos o que nossa biblioteca consiste fora, nós também precisamos mudar o que são método de carga faz isso em vez de obter o caminho de auto-nome porque isso agora é igual ao dicionário e não o caminho que temos que dizer auto nome. E porque isso está nos devolvendo um dicionário, podemos consultá-lo como um dicionário. Então, outros colchetes dentro deste vamos dizer caminho e vamos apenas isso para fora. Vamos recarregar tudo isso e daí, digamos, ao vivo carga maçante e digamos que eu quero carregar o Cubo. E se eu executar isso, bem, uh, ele tem o Cubo de volta. 50. Como capturar capturas de tela: Agora queremos adicionar a capacidade de uma biblioteca salvar uma captura de tela dos controladores. É um encanto de torta. Vamos voltar ao nosso método de salvar para uma biblioteca de controlador e vamos adicionar um novo parâmetro de palavra-chave a um método de salvar. Vou chamar essa captura de tela por padrão. Eu queria salvar uma captura de tela que eu quero dar a capacidade de desativá-la. Agora eu quero salvar a captura de tela depois que salvamos o controlador real. Mas antes de escrever o arquivo Jason, então o que eu vou fazer é sair uma nova linha que diz, Se tela chocado como uma captura de tela se é definido como True self faz salvar tela chocado, que é um método que ainda não criamos. Eu não quero salvá-lo com o nome e para o diretório que nos foi dado. Eu também imagino que este método nos dará de volta a localização da captura de tela, que eu quero salvar em nosso dicionário de informações. Então eu vou dizer info e em colchetes, eu vou dizer que uma captura de tela é igual ao operador do método. Não, eu encanto corretamente dizendo que esse método não existe. Então, se você clicar sobre isso e ir para o ícone da lâmpada, você pode dizer add method, say screenshot, e ele irá criar um método com os argumentos que acabamos de especificar. Alternativamente. Ou, se você estiver usando seu próprio editor, você pode criar isso sozinho. Mas vou deixar Pike Charm fazer o trabalho sujo por mim. Preciso mudar um pouco. Então esse diretório tem um valor padrão fora do diretório. Recriar mais cedo, e eu vou criar o pote para o qual vamos guardá-lo. Eu acho que OS Dark Path não se juntar. E novamente, vamos apenas obter com o diretório no nome e nós automaticamente retornamos este caminho para que ele seja salvo dentro de modo que ele seja salvo dentro do arquivo de informações. Em seguida, quero ter certeza de que a visão Maya se encaixa exatamente em torno do nosso controlador. Meu tem um comando para este chamado ajuste de vista. Vou chamar-lhe os homens que dizem à Maya como salvar a imagem. Será que eu queria saber um JPEG PNG, um tiff ou algum outro formato de imagem Para este exercício? Vamos usar JPEG, então vamos definir o valor padrão de renderização para J. Peg. Este é um dos muitos casos peculiares de Maya e, portanto, está muito mal documentado. Então você só vai ter que seguir junto. Então Music Commons não definir somador e entre aspas, disse padrão, disse padrão, renderizar formato de imagem ancorada da Global e, em seguida, apenas ir até que ele decidiu oito. Não, por que isso? Então, se você voltar para o Maya e abrirmos as configurações padrão de renderização, vou limpar meu histórico no editor de scripts para que você possa ver o que estou fazendo. Se eu mudar o formato da imagem para J. Peg, você pode ver que está fazendo um set com ela. Ele o seguiu. Renderizar formato de imagem global oito. Se eu mudar esse aumento, se for zero e para mudanças no meu I F às sete. Repare em algo. Jif vem antes de J. Peg, Peg, que vem para o meu i f F mas essa não é a ordem dos números. Isso ocorre porque a Autodesk decidiu salvá-los em uma ordem diferente do dedo do pé como ele os adiciona ao menu. É por isso que a maneira mais fácil de definir para J. Peg é acreditar cegamente que oito é o valor para J. Peg. Então vamos mandá-lo de volta para J. Peg e voltar para Pie Charm. Por último, a maneira de renderizar isso é usando o comando de vidro de placa. Então nós dizemos, Vamos, bateu, jogue, exploda e então precisamos dar vários parâmetros. Então, primeiro, digamos que o nome completo do arquivo seja igual ao caminho porque esse é um nome completo que queremos salvar também. Você queria dizer isso para forçar, certo? Quem dirá que a sobregravação de força é verdadeira. Vamos dizer que o formato é uma imagem. Eu vou dizer que a largura é 200 e a altura é 200 faz uma bandeira para mostrar ornamentos. Eu vou dizer que este é ornamentos falsos de partes da porta de visualização que não estão na sua cena, mas são apenas algumas sobreposições de porta, então quer desativá-los. Eu só quero escrever nossa imagem, então eu vou dizer que a hora de início é igual a uma. Uma hora de término também é igual a um. Por último, eu não quero realmente abrir isso em nenhum espectador. Alguém para salvar o ur é igual a falso para que não tenhamos o visualizador de imagens da Maya ou qualquer outro espectador se abrindo. Então, se você voltar para Maya e vamos Skipper seguir isso e deixar eu limpar minha seleção e eu vou dizer live dot save, eu vou dizer teste de tela. Vamos salvá-lo e você pode ver que ele redimensionar pode visualizar porta para caber os controladores, e ele também piscou. Agora, se eu abri meus diretórios, eu posso ver que há um teste de tela de arquivo ical, e isso é meio inútil para mim. E isso é porque eu esqueci de colocar uma extensão lá. Deixe-me apagar isso porque eu realmente não preciso dele agora. Vamos voltar ao “Pie Charm”. E a razão é, aqui, eu só tenho nome e o nome não tem uma extensão. Então vamos usar uma substituição de string novamente. Tão seguro por cento s Dajae PG por cento um nome. Então, se eu voltar para Maya e eu rodar isso de novo e eu abri o diretório de maio, você pode ver que há um teste de tela, RJ Peg e é um prego itty bitty ton que inclui os controladores que acabamos de salvar . Agora que temos a poupança a funcionar. Vamos também certificar-nos de que a nossa multa confinou a cavilha da rua depois de termos lido no Jason . Vamos ver se a captura de tela também existe para Vamos dizer tela chocado é igual a percentual sa J. Peck da mesma maneira que fizemos para o nome do arquivo de informação percentual. E diremos que se a captura de tela está nos arquivos que encontramos acima, então ela deve existir, certo? Quem vai dizer info Screen shot é igual a. E então nós vamos ape