Computação Gráfica: Blender

Propaganda
Computação Gráfica:
Blender
Interface, Transformações & Scripts.
Prof. Rafael Vieira
Janelas: Descrição
1
4
5
2
1. Info
2. 3D View
3. Python Console
4. Outliner
5. Properties
3
As 5 janelas do Blender.
http://daliafernandes.com/wp-content/uploads/2014/11/mafalda-duvidas2.png
Janelas: Descrição
●
Existem 17 tipos de janelas que podem ser exibidas.
●
A princípio o Blender vem com 5 janelas ativas.
●
É possível ativar ou reduzir o número de janelas.
●
Pode-se também repetir janelas.
http://daliafernandes.com/wp-content/uploads/2014/11/mafalda-duvidas2.png
Alterar o tipo de janela
●
Clique no ícone com duas setas apontando em direções opostas,
para exibir o menu de troca de janelas.
Troca da janela Python Console por 3D View.
http://daliafernandes.com/wp-content/uploads/2014/11/mafalda-duvidas2.png
Aumentar a quantidade de Janelas
●
Clique no triângulo listrado no canto de qualquer janela, mantendo
pressionado arraste na direção de onde a nova janela deve aparecer.
4 Janelas de 3D View exibindo visão da câmera, da esquerda, do fundo e livre.
http://daliafernandes.com/wp-content/uploads/2014/11/mafalda-duvidas2.png
Reduzir a quantidade de Janelas
●
Para unir janelas clique no mesmo ícone anterior, segure por 2
segundos, depois arraste na direção da janela que deseja unir.
2 Janelas 3D View sendo unidas, a seta indica em que direção a união ocorrerá.
Nem todas as janelas podem ser unidas em qualquer
direção, mas sempre há como uni-las.
Salvar modificações nas Janelas
●
Na Janela Info, no menu File, clique em Save Startup File
(Ctrl+U).
Para restaurar o padrão, clique
em Load Factory Settings.
Janela Info: Descrição
●
A Janela Info também permite abrir e salvar arquivos, assim como
configurar suas preferências pessoais (cor do blender, addons,
caminhos, etc).
Lista de comandos
Menu principal
Janela Info do Blender
Preferências do Usuário
Janela 3D View: Descrição
Câmera
Fonte de Luz
Objeto 3D
Menu principal
Ambiente default do Blender.
Janela 3D View: Usando o mouse
●
Botão esquerdo posiciona o cursor 3D (um ponto
qualquer do espaço).
●
Botão direito seleciona.
●
Botão do meio (roda a visualização do modelo).
●
Scroll aplica zoom na visualização.
Janela 3D View: Ferramentas e Transformações
'T' ou no símbolo de + na lateral esquerda da janela.
'N' ou no símbolo de + na lateral esquerda da janela.
Mr. Squeegee Feet (Blender Cloud) e menus de ferramentas e transformações.
Janela 3D View: Transformações
(Translação)
●
Translação clique G ou G + eixo (x, y, z) de translação.
Mr. Squeegee Feet (Blender Cloud) e seção de Translação.
Os cadeados permitem que um modelo fique
proibido de sofrer transformações no eixo.
Janela 3D View: Transformações
(Rotação)
●
Rotação por Euler clique R ou R + eixo (x, y, z) de rotação.
Mr. Squeegee Feet (Blender Cloud) e menu de rotações.
Lembre-se que o quaternion deve ser normalizado.
Q = (vxsenA, vysenA, vzsenA, cosA)
Janela 3D View: Transformações (Escala)
●
Translação: Clique S ou S + eixo (x, y, z) da escala.
Mr. Squeegee Feet (Blender Cloud) e seção de Translação.
Os cadeados permitem que um modelo fique
proibido de sofrer transformações no eixo.
Janela 3D View: Modos de Interação
●
Existem 7 modos, em destaque, citamos o
modo Objeto e o modo de Edição.
Daniel do projeto Aleijadinho 3D: Modos de Objeto e de Edição.
http://www.aleijadinho3d.icmc.usp.br/
Janela 3D View: Camadas.
●
São espaços 3D que podem ser sobrepostos uns sobre os outros.
●
Cada objeto pode pertence a uma camada diferente.
●
E o número de camadas sendo exibidas pode variar.
●
Usa-se como meio de organização.
Daniel do projeto Aleijadinho 3D: Camadas.
Janela 3D View: Imã
●
O imã permite efetuar movimentos do
modelo guiados por um referencial.
–
–
Volume
Face
–
Aresta
Vértice
–
Grade
–
Daniel do projeto Aleijadinho 3D: Imã.
Janela 3D View: Visões (Modo interativo)
●
É possível visualizar a malha de diversas maneiras (Lateral, Frontal,
Visão da Câmera, Perspectiva, Ortogonal, etc.)
Daniel do projeto Aleijadinho 3D: Visão da Câmera.
O modo vôo (Flight) permite explorar um cenário como
um jogo de exploração e até simular gravidade.
Janela 3D View: Andando em uma Cena
●
Adicione um plano que servirá como chão. (Add → Mesh → Plane)
●
Escalone o plano usando S para aumentar seu tamanho.
●
Adicione quaisquer outros modelos que desejar na cena.
●
Altere o modo de visualização para caminhar (View → Navigation → Walk)
●
Use as teclas a,w,s,d para se mover no espaço, e, uma vez em cima do plano, aperte g para criar
gravidade.
●
Pode-se explorar o espaço 3D como um jogo de simulação.
●
Esse efeito também pode ser usado para explorar modelos de protótipos, ou ambientes 3D.
Janela 3D View: Selecionando elementos
(vértices, arestas e faces)
●
Modo de edição. Tecla B seleciona uma área.
Daniel do projeto Aleijadinho 3D: Seleção de uma face.
CTRL + “+” permite crescer uma seleção para
elementos vizinhos conexos.
Janela 3D View: Espaços Locais e Globais
●
Espaço local é o espaço em que o objeto foi modelado.
Global é a posição aonde objeto está no mundo.
Daniel do projeto Aleijadinho 3D: Espaços.
Janela Python Console: Descrição
●
●
●
●
●
Uma janela prompt para executar comandos do python e APIs do blender de modo
interativo.
Todo comando do blender pode ser executado via python. (Olhem as dicas dos
menus.)
Se existe um processo repetitivo que se deseja aplicar a diversas malhas escrever
um script é a maneira mais rápida e eficaz.
Aplicar algoritmos que não existem no blender sobre modelos. (Pode-se imaginar o
Blender como uma biblioteca gráfica avançada na visão do Python.)
Biblioteca principal bpy.
Janela Python Console: Acessando
propriedades dos objetos (alto nível)
●
Bpy.data.objects[x].name: nome do objeto
●
Bpy.data.objects[x].location: posição
●
Bpy.data.objects[x].parent: seu pai, caso exista
●
Bpy.data.objects[x].matrix_world: matriz do mundo
●
dir(Bpy.data.objects[x]) : todas as propriedades
X é a quantidade de objetos na cena,
Incluindo luzes e câmera.
Janela Python Console: Acessando
propriedades das malhas (baixo nível)
●
Bpy.data.meshes[x].name: nome da malha
●
Bpy.data.meshes[x].transform: aplica uma matriz de transformação
●
Bpy.data.meshes[x].update: atualiza estado de uma malha
●
Bpy.data.meshes[x].vertices[m].*: vértices da malha
●
Bpy.data.meshes[x].polygons[n].*: faces da malha
●
Bpy.data.meshes[x].polygons[n].vertices[p]: índices do vértices de uma face da malha
●
dir(Bpy.data.meshes[x].*) : todas as propriedades
X é a quantidade de malhas na cena,
excluindo luzes e câmera (não são malhas).
M é a quantidade de vértices.
N é a quantidade de faces.
P é a quantidade de vértices na face.
Janela Python Console: Aplicando
Transformações
●
Import mathutils
●
A = Matrix.Translation((2.0, 3.0, 4.0)) # vetor de translação
●
B = Matrix.Scale(2, 4) # (fator de escala, tamanho matriz)
●
C = Matrix.Rotation(math.radians(45.0), 4, 'X') # (angulo, tamanho matriz, eixo)
●
D = Matrix.Shear(“XY”, 4, (2,0)) # (plano de shear, tamanho matriz, vetor de shear)
●
E = Matrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) # matriz qualquer
Na Janela Python Console:
1) Crie matriz A conforme este slide.
2) Execute bpy.data.meshes[0].transform(A)
3) Execute bpy.data.meshes[0].update()
Janela Python Console: Usando Scripts
●
blender -b arquivo.blend -P script.py
import bpy, os,re,sys
prefix = sys.argv[-1]
ext = ".obj"
obj_files = [f for f in os.listdir(os.getcwd()) if f.endswith(ext)]
obj_files = sorted(obj_files)
for o_file in obj_files:
###################
# Extract Data
#
###################
# import obj
bpy.ops.import_scene.obj(filepath=os.getcwd() + "/" + o_file, filter_glob="*.obj;*.mtl", use_ngons=True, use_edges=True,
use_smooth_groups=True, use_split_objects=True, use_split_groups=True, use_groups_as_vgroups=False, use_image_search=True,
split_mode='ON', global_clamp_size=0.0, axis_forward='-Z', axis_up='Y')
##########################
# Convert Tri to Quads
#
##########################
try:
bpy.context.scene.objects.active = bpy.data.objects[2]
bpy.ops.object.mode_set(mode = 'EDIT')
bpy.ops.mesh.tris_convert_to_quads()
bpy.ops.object.mode_set(mode = 'OBJECT')
except:
print ("Cannot convert to triangles!")
###################
#
Save Data
#
###################
bpy.ops.export_scene.obj(filepath=os.getcwd() + "/" + prefix + "_" + o_file, check_existing=True, filter_glob="*.obj;*.mtl", use_selection=False,
use_animation=False, use_edges=False, use_normals=False, use_uvs=False, use_materials=False, use_triangles=False, use_nurbs=False,
use_vertex_groups=False, use_blen_objects=True, group_by_object=False, group_by_material=False, keep_vertex_order=False, axis_forward='-Z',
axis_up='Y', global_scale=1.0, path_mode='AUTO')
O uso de um arquivo blend base auxilia na configuração do blender
(para não ter que configurar tudo via script, embora possa ser feito).
Janela Python Console: Usando Scripts
●
Limpe a cena ao acabar
###################
#
Clear Data
#
###################
# if scene is not empty
if len (bpy.data.objects) > 2:
bpy.context.scene.objects.active = bpy.data.objects[2]
bpy.ops.object.mode_set(mode = 'OBJECT')
candidate_list = [item.name for item in bpy.data.objects if item.type == "MESH"]
# select them only.
for object_name in candidate_list:
bpy.data.objects[object_name].select = True
# remove all selected.
bpy.ops.object.delete()
# remove the meshes, they have no users anymore.
for item in bpy.data.meshes:
bpy.data.meshes.remove(item)
Leia sobre funções API do blender
Lembre-se de usar dir e
olhar dicas nos menus.
Exercícios
Baixe uma cópia do Blender e pratique o conteúdo do
slide.
●
Blender 2.75a
–
Autores: Blender Foundation.
–
Website: https://www.blender.org/
–
Ano: 2015.
Fim
[email protected]
Download