Computação Gráfica: Blender Interface, Transformações & Scripts. Prof. Rafael Vieira THIS WORK IS LICENSED UNDER THE CREATIVE COMMONS ATTRIBUTION-SHAREALIKE 4.0 INTERNATIONAL LICENSE. TO VIEW A COPY OF THIS LICENSE, VISIT HTTP://CREATIVECOMMONS.ORG/LICENSES/BY-SA/4.0/ OR SEND A LETTER TO CREATIVE COMMONS, PO BOX 1866, MOUNTAIN VIEW, CA 94042, USA. CREATED BY RAFAEL S. T. VIEIRA <RAFASTV@PROTONMAIL.COM>
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 rafastv.responde@gmail.com