Consultar tutoriais semelhantes:
Este tutorial ensina como fazer uma cena completa básica em Python.
Bem vou mostrar como é que se monta uma cena básica incluindo uma fonte de luz, um objeto e uma camera tudo por linha de código. O tutorial será composta por quatro figuras básicas. As três primeiras mostrarão a etapa de inclusão de um objeto, uma camera e uma fonte de luz e a quarta figura a renderização final, também feita apartir do código.
Em resumo, tudo que faríamos ao modelar com cliques de mouse e a tecla F12 para renderizar, faremos por linha de código.
Etapa 1 – Inserindo um mesh. (Esfera – UVsphere):
Para nosso material de estudo do tutorial 3, vamos utilizar a esfera como candidata a fazer parte da cena básica por código. Bem criar uma primitiva (mesh padronizado) é igual á criar uma camera, para quem leu o tutorial citado no inicio deste artigo, intitulado “Programando no Python(Criando uma camera) – 2“. Bem antes de darmos continuidade, quero passar uma dica de como montar um código sem que tenha necessidade de ficar consultando o material toda vez que quiser inserir algum elemento. Camera,Fonte de Luz e Mesh são inseridos da mesma forma. Eles precisam serem construídos, serem anexados á um objeto e estes por sua ve anexados á cena (3D view\Viewport). Podemos lhes atribuir propriedades.
Digo isso, porque ao invés de toda vez ter que olhar um FAQ de como incluir um mesh, basta aprender uma vez, e ir em frente. Mas, ressalto, esta é uma dica para o conjunto de elementos semelhantes, ainda não olhei como a IPO curve trabalha no Python e não sei se é feito da mesma maneira. Esta dica vale para Camera,Fonte de Luz e Mesh.
Figura – Construindo e inserindo uma esfera no 3D VIEW
Na figura na letra f eu inseri um 1 para chamar a atenção. Para os que leram, e não entenderam sobre o conceito de container. Vou explicar, um container é um algo que podemos chamar de armazenador. Tudo que fica armazenado pode receber propriedades. Por exemplo no nosso caso:
A variável ob é container para a variavel modelo. Que por sua vez é anexado na variavel Cena. Por que então ob receber valores que o modelo deveria receber? Porque pela natureza do modelo (Mesh.Primitives) não aceita os atributos que um objeto recebe. (Parece confuso até aqui?)
- Uma pessoa pode dirigir uma carro, correto? Mas ela é o carro? Não. O carro é um container que abrigando uma pessoa, ele pode ser locomover. E quando uma pessoa está num carro, existem alguns atributos que fora dele não poderiam ser “referenciados” á uma pessoa. (Gasolina,velocidade acima de 45 Km,Ferrugem).
Bem construímos nossa Esfera. Eu sugiro que mudem as propriedades de Mesh.Primitives.UVSphere(rings,segments,radius) para ver os testes. (Devo alertar, que não existem modificações pela metade, ou seja se quiser fazer uma modificação na esfera já existente, apague-a refaça o código todo novamente. No caso da renderização é possivel fazer modifcações e inserir o comando ‘variavel.render()’, mas é preciso mexer no código a fundo para mesh,fonte de luz e camera.
Etapa 2 – Inserindo uma camera (Camera – Camera):
A explicação para este tutorial pode ser consultado no começo desta mensagem. Onde existe um espaço destinado a explicação do funcionamento da camera.
Etapa 3 – Inserindo uma fonte de luz(Fonte de luz – Lamp):
Aqui vamos inserir uma fonte de luz do tipo Area para variar com o exemplo que podemos encontrar na documentação de Blender para Lamp. Que usa uma fonte de luz do tipo Spot. A fonte de Luz Area é uma luz mais forte que o Spot. Nós vamos definir a posição da fonte de luz entre a camera e o objeto.
Aqui nós aprendemos a mexer com a fonte de Luz do Tipo Area. Que podemos perceber que ela apresenta diferenças do Spot apresentado na documentação, que podemos conferir no link LAMP BLENDER.
No caso do Spot temos HALO, mas a Area não podemos configurar isso. Então para sabermos quais parametros configurar, temos que olhar as propriedades de cada fonte de luz. Disposto na aba Shading(F5) e na sub aba Lamp Buttons.
Ha algo mais para acrescentar a figura. Para vermos o nome “Fonte de Luz” devemos ir para a aba Editing(F9) – nesta parte sugiro modificar os tipos de lampada (suas propriedades).
Etapa 4 – Renderizando a cena (Render)
Mais uma vez, na documentação do Render, tem um exemplo de como renderizar uma Animação, no nosso caso vamos renderizar uma cena estática. Então haverá algumas mudanças do código disposto lá, confira no link RENDER BLENDER.
Na figura a seguir vamos então sobrepor o 3D View das três figuras anteriores pela janela do Render.
Antes de clicar na figura a seguir, eu criei um código que dispuse-se de uma janela de renderização no local do código. Portanto não se apavore se pensar que o código foi-se embora. Basta retornar ao console de Shell com o programa ainda aberto. Se fecha-lo, não adianta. Usei esta propriedade para variar do código-exemplo da documentação Blender.
Explicação dos atributos ‘contexto’ no bloco 3 da figura:
sizePreset(Render.PC) é a uma definição de formato para renderização em computadores que já define uma resolução,aspect (ele é invalidado se definirmos manualmente o aspect e sizeX e sizeY no código). (Para acha-lo pressione F10 (ou Scene) na aba Format.
currentFrame(número do frame) renderiza a cena atual. No nosso caso é 1. (E se colocassemos frame 1000, daria na mesma renderização) porque estamos tratando de uma cena estática. Então ele será o mesmo no frame 1000.
displayMode define para 3 situações (A janela que conhecemos F12), a janela de um render full Screen e o render local do código.
renderer – define o renderizador usado. Mesmo que não usasse este atributo ele usa por padrão o ‘zero’ que é o Blender Internal, caso coloque 1 é Yafray. (O citei para demonstrar a funcionalidade)
sizeX e sizeY é a resolução (ele invalida o sizePreset) mas neste caso definimos que fosse 640 e 480, que é a resolução padrão do Render.PC.
xParts e yParts em que escala de grade será feito a renderização. (Se colocarmos 1 á 1,será renderizado pixels por pixels. Podemos encontra-lo no mesmo lugar que encontramos o Render.PC na aba de Format.
render() que renderiza uma cena estática.
Leituras recomendadas:
- Instância da classe RenderData (Atributos para o contexto)
- Instância da classe Lamp (Atributos)
- Significado de Container em programação
- Sobre o renderizador YaFray (‘contexto.renderer=1′)
Recomendação na escrita do código:
Aconselho a escrever cada código em bloco bem separado um do outro. Porque para os que observaram, o Python não precisa de declaração de variável (nas demais linguagens precisariamos de declarar que modelo por exemplo receber um tipo de gráfico mesh). Então um código limpo facilita na hora de ver o que errou ou que modificar.
Mesmo que os quatro códigos que observamos, tenham a primeira linha “from Blender import *”,faça diferentes blocos. Blocos é pular a linha (no minimo 4) para cada parte.
Arquivado em: Tutorial Blender e Python | Etiquetado: Blender, Criando uma cena, Python




[...] Programando no Python (Criando uma cena) - 3 [...]