
Bom dia!
Feliz 2011 ( atrasado ) a todos!
Esse é meu primeiro post esse ano, e com boas novidades! Na verdade, hoje eu vim dar um depoimento.
Não, eu não estou em reabilitação por uso de drogas ( tá bom, eu uso windows confesso! ), mas eu precisava falar sobre um desejo que eu, como estudante de computação e aspirante a programador, sempre tive em relação ao blender. Implementar eu mesmo uma funcionalidade na source.
Acredito que todos nós que utilizamos o Blender diariamente, seja por hobby, seja profissionalmente já identificamos um problema ou outro ( ou vários ), de aparente fácil resolução, que até mesmo você que jura não saber bulhufas de C++ saberia como resolver.
Eu, a muito tempo possuía esse mesmo desejo, de poder contribuir ativamente para o desenvolvimento do Blender, não apenas com palestras e divulgação, ou criação de Demos que viessem a mostrar as suas qualidades como ferramenta, mas também metendo a mão para implementar novas funcionalidades e/ou correções de bugs.
Hoje, após alguns meses de estudo da source da blender eu tive a oportunidade de criar meu primeiro patch que foi introduzido no Trunk… Ou seja, uma modificação do código que foi introduzida na versão oficial!
Source? Patch? Trunk? Do que raios você está falando Vitor?
Tá bom, eu explico. Melhor ainda, vamos entender um pouco como funciona o processo de desenvolvimento do Blender. Acredito que já deva existir alguns artigos a respeito, mas talvez não em lingua portuguesa. Então vamos lá.
O Blender é um programa Open Source, uma palavra que se tornou lugar comum hoje em dia, mas que as vezes ainda confunde as pessoas.
Um Software Open Source, é um software em que o seu código fonte ( Source ) , é liberado para download, estudo, modificação, ampliação etc… Existem diversas licenças para softwares Open Source cada uma limita a utilização desse código livre de algumas formas. O Blender utiliza a licença GPL o que lhe permite redistribuir ou modificar o blender contanto que a sua versão derivada seja disponibilizada sob a mesma licença. Isso impede que um espertinho baixe o código do blender, modifique 2 linhas e o venda por exemplo…
No caso do blender, não somente o código é aberto, como também o desenvolvimento do programa é feito por voluntários, em geral não remunerados, ao redor do mundo.
Mas como isso funciona?
Código Aberto não quer dizer código bagunçado então, é necessário um organismo que organize o código, faça a revisão dos patches ( modificações de código implementadas pelas pessoas ao redor do mundo, que podem corrigir um problema ou acrescentar uma nova funcionalidade ) e por final integre esse patch na estrutura de código fonte oficial do blender, o qual chamamos Trunk. Quem faz todos esses trabalhos é a Blender Foundation por meio de alguns colaboradores selecionados. Eles tem o poder de decidir que patch pode ser acrescentado no Trunk ou não ( caso venha a causar problemas, ou esteja mal escrito, ou simplesmente não seja adequado ).
Então por onde começar?
Bom, o primeiro passo eu acredito seja entender as próprias limitações. O Blender é um software complexo ( MUITO COMPLEXO!!! ) e não será do dia para a noite que você irá conseguir entender o código do que quer que seja. Acredito que encarar o código com uma expectativa humilde seja o caminho para não se desapontar em não conseguir implementar de imediato aquele sistema revolucionário que você sempre sonhou, e por conseguinte abandonar a idéia de codificar o Blender.
Nesse ponto, falo por experiência própria. Por reconhecer minhas gigantescas limitações como programador diante da tarefa que se impõe ( codificar em um software complexo como o blender ), acredito que a minha postura de “nunca tentar dar um passo maior do que as pernas” esteja me levando para o caminho correto nesse sentido.
Se você já compreende que não irá revolucionar o Blender do dia para a noite então vamos lá, o segundo passo é compilar o Blender. Existem dezenas de tutoriais de como compilar o blender, eu mesmo, a quase (ou mais de ) um ano postei aqui mesmo um tutorial de como fazê-lo no windows XP 32bits. Porém se você estiver em uma estação Linux as coisas ficam bem mais simples.
Terceiro Passo: Agora vou falar sobre como eu prossegui, talvez não fosse a melhor forma, mas foi a que funcionou para mim. Acredito que o melhor ( e talvez único ) método de entender o funcionamento do blender, é lendo o código e perguntando para quem já sabe. Por exemplo, identifique uma funcionalidade e isole ela ( o atuador visible do logic bricks por exemplo), agora vá na source e vá buscando todos os arquivos e funções relativas àquela funcionalidade. Com o tempo, você vai entendendo a lógica da organização dos arquivos e a lógica de funcionamento. É um trabalho de paciência. Todas as documentações relativas à arquitetura do Blender/BGE que eu encontrei eram confusas e técnicas d+ para que eu compreendesse as coisas mais simples, como em que arquivo estão as funções relativas a X ou Y funcionalidade. Além de xeretar muito não tenha medo de perguntar. Existe um canal irc dos desenvolvedores: #blendercoders na rede freenode. Como deve de se imaginar a lingua nativa lá é o inglês, então talvez seja necessário superar essa barreira inicial. Até onde eu pude ver, eles são bem receptivos a ajudar aqueles interessados em programar, se apresente, peça ajudar, e espere, em geral alguém costuma vir em socorro. No meu caso, em minha curta experiencia no blendercoders fui atendido em minha dúvida pelo moguri , o que levou inclusive a um patch para corrigir falhas no sistema de 2Dfilter. Outra alternativa é buscar desenvolvedores brasileiros, eu particularmente só conheço o Dalai Felinto, que sempre me orientou e foi o principal incentivador para que eu começasse a programar.
Quarto Passo: Buscar algo simples e meter a mão na massa. Assim que você estiver um pouco mais familiarizado com a estrutura de arquivos e o mínimo do funcionamento da área que você gostaria de desenvolver ( Render, BGE, UI, Mesh, Partículas etc… ) busque algo bem simples e implemente. Realmente simples!!!! Meu primeiro teste de implementação no código do blender foi fazer o PC emitir um Beep quando eu adicionasse um objeto pelo atuador add Object. Era algo totalmente inútil, mas ouvir aqueles Beep Beep Beep foram uma experiência maravilhosa, era a prova de que eu poderia efetivamente modificar o blender e ele responderia às minhas modificações. Esse foi o gatilho que me impulsionou a continuar a testar coisas….
Até o momento eu implementei 4 Patches,
O primeiro foi para correção de um Bug identificado pelo Marcos Amaral. Durante a Blender Pro ele me contou sobre esse problema e assim que voltei de Fortaleza me dediquei a tentar corrigir isso.
Link: http://www.pasteall.org/18532
Esse Patch ainda necessita de ser “limpo” removendo alguns detalhes, mas é totalmente funcional.
Assim como o segundo que implementei. Dessa vez tentei algo mais complexo. Implementar um novo efeito de postprocess no atuador 2Dfilter, no caso, um efeito de Outline ( Cell Shading )
Link:http://www.pasteall.org/18533
O Terceiro, ainda em fase experimental, acrescenta novos dados ao modo Debug da BGE, acrescentando informações de FPS máximo, mínimo e médio.
Link: http://www.pasteall.org/18534
Mas somente o quarto patch, foi realmente acrescentado no Trunk, este acrescenta a opção de mostrar ou não o Mouse durante o início da execução da BGE, antes ele era escondido por default.
Link: http://www.pasteall.org/18535
Para todos esses patches eu contei com a ajuda do Dalai para me orientar no funcionamento do Blender, Tirar dúvidas ou mesmo corrigir alguns erros. Então muito obrigado Dalai xD
Como todo depoimento, o que eu quero deixar é uma mensagem,uma mensagem de que sim, nós podemos codificar o blender, e não somente podemos, como também devemos! Ser software livre não é pertencer a ninguem, é sim pertencer a todos, e é graças a esse pensamento que tantas pessoas dedicam seu tempo à tornar o Blender a maravilhosa ferramenta que hoje, obrigado a todos os desenvolvedores!
Meu recado é
Qualquer pessoa pode codificar! Eu consegui, você também pode!
Grande Abraço! E Feliz 2011!
Vitor