escola politécnica da universidade de são paulo
DESCRIPTION
Escola Politécnica da Universidade de São Paulo Departamento de Engenharia Mecatrônica e Sistemas Mecânicos. Algoritmo para Converter Sólidos CSG em Sólidos B-Rep Defesa de Dissertação de Mestrado. - PowerPoint PPT PresentationTRANSCRIPT
Escola Politécnica da Universidade de São PauloDepartamento de Engenharia Mecatrônica e Sistemas Mecânicos
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
Defesa de Dissertação de Mestrado
Murilo Antonio Salomão Garcia
Orientador: Prof. Dr. Marcos de
Sales Guerra Tsuzuki
17 de abril de 2006
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
2 de 31
1. Introdução
• Objetivo do trabalho: criar um algoritmo capaz de converter modelos sólidos CSG (Construtive Solid Geometry) em modelos sólidos B-Rep (Boundary Representation).
• O algoritmo criado foi desenvolvido a partir do Marching Cubes.
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
3 de 31
2. Representação CSG
• Capturam o processo de construção que define o sólido por uma seqüência de operações que instanciam ou combinam primitivas.
• Tradicionalmente as primitivas são simples, como cubos, cilindros e esferas.
Primitivas(instâncias)
Posicionadas Combinadas
• Indicado para o design e manipulação interativa de sólidos.
• A exibição de CSG em tela não é suportada de forma nativa.
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
4 de 31
• Formas mais complexas apropriadas para um conjunto de aplicações particulares, como rasgos de chaveta e furos roscados no caso da engenharia mecânica.
Primitivas(instâncias)
Posicionadas Combinadas
2. Representação CSG (cont.)
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
5 de 31
Escalamento
Uniforme
Escalamento
Não Uniforme
Rotação Translação Reflexão
2.1 Transformações Afim
• Manipulação de primitivas e sólidos:
• Posicionamento • Deformação
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
6 de 31
2.2 Operações Booleanas entre Sólidos
• Combinar primitivas ou sólidos.
União:
Intersecção:
Diferença:
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
7 de 31
2.2 Operações Booleanas entre Sólidos (cont.)
Intersecção
Subtração
Exemplos:
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
8 de 31
2.3 Árvore CSG
• Sintaxe que pode ser utilizada para especificar um sólido em CSG.
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
9 de 31
2.4 Classificação de um Ponto para Sólidos CSG
• Métodos de divisão e conquista, ou descida em profundidade recursiva para calcular-se a classificação do ponto (como interior ou exterior ao sólido).
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
10 de 31
3. Representação B-Rep
• Modelos gráficos avançados que tentam resolver alguns problemas através da inclusão de uma descrição completa da superfície da fronteira do objeto.
3.1 Geometria e Topologia do Modelo B-Rep :
• Três entidades fundamentais:
faces arestas vértices sólido
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
11 de 31
v = número de vértices
a = número de arestas
f = número de faces
s = número de shells
h = número de furos
l = número de laços
laço externo
laços internos
3.2 Operadores de Euler
• A equação de Euler-Poincaré relaciona entidades primitivas que formam o sólido de maneira quantitativa:
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
12 de 31
3.2 Operadores de Euler (cont.)
KVSF (Kill Vertex Solid Face)
KEV (Kill Edge Vertex)
KEF (Kill Edge Face)
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
13 de 31
3.2 Operadores de Euler (cont.)
MEKR (Make Edge Kill Ring)
MFKRH (Make Face Kill Ring Hole)
KSFMR (Kill Shell Face Make Ring)
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
14 de 31
4. Marching CubesLorensen e Cline, 1987.
• Geração de superfícies triangularizadas para fim de visualização a partir de dados volumétricos.
• Usualmente exames médicos como: tomografia computadorizada, ressonância magnética, imagens de microscópios.
• Dados são pilhas de imagens 2D em tons de cinza.
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
15 de 31
4.1 Configurações do Cubo
• Vértices classificados como interiores ou exteriores à região.
• 256 possibilidades
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
16 de 31
4.1 Configurações do Cubo (cont.)
• Uso de simetria reduz o número de casos para 15
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
17 de 31
4.2 Variação de Delibasis
Original* (Lorensen e Cline)
• Tabela com configurações
do cubo.
• Gera superfícies com faces
triangulares.
* Algoritmo original mais configurações extras.
Delibasis
• Gera configurações por
meio de algoritmo.
• Gera superfícies com faces.
poligonais (por vezes não planas).
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
18 de 31
4.3 Versão Delibasis
1. Classificação dos vértices do cubo.
2. Definição dos isopontos.
3. Criação das arestas, sempre nas faces (conectando-se dois isopontos).
• Condição 0. Os dois isopontos devem estar situados na mesma face do cubo;
• Condição 1. Os dois isopontos devem compartilhar um vértice adjacente classificado com interno;
Condição 0 E Condição 1
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
19 de 31
• Condição 2. Os dois isopontos devem possuir vértices adjacentes (um interno e o outro externo) de forma que um vértice adjacente interno deve ser adjacente à um externo;
• Condição 3. Os dois isopontos devem compartilhar um vértice adjacente externo e os outros três vértices da face devem ser internos.
Condição 0 E Condição 2
Condição 0 E Condição 3
4.3 Versão Delibasis (cont.)
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
20 de 31
5. Algoritmo de Conversão de CSG para B-Rep
• Início igual ao Marching Cubes: classificação dos vértices.
• Encontra-se o primeiro Isocubo.
• Processa-se o primeiro Isocubo:
• Cria-se isopontos.
• Gera-se polígonos.
• Triangularização.
• Gera-se a(s) face(s) triangulares no modelo B-REP.
Delibasis
continua
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
21 de 31
5.1 Laço de Abertura
• É a partir desse laço que o sólido "cresce", ou seja, as half-edges contidas nesse laço são usadas na geração das novas faces do sólido.
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
22 de 31
5.2 Geração das Faces Triangulares
• Primeira Face
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
23 de 31
5.2 Geração das Faces Triangulares (cont.)
• Geração de Faces Triangulares com Uma Aresta Já Criada:
<MEV> Make Edge Vertex;
<MEF> Make Edge Face;
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
24 de 31
5.2 Geração das Faces Triangulares (cont.)
• Geração de Faces Triangulares com Uma Aresta Já Criada – Segunda Situação:
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
25 de 31
5.2 Geração das Faces Triangulares (cont.)
• Geração de Faces Triangulares com Duas Arestas Já Criadas:
<MEF> Make Edge Face;
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
26 de 31
5.2 Geração das Faces Triangulares (cont.)
• Geração de Faces Triangulares com Três Vértices:
OBS: Existem mais dois casos
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
27 de 31
cubo 1
cubo 256
cubo 65536
cubo 0
5.4 Marcha através das Faces
Pilhas
cubos atuais cubos futuros
cubo 1
cubo 256
cubo 65536
cubo 256
cubo 65536
cubo 257
cubo 65537
cubo 65536 cubo 65792
cubo 257
cubo 65537
cubo 65792
cubo 257
cubo 65537
cubo 65792
cubo 257
cubo 65537
cubo 257
cubo 65537
cubo 65793cubo 65537 cubo 65793cubo 65793
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
28 de 31
6. Resultados• Laço de abertura.• Etapas da construção.
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
29 de 31
6. Resultados (cont.)• Operações Booleanas.• Primitivas.
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
30 de 31
6. Resultados (cont.)• Sólidos Complexos.
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
31 de 31
7. Conclusões• Foi criado um algoritmo para conversão de sólidos
CSG em sólidos B-REP onde a marcha ocorre apenas pela fronteira do sólido.
• Redução da complexidade do algoritmo marching cubes de polinomial de primeira ordem para uma complexidade constante.
• Utilização de arestas geradas em um dado cubo no cubo adjacente, desta forma constrói-se um sólido válido.