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.

Modelagem 3d com precisão no Blender 3D: Usando o script Lengthen

Na maior parte dos projetos envolvendo modelagem 3d o uso de ferramentas para precisão absoluta na organização do modelo 3d é dispensável. Como o objetivo do projeto de modelagem é atingir a proporção correta do modelo 3d e não as dimensões, é mais interessante conseguir opções para ajustar a topologia do modelo 3d do que as dimensões em si. Mas, isso é aplicável em projetos que envolvem modelagem orgânica e não precisam demonstrar dimensões e relações de proporções geométricas, como é o caso dos projetos de visualização arquitetônica. Nesse caso é muito importante conseguir criar modelos 3d com um mínimo de fidelidade as dimensões dos projetos representados.

O Blender 3D consegue manipular os objetos 3d de maneira satisfatória, mas as opções de controle e modelagem com precisão podem sempre melhorar. Existem diversos scripts em Python que ajudam no trabalho de modelagem e entre eles estão o Script chamado Lenghten. Já faz um bom tempo que escrevi um tutorial sobre o funcionamento desse script aqui no blog, mas ainda assim a ferramenta se mostra indispensável para trabalhos que envolvem o controle absoluto das dimensões.

O que ele faz? O script é bem simples e consegue alterar as distâncias entre dois vértices para qualquer dimensão especificada pelo usuário, sem modificar a orientação dos vértices. Para demonstrar o seu funcionamento, resolvi criar um pequeno vídeo mostrando o script em ação.

Caso você queira fazer o download do script, basta visitar esse link que leva ao fórum de usuários do Blender em inglês, o Blenderartists.

Como você deve ter percebido pelo vídeo, o script ajuda muito no dimensionamento correto de elementos no Blender, principalmente quando objetos estão para ser copiados ou transformados. Por exemplo, ao criar os modelos 3d de uma parede é possível usar os mesmos modelos 3d para diferentes tipologias de paredes que diferem na altura e largura. Sem o uso do script seria necessário usar o Grid ou o menu de propriedades do Blender para conseguir a mesma transformação.

A única coisa que poderia melhorar com o Script é a sua interação com objetos auxiliares como Hooks, o que deixaria o trabalho de modelagem mais rápido. Os Hooks são deformadores que podem alterar a posição de diversos vértices de maneira rápida. Apesar do suporte aos grupos de vértices ajudar também, os Hooks são uma opção extra para interação visual com as modificações.

O script é recomendado para todos os usuários que desejem trabalhar com precisão no Blender 3D!