A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Introdução a Python scripting no Blender 3D

Sex

6

Abr

2007


17:09

(7 votos, média 5.00 de 5) 


Excelente tutorial vindo de Chapecó, SC, escrito por Cícero Moraes em 04.02.07. O autor disponibilizou o tuto para ser publicado aqui na Aldeia. Obrigada, cogitas3d!

Considerações iniciais

Nos meus tempos de Windows user aquela janelinha preta do Dos, ou prompt para os mais íntimos, parecia-me pouco atraente. Imagines só, o mouse era muito mais prático, era só mover a mão um pouquinho, apontar para aqueles ícones e tchiuca! dar uma clicada e a diligência estaria resolvida. Sempre deslumbrava os hackers usando o prompt e tentava imaginar o porque deles embuírem-se naquela atividade tediosa já que contavam com uma pratissíssima interface gráfica ao alcance das mãos. Não vou esticar a minha explanação com descrições pormenorizadas. A resposta a preferência dos hacker pela "telinha preta" evidenciou-se depois de alguns anos de uso do Linux de minha parte... era o controle. Quando tu contas com o modo texto à tua disposição e as ferramentas certas, tens via scripts e comandos todo o controle do sistema operacional. Tu podes desenhar, criar arquivos de textos, entrar na internet, baixar arquivos, fazer downloads e toda uma sorte de atividades naquela "tosca" telinha preta. O mais interessante é que tu podes usá-la tanto no computador que estiver na tua frente, quanto num computador nos confins da China via ssh, incrível não? Não??? Certo, imagines a situação. Tu tens uma firma no outro lado da cidade, estás no conforto do teu lar, curtindo uma chuvinha que lá fora cai. De repente toca o celular:

- Seu fulano, estou com um problema aqui no computador. Fiz o que o senhor mandou para criar o backup mas apareceu uma mensagem de erro maluca!

Tu nem pensas sair de casa, está bom demais curtir aquela chuvinha. Simples! Como o teu sistema é um Unix-like, basta entrares na internet e acessar o microcomputador remoto via Ssh. Assim que o fizer, tu dás uma olhada no arquivo .conf ou no script que criaste para fazer backup. Até então está tudo certo. Mas um pouco de procura, tu entras no histórico de comandos e póf! Descobre que o teu funcionário não rodou o comando correto para fazer backup. Então tu simplesmente o faz e manda um script para o funcionário em questão com os procedimentos corretos do trabalho.

Pois, isso é apenas um parco exemplo, o poder do modo texto é bastante amplo. Para aqueles que não compreenderam bem a explicação, o que quis dizer foi o seguinte:

Com o modo texto tu podes fazer praticamente qualquer coisa num computador, tanto o que está na tua frente agora, quanto um que estiver a milhares de quilômetros.

Agora a pergunta que não quer calar. Por que expliquei tudo isso? Simples. Assim que comecei a escrever alguns modestos scripts para automatizar as minhas tarefas ao usar o Linux, ví que quase todos os programas tinham um arquivo .conf que continham a configuração de seu funcionamento, que quase todas as ferramentas de configuração do sistema eram scripts e não programas binários e que mesmo os programas binários se comunicavam entre sí e ofereciam saídas e mensagens de erro e comportamento que desaguavam em um arquivo de texto.

Caramba! Arquivos de texto, eles são "os caras".

Depois da descoberta dos scripts analisei-os e estudei-os a fundo. Descobri que os programas do Shell Script, Perl e Python são interpretados ao invés do C ou Pascal que são compilados. Um programa em Python é um script, um texto. Um programa em C é compilado em um arquivo (ou vários) binário(s). Se tu tentas abrir um programa binário com um editor de texto irão aparecer aquele monte de símbolos estranhos, isso por que ele está na linguagem do computador. Mas, se tu abrires um script irás deparar-te com palavras compreensíveis. Entendeste? Certo, agora que eu sabia disso, comecei a perceber que essa realidade também de aplicava aos arquivos gerados por alguns programas. Por exemplo... o POV-Ray que é um renderer (programa que converte um arquivos com dados em uma imagem fotorealística ou não) que gera arquivos interpretados, já o Blender gera binários, ou seja, arquivos que tu não consegues abrir num editor de texto. Os do POV-Ray tu podes abrir em editores, editá-los, salvá-los e executá-los, já os do Blender tu só abres nele mesmo.

Exemplos de programas que geram arquivos interpretados: POV-Ray(.pov), Inkscape(.svg), OpenOffice(.odt)...

Exemplos de programas que geram arquivos binários: Blender 3D (.blend), Gimp (imagens como .jpg, xfc, gif...), Microsoft Word (.doc)...

A partir desta segunda fase passei a usar muito os programas que geravam arquivos interpretados ao invés de binários. Percebi que haviam prós e contras, o principal pró é o controle do arquivo e o principal contra é o enorme tamanho desses arquivos em relação aos binários. Por exemplo, um arquivo com uma animação multimídia de 250Kb binário corresponde a um interpretado de 45 Mb por exemplo! E mesmo compactando a diferença ainda é grande.

Outra coisa que descobri e esta ajudou-me bastante ao tornar prática a edição dos arquivos foram as Expressões Regulares. Não vou aprofundar-me no assunto, basta saberes que as expressões regulares ou regex possibilitam a edição de arquivos de texto através de padrões sem a necessidade de abri-los! Tu podes mudar ocorrências dentro deles, como datas, ordem de palavras, apagar letras, frases e todo o mais com um único comando!

Tudo isso deve estar parecendo meio confuso, mas não desistas. Continues lendo o texto que as coisas vão se encaixando pouco a pouco.

A priori fiquei bastante chateado por compreender que o Blender gerava arquivos binários ao invés de interpretados. Mas lembrava-me que haviam os scripts em Python ou Python Scripts. Oba! Havia uma possibilidade de controle! Estudei um pouco e... ieba! Essa ferramenta mostrou-se bastante flexível e amplamente utilizável, mesmo não sendo tão abrangente ou milagrosa.

Tu podes criar exportadores, construtores de meshes (malhas), configuradores e lá vai cacetada de opções. Também não vou me ater muito nestas explicações, basta dizer-te que se tu usares a tua imaginação atrelada a um bom know-how das ferramentas, se não fizeres chover, pelo menos fará de teu trabalho uma realidade mais prática, instigante e prazerosa!

Outro fator que me chamou a atenção depois de todo este estudo foi perceber o quão inteligente era a forma que os desenvolvedores do Blender gerenciavam o projeto no quesito "reinventar a roda"... eles simplesmente não fazem isso! Vejas só, acima explanei modestamente o funcionamento dos programas que rodam em sistemas Unix, ou Unix-Like. Escrevi que os programas conversavam entre si. Pois bem, há alguns anos, quando larguei o 3DS Max para trabalhar com o Blender, achava estranho que um programa com tantos recursos contasse com um tamanho tão reduzido. O mais impressionante é que o tempo passava... mais recursos eram embutidos e o tamanho pouco aumentava. Ué? Eu pensava... isso é impossível! Como um programa tão amplamente utilizável e com tantos recursos antagônicos pode ser deste tamanhico? Simples... o programa usava o esforço, o trabalho de outras pessoas. Por exemplo... um bendito vai e escreve uma biblioteca de simulação física, outro de um sistema de som. A pergunta é... por que os desenvolvedores vão criar as suas a partir do zero se eles têm à mão as bibliotecas citadas? Aparentemente foi isso que os developers (desenvolvedores) pensaram e executaram. Pelo menos foi o que entendi nos textos que li. Se tu fores instalar o Blender no Linux, ou mesmo compilá-lo, verás quantos programas e quantas bibliotecas serão necessárias no sistema para que ele funcione. No Windows essas bibliotecas vem como .ddls. Inteligente não? Pois escrevi este texto para complementar o que tenho tentado explicar. Que o Blender oferece o Python como uma linguagem que se coloca entre o sistema mais interno (core) e o externo (interface) para que tu possas, sem muito trabalho, executar operações que demandariam muito tempo e conhecimento pelo jeito tradicional ou acessível. Tu o que foi dito redunda em vários conceitos: Conhecimento da interface gráfica, programação (Python), conhecimentos internos da programação (expressões regulares) e gerenciamento do sistema (Shell, comandos básicos).

Obs.: Aconselho-te a ler sobre programação em Python, Orientação a Objetos, Shell script e expressões regulares. No final do tutorial estarei disponibilizando links para tal.

Informações adicionais