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
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
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.
2 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
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.
Posicionadas
Primitivas
(instâncias)
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.
3 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
2. Representação CSG (cont.)
•
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
4 de 31
Combinadas
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
2.1
•
Transformações Afim
Manipulação de primitivas e sólidos:
•
Rotação
Posicionamento
Translação
•
Reflexão
5 de 31
Deformação
Escalamento
Escalamento
Uniforme
Não Uniforme
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
2.2
•
Operações Booleanas entre Sólidos
Combinar primitivas ou sólidos.
União:
Intersecção:
Diferença:
6 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
2.2
Operações Booleanas entre Sólidos (cont.)
Exemplos:
Intersecção
Subtração
7 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
2.3
•
Árvore CSG
Sintaxe que pode ser utilizada para especificar um sólido
em CSG.
8 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
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).
9 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
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
10 de 31
sólido
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
3.2 Operadores de Euler
•
A equação de Euler-Poincaré relaciona entidades primitivas
que formam o sólido de maneira quantitativa:
laços internos
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
11 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
3.2 Operadores de Euler (cont.)
KVSF (Kill Vertex Solid Face)
KEV (Kill Edge Vertex)
KEF (Kill Edge Face)
12 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
3.2 Operadores de Euler (cont.)
MEKR (Make Edge Kill Ring)
MFKRH (Make Face Kill Ring Hole)
KSFMR (Kill Shell Face Make Ring)
13 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
4. Marching Cubes
Lorensen 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.
14 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
4.1 Configurações do Cubo
•
Vértices classificados como interiores ou exteriores à região.
•
256 possibilidades
15 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
4.1 Configurações do Cubo (cont.)
• Uso de simetria reduz o
número de casos para 15
16 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
4.2 Variação de Delibasis
Original* (Lorensen e Cline)
•
Tabela com configurações
Delibasis
•
Gera configurações por
do cubo.
meio de algoritmo.
•
•
Gera superfícies com faces
triangulares.
Gera superfícies com faces.
poligonais (por vezes não planas).
* Algoritmo original mais configurações extras.
17 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
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
18 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
4.3 Versão Delibasis (cont.)
•
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 0 E Condição 2
•
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 3
19 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
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
20 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
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.
21 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
5.2 Geração das Faces Triangulares
• Primeira Face
22 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
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;
23 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
5.2 Geração das Faces Triangulares (cont.)
• Geração de Faces Triangulares com Uma Aresta
Já Criada – Segunda Situação:
24 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
5.2 Geração das Faces Triangulares (cont.)
• Geração de Faces Triangulares com Duas Arestas
Já Criadas:
<MEF> Make Edge Face;
25 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
5.2 Geração das Faces Triangulares (cont.)
• Geração de Faces Triangulares com Três
Vértices:
OBS: Existem mais dois casos
26 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
5.4 Marcha através das Faces
Pilhas
27 de 31
cubos atuais
cubos futuros
0
cubo
cubo
cubo
65536
256
1
cubo
65792
cubo65793
257
65537
cubo
cubo
cubo
65536
256
cubo
257
cubo
65537
cubo
cubo 65536
65537
cubo
1
cubo
cubo
65792
257
cubo 65793
cubo
256
cubo
cubo
65537
257
cubo 65537
65536
cubo
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
6. Resultados
•
Etapas da construção.
•
28 de 31
Laço de abertura.
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
6. Resultados (cont.)
•
Primitivas.
•
29 de 31
Operações Booleanas.
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
6. Resultados (cont.)
•
Sólidos Complexos.
30 de 31
Algoritmo para Converter Sólidos CSG em Sólidos B-Rep
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.
31 de 31
Download

- Murilo Garcia