Cross3D: Controle múltiplos softwares 3D com Python

O uso de linguagens de script é essencial para conseguir melhorar a produtividade em grandes projetos, e prover níveis diferentes de automação para artistas. Cada software acaba trazendo a sua própria linguagem, o que pode ser um grande desafio para projetos usando múltiplas plataformas.

Quais são essas linguagens? No caso do 3dsmax temos o MAXScript e com o Maya você encontra MEL. Para facilitar a gestão de projetos que fazem uso de múltiplas plataformas, o Blur Studio criou um módulo que agrega diversas plataformas usando Python.

É possível trabalhar com a automação e desenvolvimento para 3dsmax, Maya e outros softwares usando única e exclusivamente Python. Até pouco tempo atrás o módulo era conhecido como BlurAPI, mas foi rebatizado como Cross3D.

python3d_500_px_85

Quem já usa Python como linguagem de desenvolvimento e gestão de recursos 3d terá muita facilidade em aprender esse novo módulo. Depois de instalado o módulo, será possível criar rotinas específicas para lidar com cenas e entidades em cada cena 3d.

Basta imaginar que determinados projetos possuem múltiplos arquivos que podem demandar alterações de pequenos detalhes, para que tudo seja adequado na produção. Algo simples como o FPS pode demandar a edição “manual” de 50 arquivos para cenas diferentes. Ao usar esse tipo de módulo você consegue fazer a edição de múltiplos arquivos, usando uma rotina simples.

Quer outro exemplo? Ajustes relacionados com um perfil de câmera que precisa ser compartilhado em múltiplos arquivos. Como verificar se as cenas compartilham a mesma informação? Usando uma rotina em Python.

Os exemplos podem ser os mais diversos, e ao começar a usar esse tipo de solução você não só ganha mais produtividade como também adiciona um conhecimento que poucas pessoas possuem.

O Blur Studio é mundialmente conhecido por trabalhar com a criação de animações de alta qualidade, e eles adotam múltiplos softwares na sua linha de produção. Sem um módulo em Python como esses, seria um pesadelo logístico manter projetos com vários softwares diferentes.

Para fazer o download do módulo, você pode usar esse link.

Aprendendo a usar Python

Quer aprender a usar Python? No EAD – Allan Brito você encontra diversos cursos e materiais que ajudam no uso dessa incrível linguagem. Seja para trabalhar com jogos, automação ou manipulação de imagens:

Tutorial Blender 3D e Python: Alinhando objetos com seus próprios scripts

O uso de scripts e rotinas personalizadas em ferramentas 3d é um dos requisitos para acelerar o seu trabalho em softwares 3d, seja com o uso de MAXScript no 3ds Max, Mel no Maya ou Python no Softimage XSI. No Blender 3D também podemos usar Python para adicionar novas ferramentas e até mesmo criar pequenas rotinas que ajudam no desenvolvimento de ferramentas para automatizar tarefas de modelagem. Como sempre falo sobre esse tipo de assunto, mas ainda não tinha publicado nenhum tutorial sobre como começar com Python no Blender, resolvi criar um tutorial em vídeo sobre uma tarefa comum em modelagem, que é o alinhamento de objetos.

Sempre que estamos criando cenários ou composições complexas usando diversos objetos, precisamos alinhar os mesmos em um eixo, ou simplesmente organizar modelos 3d como peças de mobiliário. Uma das maneiras mais rápidas e simples de fazer isso é usando Python.

Como é possível fazer isso em Python?

Para responder essa pergunta, editei um tutorial separado em duas partes que mostra os primeiros passos com Python no Blender 3D, e a criação de uma rotina que alinha objetos selecionados, com base na posição em Y de um elemento presente na 3D View.

O vídeo aborda os seguintes assuntos:

  • O que é necessário para importar os módulos do Blender para o script
  • Como capturar informações sobre objetos na 3D View
  • Como capturar informações apenas dos objetos selecionados
  • Como exibir as informações na janela auxiliar do Blender 3D
  • Como alterar propriedades de objetos usando Python
  • Como criar estruturas de repetição para automatizar as transformações

Claro que se você tiver algum tipo de experiência com desenvolvimento de scripts ou softwares, a explicação e objetos apresentados no tutorial ficam mais simples de seguir e entender.

A lógica apresentada nos tutoriais é a seguinte, com a opção Blender.Objects.GetSelected() é possível adicionar os objetos selecionados na 3D View em uma lista. Essa lista é composta pelos nomes dos objetos. No caso desse script que alinha os elementos em relação a outro, o acesso a cada um deles é feito por um for.

O que significa esse for?

Em linguagens de script um for é usado para fazer tarefas repetidas. No caso do nosso exemplo poderíamos ter escrito a declaração que altera as posições em Y dos objetos na 3D View de duas maneiras. Uma declaração para cada objeto selecionado como objeto(0).LocY = meuObjeto.LocY, objeto(1).LocY = meuObjeto.LocY, objeto(2).LocY = meuObjeto.LocY.

O funcionamento seria o mesmo. Com o for, podemos dizer que uma variável i deve ser comparada com o número de índices da lista objetos, que nesse caso tem o mesmo número de objetos selecionados na 3D View. A vantagem em usar o for é que não importa o número de objetos selecionados, o script sempre vai adicionar automaticamente o número necessário de declarações para mover os modelos 3d.

Agora você já pode fazer adaptações nesse script para criar as suas próprias rotinas. Em outros artigos, mostro como é possível criar uma interface e trabalhar com ferramentas personalizadas usando Python no Blender 3D.

Tutorial Blender 3D: Alinhando objetos em 3d

Os softwares gráficos 2d e as ferramentas especializadas em modelagem compartilham algumas opções, como o uso do grid para conseguir posicionar objetos com bom nível de precisão no papel ou no espaço 3d. Entre as opções comuns entre essas ferramentas, uma das mais usadas e necessárias para organizar cenas em 3d é a especializada no alinhamento dos modelos 3d. Por exemplo, imagine que você está trabalhando na criação de uma cena em 3d com o uso de vários móveis em 3d, que precisam estar perfeitamente alinhados um com o outro. Mas, ao importar os modelos 3d você acabou deslocando os modelos de maneira aleatória e sem usar qualquer opção de snap.

No Blender 3D, esse tipo de situação pode ser remediada com o uso de um script extremamente útil chamado de Alignit. A ferramenta pode ser copiada nesse endereço, sendo de extrema importância para artistas especializados na produção de modelos 3d para arquitetura, pois permite organizar modelos 3d na 3d View usando apenas outros objetos como referência. O script pode ser acionado dentro de uma janela de texto do Blender 3D (Text Window), em que abrimos o texto e pressionamos a tecla ALT+P para executar o código.

tutorial-blender3d-alinhar-objetos-3d-01.jpg

A interface é bem simples e precisamos apenas entender a nomenclatura com que o script usa os objetos selecionados para aplicar nos projetos. Existem duas regras básicas que são:

  • Todos os objetos são alinhados usando como referência o último que foi selecionado;
  • Os objetos são alinhados com base na menor coordenada em X, Y ou Z. No menu do script é possível visualizar essa opção com os botões +X ou -X.
  • A forma usada para alinhar os objetos é um cubo (bounding box), independente da forma dos objetos selecionados.

O exemplo abaixo ilustra bem o funcionamento da ferramenta, que é usada para alinhar os modelos 3d de diversas cadeiras. Depois de selecionar todas as cadeiras e escolher uma delas que será usada para alinhar as outras, que deve ser selecionada por último.

tutorial-blender3d-alinhar-objetos-3d-02.jpg

tutorial-blender3d-alinhar-objetos-3d-03.jpg

Usamos a opção disponível no botão +Y to +Y para que os objetos sejam alinhados usando a maior coordenada em Y para a cadeira de referência. Isso faz com que a extremidade frontal da cadeira seja usada para o alinhamento, pois é a parte mais próxima na direção positiva do eixo Y.

tutorial-blender3d-alinhar-objetos-3d-04.jpg

Ao pressionar o botão, o resultado é o alinhamento das cadeiras com base no modelo de referência.

tutorial-blender3d-alinhar-objetos-3d-05.jpg

Se você é usuário do Blender 3D e já precisou realizar esse tipo de operação e sentiu falta de uma ferramenta como essa, esse script vai ajudar bastante.

Como criar scripts em Python compatíveis com o 3ds Max e não usar MAXScript

O uso de scripts e rotinas personalizadas é extremamente comum em ambientes de produção 3d, principalmente em estúdios que precisam organizar e criar conteúdo de maneira rápida. Tudo que pode ser automatizado usando scripts acaba sendo desenvolvido por equipes de programadores especializados naquela linguagem. O maior desafio para profissionais interessados nesse ramo é a grande diversidade de linguagens usadas para criar essas rotinas. Por exemplo, o 3ds Max usa o seu MAXScript para criar ferramentas e rotinas assim como o Maya usa MEL. Outras ferramentas 3d começam a adotar como padrão de desenvolvimento a linguagem Python, o que facilita muito a migração e criação de ferramentas que podem ser facilmente adaptadas para softwares distintos.

Entre as principais suítes 3d que suportam Python encontramos o Blender 3D, Softimage XSI e o Houdini 3D. Os artistas do estúdio Blur são usuários do Softimage XSI, mas por muito tempo adotaram o 3ds Max para criar suas animações e imagens. Isso resultou em diversas ferramentas personalizadas e rotinas prontas escritas em MAXScript, sem mencionar os projetos salvos nesse formato. O problema é que com o tempo o estúdio precisava de uma maneira de portar as ferramentas atualizadas e melhoradas com Python para projetos no 3ds Max, sendo que esse não consegue usar Python.

A solução foi criar um software interprete o Python para o 3ds Max como se fosse MAXScript. Assim nasceu o Py3dsMax que já comentei ontem mesmo no meu Twitter.

(1024) : random.

O melhor de tudo é que essas ferramentas desenvolvidas pelo estúdio Blur, sempre são disponibilizadas de maneira gratuita para qualquer pessoa usar nos seus projetos, assim como acontece com os diversos scripts desenvolvidos em MAXScript. Na página existe até um exemplo mostrando o resultado de um código escrito em Python e portado para MAXScript usando a ferramenta.

Esse tipo de ferramenta é extremamente importante para unificar e deixar a criação de rotinas personalizadas muito mais universal.

Se você tem habilidades com programação, ou interesse em desenvolver pesquisar relacionadas com aplicações para computação gráfica, essa é uma área carente de profissionais no mercado brasileiro. Todas as produções médias ou grandes, precisam de uma pequena equipe de desenvolvimento. Com esse incentivo do Py3dsMax, o Python se torna cada vez mais a melhor opção para criar rotinas para suítes 3D.

Demonstração das ferramentas no Blender 2.50 e tutoriais

A cada dia que passa podemos conferir mais novidades e versões estáveis do Blender 2.50, que está ganhando forma. O vídeo que indico nesse artigo é uma demonstração de como está o andamento do desenvolvimento do software, que para espanto de muitos está com uma interface relativamente semelhante ao conceito já consolidado pelo Blender. Portanto, os motivos para entrar em pânico para eventuais mudanças na interface são infundados. O que aconteceu realmente até agora foi a atualização nos ícones do Blender, para que os mesmos tenham uma aparência mais agradável e correspondente a função. Mas, não foram apenas os ícones que tiveram modificações e atualizações, algumas janelas novas permitem acessar novos parâmetros e opções dos objetos de maneira mais rápida.

O vídeo abaixo foi produzido por um usuário do Blender chamado de Michael Fox, e mostra vários dos aspectos do Blender 2.50.

No vídeo são abordados os seguintes aspectos do Blender 2.50:

  • Organizando keyframes
  • Divisões de janelas
  • Novos menus

Ainda é possível conferir um pouco do código fonte do Blender, para quem nunca teve oportunidade de visualizar esse aspecto do Blender.

Essa versão do Blender ainda deve passar por muitos testes e deve ficar estável apenas no segundo semestre. Até lá, ainda deve ser lançada uma versão 2.49, com a imensa quantidade de recursos que ainda está em desenvolvimento. Portanto, não se preocupe com a versão 2.50 ainda!

Agora vamos conferir algumas dicas interessantes para a versão atual do Blender 3D. A primeira dica na verdade é apenas a indicação de um vídeo que gravei na semana passada, sobre o tutorial que simula o uso do Script Solidify Selection. esse vídeo foi um teste para avaliar a criação de tutoriais em alta resolução para o Youtube e Vimeo. Depois de gravar o tutorial, converti o vídeo usando o codec h264 e o resultado pode ser conferido abaixo. Use a seta no player para escolher a opção de assistir em HD.

Agora, outra dica interessante que foi indiretamente motivada por um artigo aqui do Blog. Um artigo que escrevi sobre as novidades do 3ds Max 2010, comentava a incorporação do plugin Polyboost na ferramenta. O leitor Paulo Gomes indicou o artigo no fórum Blenderartists.org, e perguntou se existia alguma ferramenta ou script no Blender que realizasse a mesma operação. Bem, naquele momento em especial não, mas logo um desenvolvedor criou um script em python para que a função que converte edge loops em curvas fosse realizada no Blender!

O resultado do script, assim como um tutorial sobre o seu uso podem ser conferidos aqui.

Esse é um vídeo de demonstração da ferramenta:

Fiquei feliz em ver o resultado, pois mesmo sem ter contribuição direta, fico com a impressão que o artigo sobre o Polyboost teve influência indireta no desenvolvimento de mais uma ferramenta para o Blender! Agradeço ao Paulo pela referência.